本文介紹線程HAL相關的接口。
HAL_MutexCreate
- 原型:
void *HAL_MutexCreate(void);
- 接口說明:調用此接口創(chuàng)建一個互斥量對象,返回指向所創(chuàng)建互斥量的指針,用于同步訪問,對于僅支持單線程應用,可實現為空函數。
- 參數說明:此接口無需入參。
- 返回結果說明:此接口無返回參數。
HAL_MutexDestroy
- 原型:
void HAL_MutexDestroy(_IN_ void *mutex);
- 接口說明:調用此接口銷毀一個互斥量對象,用于釋放資源。
- 參數說明:
參數 數據類型 方向 說明 mutex void * 輸入 互斥量指針。 - 返回結果說明:此接口無返回參數。
HAL_MutexLock
- 原型:
void HAL_MutexLock(_IN_ void *mutex);
- 接口說明:調用此接口鎖住一個互斥量。
- 參數說明:
參數 數據類型 方向 說明 mutex void * 輸入 互斥量指針。 - 返回結果說明:此接口無返回參數。
HAL_MutexUnlock
- 原型:
void HAL_MutexUnlock(_IN_ void *mutex);
- 接口說明:調用此接口解鎖一個互斥量。
- 參數說明:
參數 數據類型 方向 說明 mutex void * 輸入 互斥量指針。 - 返回結果說明:此接口無返回參數。
HAL_SemaphoreCreate
- 原型:
void *HAL_SemaphoreCreate(void);
- 接口說明:調用此接口創(chuàng)建一個計數信號量。此接口實現必須為原子操作,對于僅支持單線程應用,可實現為空函數。
- 參數說明:此接口無需入參。
- 返回結果說明:
返回結果 說明 NULL 創(chuàng)建失敗。 !NULL 創(chuàng)建成功,返回信號量句柄。
HAL_SemaphoreDestroy
- 原型:
void HAL_SemaphoreDestroy(_IN_ void *sem);
- 接口說明:調用此接口銷毀一個由參數sem指定的信號量。此接口實現必須為原子操作。
- 參數說明:
參數 數據類型 方向 說明 sem void * 輸入 信號量指針。 - 返回結果說明:此接口無返回參數。
HAL_SemaphorePost
- 原型:
void HAL_SemaphorePost(_IN_ void *sem);
- 接口說明:調用此接口在指定的計數信號量上做自增操作,解除其它線程的等待。此接口實現必須為原子操作,對于僅支持單線程應用,可實現為空函數。
- 參數說明:
參數 數據類型 方向 說明 sem void * 輸入 信號量句柄。 - 返回結果說明:此接口無返回參數。
HAL_SemaphoreWait
- 原型:
int HAL_SemaphoreWait(_IN_ void *sem, _IN_ uint32_t timeout_ms);
- 接口說明:調用此接口在指定的計數信號量上等待并做自減操作。對于僅支持單線程應用,此接口實現必須為原子操作,可實現為空函數。
- 參數說明:
參數 數據類型 方向 說明 sem void * 輸入 信號量句柄。 timeout_ms uint32_t 輸入 信號量等待超時時間,單位ms。 說明 如果設置了PLATFORM_WAIT_INFINITE參數,則函數返回只能由獲取信號量觸發(fā),永不超時。 - 返回結果說明:
返回結果 說明 0 函數返回是由信號量觸發(fā)。 -1 函數返回是由超時觸發(fā)。
HAL_ThreadCreate
- 原型:
int HAL_ThreadCreate( _OU_ void **thread_handle, _IN_ void *(*work_routine)(void *), _IN_ void *arg, _IN_ hal_os_thread_param_t *hal_os_thread_param, _OU_ int *stack_used);
- 接口說明:調用此接口指定入參創(chuàng)建一個線程。
- 參數說明:
參數 數據類型 方向 說明 thread_handle void ** 輸出 指向線程句柄變量的指針。 work_routine void *(*work_routine)(void *) 輸入 指向線程執(zhí)行函數的函數指針。 arg void * 輸入 傳遞給運行程序的單個參數。 hal_os_thread_param hal_os_thread_param_t * 輸入 指向線程初始化參數的指針。 stack_used int * 輸出 指示平臺是否使用棧緩沖區(qū): - 0:未使用
- 1:使用
線程初始化參數定義:typedef struct _hal_os_thread { hal_os_thread_priority_t priority; /* initial thread priority */ void *stack_addr; /* thread stack address malloced by caller, use system stack by . */ size_t stack_size; /* stack size requirements in bytes; 0 is default stack size */ int detach_state; /* 0: not detached state; otherwise: detached state. */ char *name; /* thread name. */ } hal_os_thread_param_t;
線程優(yōu)先級定義:typedef enum { os_thread_priority_idle = -3, /* priority: idle (lowest) */ os_thread_priority_low = -2, /* priority: low */ os_thread_priority_belowNormal = -1, /* priority: below normal */ os_thread_priority_normal = 0, /* priority: normal (default) */ os_thread_priority_aboveNormal = 1, /* priority: above normal */ os_thread_priority_high = 2, /* priority: high */ os_thread_priority_realtime = 3, /* priority: realtime (highest) */ os_thread_priority_error = 0x84, /* system cannot determine priority or thread has illegal priority */ } hal_os_thread_priority_t;
- 返回結果說明:
返回結果 說明 -1 創(chuàng)建失敗。 0 創(chuàng)建成功。
HAL_ThreadDelete
- 原型:
void HAL_ThreadDelete(_IN_ void *thread_handle);
- 接口說明:調用此接口刪除指定的線程。
- 參數說明:
參數 數據類型 方向 說明 thread_handle void * 輸入 線程句柄,NULL表示當前線程。 - 返回結果說明:此接口無返回參數。
HAL_ThreadDetach
- 原型:
void HAL_ThreadDetach(_IN_ void *thread_handle);
- 接口說明:調用此接口將指定線程設置為分離狀態(tài)。
- 參數說明:
參數 數據類型 方向 說明 thread_handle void * 輸入 線程句柄,NULL表示當前線程。 - 返回結果說明:此接口無返回參數。