KosThreadCreate()
Функция объявлена в файле kos/thread.h
.
Retcode KosThreadCreate(Tid *tid,
rtl_uint32_t priority,
rtl_uint32_t stackSize,
ThreadRoutine routine,
void *context,
int suspended);
Функция создает новый поток.
Входные параметры:
priority
– приоритет, должен быть в интервале от 0 до 31; доступны следующие константы приоритета:ThreadPriorityLowest
(0),ThreadPriorityNormal
(15) иThreadPriorityHighest
(31);stackSize
– размер стека;routine
– функция, которая будет выполняться в потоке;context
– аргумент, который будет передан в функциюroutine
;suspended
– позволяет создать поток в приостановленном состоянии (1 – создать приостановленный, 0 – не приостановленный).
Выходные параметры:
tid
– идентификатор созданного потока.
Пример
int main(int argc, char **argv)
{
Tid tidB;
Tid tidC;
Retcode rcB;
Retcode rcC;
static ThreadContext threadContext[] = {
{.ddi = "B", .deviceName = "/pci/bus0/dev2/fun0/DDI_B"},
{.ddi = "C", .deviceName = "/pci/bus0/dev2/fun0/DDI_C"},
};
rcB = KosThreadCreate(&tidB, ThreadPriorityNormal,
ThreadStackSizeDefault,
FbHotplugThread,
&threadContext[0], 0);
if (rcB != rcOk)
ERR("Failed to start thread %s", threadContext[0].ddi);
rcC = KosThreadCreate(&tidC, ThreadPriorityNormal,
ThreadStackSizeDefault,
FbHotplugThread,
&threadContext[1], 0);
if (rcC != rcOk)
ERR("Failed to start thread %s", threadContext[1].ddi);
/* Ожидание завершения потоков */
...
}