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