0
添加以下行sock_def_readable
:为什么在进程上下文中调用sock_def_readable?
printk("TT: %s\tcontext=%c\tpid=%d\tcomm=%s\n",
__FUNCTION__,
in_interrupt() ? 'i' : 'p',
current->pid,
current->comm);
,并惊喜地看到它的输出。这是我得到一个虚拟机上运行的lighttpd :
[ 626.627938] TT: sock_def_readable context=i pid=0 comm=swapper/0
[ 626.628682] TT: sock_def_readable context=i pid=0 comm=swapper/0
[ 626.629410] TT: sock_def_readable context=i pid=0 comm=swapper/0
[ 626.630730] TT: sock_def_readable context=i pid=3123 comm=lighttpd
sock_def_readable
总是叫中断上下文,符合市场预期。 Apache httpd的情况也一样。但是,如果我跑mysqld的:
[ 750.271819] TT: sock_def_readable context=p pid=3809 comm=mysqld
[ 750.276922] TT: sock_def_readable context=p pid=3742 comm=mysqld
[ 750.278017] TT: sock_def_readable context=p pid=4333 comm=mysqld
问题:为什么叫sock_def_readable
过程上下文mysqld
?为什么在进程上下文中调用sock_def_readable
?
在它的事项的情况下,我使用:
- Linux内核4.8-RC2
- lighttpd的1.4.34
- 的Apache 2.4.10(mod_prefork)+ PHP 5.6
- 的MySQL 5.5