UMS Worker Threads and Completion Lists

A UMS worker thread is created by calling ums_pthread_create() and specifying a completion list.

A completion list is created by calling the create_ums_completion_list() function. A completion list receives UMS worker threads that have completed execution in the kernel and are ready to run. Only the system can enqueue worker threads to a completion list. New UMS worker threads are automatically enqueued to the completion list specified when the threads were created.

Each UMS scheduler thread is associated with a single completion list. However, the same completion list can be associated with any number of UMS scheduler threads, and a scheduler thread can retrieve UMS contexts from any completion list for which it has a pointer.