СИНТАКСИС
#include <hal.h>
int hal_create_thread(const char *name, unsigned long period, int uses_fp);
int hal_thread_delete(const char *name);
АРГУМЕНТИ
- ім’я
-
Назва теми.
- period
-
Інтервал між ітераціями потоку, у наносекундах.
- uses_fp
-
Deprecated and ignored. All threads now unconditionally save and restore floating point state. This parameter will be removed in a future version.
ОПИС
hal_create_thread establishes a realtime thread that will execute one or more HAL functions periodically.
Всі періоди потоків округлюються до цілих кратних періоду апаратного таймера, а період таймера базується на першому створеному потоці. Потоки повинні створюватися в порядку від найшвидшого до найповільнішого. HAL присвоює зменшувані пріоритети потокам, які створюються пізніше, тому створення їх від найшвидшого до найповільнішого призводить до монотонного планування пріоритетів.
hal_delete_thread deletes a previously created thread.
МІРКУВАННЯ В РЕАЛЬНОМУ ЧАСІ
Викликати лише з коду ініціалізації реального часу, а не з іншого коду реального часу або нереального часу.
ПОВЕРНЕНЕ ЗНАЧЕННЯ
Повертає код стану HAL.
| -EFAULT |
The shared memory was not mapped. |
| -EINVAL |
An invalid argument was passed. |
| -EPERM |
HAL is config locked. |
| -EEXIST |
The thread name already exists (hal_create_thread). |
| -ENOMEM |
Failed to allocate memory for thread registration. |
| -ENOENT |
The thread does not exist (hal_thread_delete). |