tag:blogger.com,1999:blog-6005115657005435504.post2055223842878672424..comments2023-12-14T08:45:09.086+03:00Comments on windows deep internals: scheduling on xp - wtf ?redphttp://www.blogger.com/profile/08507461414274306940noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-6005115657005435504.post-84089357403423352502011-12-29T15:15:57.583+04:002011-12-29T15:15:57.583+04:00в wrk в base\ntos\ke\wait.c есть примерно такой ку...в wrk в base\ntos\ke\wait.c есть примерно такой кусок кода:<br />StackSwappable = KiIsKernelStackSwappable(WaitMode, Thread);<br />...<br />if (StackSwappable != FALSE) { InsertTailList(&CurrentPrcb->WaitListHead, &Thread->WaitListEntry);<br />}<br />Похоже что в глобальные waitlists не добавляются потоки с выгружаемым стекомredphttps://www.blogger.com/profile/08507461414274306940noreply@blogger.comtag:blogger.com,1999:blog-6005115657005435504.post-61341646701582404732011-12-29T01:45:08.214+04:002011-12-29T01:45:08.214+04:00Ждущие функции ( KeWaitForSingleObject/KeWaitForMu...Ждущие функции ( KeWaitForSingleObject/KeWaitForMultipleObject ) активно манипулируют полем _KTHREAD->WaitListEntry, периодически выписывая ждущий поток из KiWaitListHead. Поэтому огорчу, единого места, куда попадают все выписанные из KiWaitListHead списка потоки, нет. Надо пройтись по всем Dispatch объектам ( _DISPATCHER_HEADER ) в ядре и просмотреть поле WaitListHead. Тогда список потоков будет полным.Dmitry Varshavskyhttps://www.blogger.com/profile/00298469607718710352noreply@blogger.com