KasperskyOS Community Edition 1.1

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);

/* Ожидание завершения потоков */

...

}