Функция переводит текущую задачу в ожидание на время не меньше чем timeout
системных тиков. Если время ожидания истекло, а задача не была восстановлена (сервисом tn_task_wakeup()
), задача будет выведена планировщиком из состояния ожидания и продолжит выполнение когда станет наиболее приоритетной.
Задача может быть переведена в ожидание с параметром TN_WAIT_INFINITE
. В этом случае задача будет находится в ожидании до тех пор, пока не будет вызван сервис tn_task_wakeup()
или tn_task_iwakeup()
.
Каждая задача имеет счетчик запросов на пробуждение. Если у текущей задачи этот счетчик больше или равен 1, то вызов сервиса tn_task_sleep()
декрементирует счетчик, а задача продолжает выполнение.
Вызов:
TN_RETVAL tn_task_sleep (TN_TIMEOUT timeout);
Разрешен вызов:
В контексте задачи
Параметры функции:
timeout
timeout
⊆ [1..TN_WAIT_INFINITE
], где TN_WAIT_INFINITE
= 65‘535 для 16-битных контроллеров и TN_WAIT_INFINITE
= 4‘294‘967‘295 для 32-битных контроллеров
Возвращаемые значения:
TERR_WRONG_PARAM
timeout
= 0 (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)TERR_WCONTEXT
TERR_NO_ERR
Пример вызова:
void TN_TASK Task1 (void *param) { for (;;) { /* ... */ tn_task_sleep(10); /* ... */ } }