나는 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);
그리고 출력을 볼 수 놀람이었다. 예상대로
[ 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
는 항상 인터럽트 컨텍스트에서 호출한다 : 이것은 내가 VM이 lighttpd를에게을 실행에 들어갈 것입니다. Apache httpd에도 똑같은 문제가 있습니다.
[ 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
질문 : 나는 mysqld를를 실행하는 경우, 왜 mysqld
에 대한 프로세스 컨텍스트에서 sock_def_readable
라고? 프로세스 컨텍스트에서 sock_def_readable
을 호출하는 이유는 무엇입니까?
, 내가 사용하고 있습니다 :
- 리눅스 커널 4.8 RC2
- 이 Lighttpd 1.4.34
- 아파치 2.4.10 (mod_prefork) + PHP 5.6
- MySQL의 5.5 을