本文介绍线程HAL相关的接口。
HAL_MutexCreate
- 原型:
void *HAL_MutexCreate(void);
- 接口说明:调用此接口创建一个互斥量对象,返回指向所创建互斥量的指针,用于同步访问,对于仅支持单线程应用,可实现为空函数。
- 参数说明:此接口无需入参。
- 返回结果说明:此接口无返回参数。
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);
- 接口说明:调用此接口创建一个计数信号量。此接口实现必须为原子操作,对于仅支持单线程应用,可实现为空函数。
- 参数说明:此接口无需入参。
- 返回结果说明:
返回结果 说明 NULL 创建失败。 !NULL 创建成功,返回信号量句柄。
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参数,则函数返回只能由获取信号量触发,永不超时。 - 返回结果说明:
返回结果 说明 0 函数返回是由信号量触发。 -1 函数返回是由超时触发。
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);
- 接口说明:调用此接口指定入参创建一个线程。
- 参数说明:
参数 数据类型 方向 说明 thread_handle void ** 输出 指向线程句柄变量的指针。 work_routine void *(*work_routine)(void *) 输入 指向线程执行函数的函数指针。 arg void * 输入 传递给运行程序的单个参数。 hal_os_thread_param hal_os_thread_param_t * 输入 指向线程初始化参数的指针。 stack_used int * 输出 指示平台是否使用栈缓冲区: - 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;
线程优先级定义: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 创建失败。 0 创建成功。
HAL_ThreadDelete
- 原型:
void HAL_ThreadDelete(_IN_ void *thread_handle);
- 接口说明:调用此接口删除指定的线程。
- 参数说明:
参数 数据类型 方向 说明 thread_handle void * 输入 线程句柄,NULL表示当前线程。 - 返回结果说明:此接口无返回参数。
HAL_ThreadDetach
- 原型:
void HAL_ThreadDetach(_IN_ void *thread_handle);
- 接口说明:调用此接口将指定线程设置为分离状态。
- 参数说明:
参数 数据类型 方向 说明 thread_handle void * 输入 线程句柄,NULL表示当前线程。 - 返回结果说明:此接口无返回参数。