2 * COPYRIGHT: GPL, see COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: drivers/base/kddll/utils.c
5 * PURPOSE: Misc helper functions.
11 * We cannot use PsLookupProcessThreadByCid or alike as we could be running at any IRQL.
12 * So we have to loop over the process list.
19 HANDLE ProcessId
= gdb_pid_to_handle(Pid
);
20 LIST_ENTRY
* ProcessEntry
;
23 /* Special case for idle process */
25 return TheIdleProcess
;
27 for (ProcessEntry
= ProcessListHead
->Flink
;
28 ProcessEntry
!= ProcessListHead
;
29 ProcessEntry
= ProcessEntry
->Flink
)
31 Process
= CONTAINING_RECORD(ProcessEntry
, EPROCESS
, ActiveProcessLinks
);
33 if (Process
->UniqueProcessId
== ProcessId
)
45 HANDLE ThreadId
= gdb_tid_to_handle(Tid
);
48 LIST_ENTRY
* ThreadEntry
;
50 /* Special case for the idle thread */
51 if ((Pid
== 1) && (Tid
== 1))
54 Process
= find_process(Pid
);
58 for (ThreadEntry
= Process
->ThreadListHead
.Flink
;
59 ThreadEntry
!= &Process
->ThreadListHead
;
60 ThreadEntry
= ThreadEntry
->Flink
)
62 Thread
= CONTAINING_RECORD(ThreadEntry
, ETHREAD
, ThreadListEntry
);
63 /* For GDB, Tid == 0 means any thread */
64 if ((Thread
->Cid
.UniqueThread
== ThreadId
) || (Tid
== 0))