No manual, parece que ps -AO wchan
deveria me dizer em que tudo está dormindo, mas tudo aparece como -
. (E nwchan
como 0
). Eles eliminaram a antiga interface sleep()
/ tsleep()
no kernel, ou eu preciso ajustar algumas configurações para obter as informações?
E se p->p_wchan
for realmente zero em Darwin 11, existe outra maneira de descobrir quais processos estão esperando?
EDIT: Na verdade, p->p_wchan
não está nem definido no struct proc
interno, a interface sysctl
zera os campos ao exportar. Há uu_wchan
e uu_wmesg
membros em struct uthread
, definidos pela interface _sleep
e por meio da função emulated tsleep
, mas não encontrei nada para disponibilizá-los para o usuário. ps -MAO wchan
não, por um.
(A coisa toda do struct uthread
parece ser muito específica do XNU, uma maneira de atualizar as interfaces do FreeBSD no Mach, então há pouca esperança de encontrar soluções de outro lugar).