は私が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の実行中のVMに取得されています。期待通り
[ 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