j'ai ajouté la ligne suivante dans sock_def_readable
:Pourquoi sock_def_readable est-il appelé dans un contexte de processus?
printk("TT: %s\tcontext=%c\tpid=%d\tcomm=%s\n",
__FUNCTION__,
in_interrupt() ? 'i' : 'p',
current->pid,
current->comm);
et a été surprise de voir sa sortie. C'est ce que je reçois dans une machine virtuelle en cours d'exécution 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
est toujours appelée dans un contexte d'interruption, comme prévu. Idem pour Apache httpd. Cependant, si je lance 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
Question: Pourquoi sock_def_readable
appelé dans un contexte de processus pour mysqld
? Pourquoi sock_def_readable
être appelé dans le contexte de processus du tout?
Dans le cas où il importe, je me sers:
- noyau Linux 4.8-RC2
- Lighttpd 1.4.34
- Apache 2.4.10 (mod_prefork) + PHP 5.6
- MySQL 5.5