XFusion API v1.3.0
载入中...
搜索中...
未找到
thread

定义、创建和控制线程函数。 更多...

thread 的协作图:

结构体

struct  _xf_osal_thread_attr_t
 线程的属性结构。 更多...
 

宏定义

#define __NO_RETURN   __attribute__((__noreturn__))
 
#define XF_OSAL_DETACHED   0x00000000U
 
#define XF_OSAL_JOINABLE   0x00000001U
 
#define XF_OSAL_UNPRIVILEGED   0x00000002U
 
#define XF_OSAL_PRIVIEGED   0x00000004U
 
#define MAX_BITS_TASK_NOTIFY   31U
 FreeRTOS 对接中,用户可用的线程通知位数(bit0 ~ bit30)。
 
#define THREAD_FLAGS_INVALID_BITS   (~((1UL << MAX_BITS_TASK_NOTIFY) - 1U))
 FreeRTOS 对接里,无效(保留)事件位掩码(bit31)。
 

类型定义

typedef enum _xf_osal_priority_t xf_osal_priority_t
 线程优先级。
 
typedef struct _xf_osal_thread_attr_t xf_osal_thread_attr_t
 线程的属性结构。
 
typedef void * xf_osal_thread_t
 线程句柄。
 
typedef void(* xf_osal_thread_func_t) (void *argument)
 线程的入口函数。
 

枚举

enum  _xf_osal_priority_t {
  XF_OSAL_PRIORITY_NONE = 0 , XF_OSAL_PRIORITY_IDLE = 1 , XF_OSAL_PRIORITY_LOW = 8 , XF_OSAL_PRIORITY_LOW1 = 8 + 1 ,
  XF_OSAL_PRIORITY_LOW2 = 8 + 2 , XF_OSAL_PRIORITY_LOW3 = 8 + 3 , XF_OSAL_PRIORITY_LOW4 = 8 + 4 , XF_OSAL_PRIORITY_LOW5 = 8 + 5 ,
  XF_OSAL_PRIORITY_LOW6 = 8 + 6 , XF_OSAL_PRIORITY_LOW7 = 8 + 7 , XF_OSAL_PRIORITY_BELOW_NORMAL = 16 , XF_OSAL_PRIORITY_BELOW_NORMAL1 = 16 + 1 ,
  XF_OSAL_PRIORITY_BELOW_NORMAL2 = 16 + 2 , XF_OSAL_PRIORITY_BELOW_NORMAL3 = 16 + 3 , XF_OSAL_PRIORITY_BELOW_NORMAL4 = 16 + 4 , XF_OSAL_PRIORITY_BELOW_NORMAL5 = 16 + 5 ,
  XF_OSAL_PRIORITY_BELOW_NORMAL6 = 16 + 6 , XF_OSAL_PRIORITY_BELOW_NORMAL7 = 16 + 7 , XF_OSAL_PRIORITY_NORMOL = 24 , XF_OSAL_PRIORITY_NORMOL1 = 24 + 1 ,
  XF_OSAL_PRIORITY_NORMOL2 = 24 + 2 , XF_OSAL_PRIORITY_NORMOL3 = 24 + 3 , XF_OSAL_PRIORITY_NORMOL4 = 24 + 4 , XF_OSAL_PRIORITY_NORMOL5 = 24 + 5 ,
  XF_OSAL_PRIORITY_NORMOL6 = 24 + 6 , XF_OSAL_PRIORITY_NORMOL7 = 24 + 7 , XF_OSAL_PRIORITY_ABOVE_NORMAL = 32 , XF_OSAL_PRIORITY_ABOVE_NORMAL1 = 32 + 1 ,
  XF_OSAL_PRIORITY_ABOVE_NORMAL2 = 32 + 2 , XF_OSAL_PRIORITY_ABOVE_NORMAL3 = 32 + 3 , XF_OSAL_PRIORITY_ABOVE_NORMAL4 = 32 + 4 , XF_OSAL_PRIORITY_ABOVE_NORMAL5 = 32 + 5 ,
  XF_OSAL_PRIORITY_ABOVE_NORMAL6 = 32 + 6 , XF_OSAL_PRIORITY_ABOVE_NORMAL7 = 32 + 7 , XF_OSAL_PRIORITY_HIGH = 40 , XF_OSAL_PRIORITY_HIGH1 = 40 + 1 ,
  XF_OSAL_PRIORITY_HIGH2 = 40 + 2 , XF_OSAL_PRIORITY_HIGH3 = 40 + 3 , XF_OSAL_PRIORITY_HIGH4 = 40 + 4 , XF_OSAL_PRIORITY_HIGH5 = 40 + 5 ,
  XF_OSAL_PRIORITY_HIGH6 = 40 + 6 , XF_OSAL_PRIORITY_HIGH7 = 40 + 7 , XF_OSAL_PRIORITY_REALTIME = 48 , XF_OSAL_PRIORITY_REALTIME1 = 48 + 1 ,
  XF_OSAL_PRIORITY_REALTIME2 = 48 + 2 , XF_OSAL_PRIORITY_REALTIME3 = 48 + 3 , XF_OSAL_PRIORITY_REALTIME4 = 48 + 4 , XF_OSAL_PRIORITY_REALTIME5 = 48 + 5 ,
  XF_OSAL_PRIORITY_REALTIME6 = 48 + 6 , XF_OSAL_PRIORITY_REALTIME7 = 48 + 7 , XF_OSAL_PRIORITY_ISR = 56 , XF_OSAL_PRIORITY_ERROR = -1 ,
  XF_OSAL_PRIORITY_RESERVED = 0x7FFFFFFF
}
 线程优先级。 更多...
 

函数

xf_osal_thread_t xf_osal_thread_create (xf_osal_thread_func_t func, void *argument, const xf_osal_thread_attr_t *attr)
 创建一个线程并将其添加到活动线程中。
 
const char * xf_osal_thread_get_name (xf_osal_thread_t thread)
 获取线程的名称。
 
xf_osal_thread_t xf_osal_thread_get_current (void)
 返回当前正在运行的线程的线程句柄。
 
xf_osal_state_t xf_osal_thread_get_state (xf_osal_thread_t thread)
 获取线程的当前线程状态。
 
uint32_t xf_osal_thread_get_stack_space (xf_osal_thread_t thread)
 根据执行过程中的栈记录获取线程的可用堆栈空间。
 
xf_err_t xf_osal_thread_set_priority (xf_osal_thread_t thread, xf_osal_priority_t priority)
 更改线程的优先级。
 
xf_osal_priority_t xf_osal_thread_get_priority (xf_osal_thread_t thread)
 获取线程的当前优先级。
 
xf_err_t xf_osal_thread_yield (void)
 将控制权传递给处于状态 READY 的下一个线程。
 
xf_err_t xf_osal_thread_suspend (xf_osal_thread_t thread)
 暂停指定线程的执行,使其进入 BLOCKED 状态。
 
xf_err_t xf_osal_thread_resume (xf_osal_thread_t thread)
 恢复线程的执行。
 
xf_err_t xf_osal_thread_delete (xf_osal_thread_t thread)
 终止线程的执行。
 
uint32_t xf_osal_thread_get_count (void)
 获取活动线程的数量。
 
uint32_t xf_osal_thread_enumerate (xf_osal_thread_t *thread_array, uint32_t array_items)
 列出活动线程。
 
xf_err_t xf_osal_thread_notify_set (xf_osal_thread_t thread, uint32_t notify)
 设置线程的指定线程标志。
 
xf_err_t xf_osal_thread_notify_clear (uint32_t notify)
 清除当前运行线程的指定线程标志。
 
uint32_t xf_osal_thread_notify_get (void)
 获取当前正在运行的线程的当前线程标志。
 
xf_err_t xf_osal_thread_notify_wait (uint32_t notify, uint32_t options, uint32_t timeout)
 当前运行线程等待一个或多个线程标志变为有信号状态。
 
xf_err_t xf_osal_delay (uint32_t ticks)
 (睡眠)等待超时。
 
xf_err_t xf_osal_delay_until (uint32_t ticks)
 (睡眠)等到指定时间刻度。
 
xf_err_t xf_osal_delay_ms (uint32_t ms)
 (睡眠)等待超时,以 ms 为单位。
 

详细描述

定义、创建和控制线程函数。

宏定义说明

◆ __NO_RETURN

#define __NO_RETURN   __attribute__((__noreturn__))

在文件 xf_osal_thread.h43 行定义.

◆ XF_OSAL_DETACHED

#define XF_OSAL_DETACHED   0x00000000U

以分离模式创建线程(默认)

在文件 xf_osal_thread.h51 行定义.

◆ XF_OSAL_JOINABLE

#define XF_OSAL_JOINABLE   0x00000001U

以可加入模式创建的线程

在文件 xf_osal_thread.h52 行定义.

◆ XF_OSAL_UNPRIVILEGED

#define XF_OSAL_UNPRIVILEGED   0x00000002U

线程以非特权模式运行

在文件 xf_osal_thread.h53 行定义.

◆ XF_OSAL_PRIVIEGED

#define XF_OSAL_PRIVIEGED   0x00000004U

线程在特权模式下运行

在文件 xf_osal_thread.h54 行定义.

◆ MAX_BITS_TASK_NOTIFY

#define MAX_BITS_TASK_NOTIFY   31U

FreeRTOS 对接中,用户可用的线程通知位数(bit0 ~ bit30)。

在文件 xf_osal_thread.h59 行定义.

◆ THREAD_FLAGS_INVALID_BITS

#define THREAD_FLAGS_INVALID_BITS   (~((1UL << MAX_BITS_TASK_NOTIFY) - 1U))

FreeRTOS 对接里,无效(保留)事件位掩码(bit31)。

在文件 xf_osal_thread.h64 行定义.

类型定义说明

◆ xf_osal_priority_t

线程优先级。

默认线程优先级是 XF_OSAL_PRIORITY_NORMOL.

如果一个活动线程准备就绪,且其优先级高于当前正在运行的线程, 则立即发生线程切换。系统继续执行优先级较高的线程。

◆ xf_osal_thread_attr_t

线程的属性结构。

◆ xf_osal_thread_t

typedef void* xf_osal_thread_t

线程句柄。

在文件 xf_osal_thread.h159 行定义.

◆ xf_osal_thread_func_t

typedef void(* xf_osal_thread_func_t) (void *argument)

线程的入口函数。

在文件 xf_osal_thread.h164 行定义.

枚举类型说明

◆ _xf_osal_priority_t

线程优先级。

默认线程优先级是 XF_OSAL_PRIORITY_NORMOL.

如果一个活动线程准备就绪,且其优先级高于当前正在运行的线程, 则立即发生线程切换。系统继续执行优先级较高的线程。

枚举值
XF_OSAL_PRIORITY_NONE 

无优先级(未初始化)

XF_OSAL_PRIORITY_IDLE 

为空闲线程保留

XF_OSAL_PRIORITY_LOW 

Priority: low

XF_OSAL_PRIORITY_LOW1 

Priority: low + 1

XF_OSAL_PRIORITY_LOW2 

Priority: low + 2

XF_OSAL_PRIORITY_LOW3 

Priority: low + 3

XF_OSAL_PRIORITY_LOW4 

Priority: low + 4

XF_OSAL_PRIORITY_LOW5 

Priority: low + 5

XF_OSAL_PRIORITY_LOW6 

Priority: low + 6

XF_OSAL_PRIORITY_LOW7 

Priority: low + 7

XF_OSAL_PRIORITY_BELOW_NORMAL 

Priority: below normal

XF_OSAL_PRIORITY_BELOW_NORMAL1 

Priority: below normal + 1

XF_OSAL_PRIORITY_BELOW_NORMAL2 

Priority: below normal + 2

XF_OSAL_PRIORITY_BELOW_NORMAL3 

Priority: below normal + 3

XF_OSAL_PRIORITY_BELOW_NORMAL4 

Priority: below normal + 4

XF_OSAL_PRIORITY_BELOW_NORMAL5 

Priority: below normal + 5

XF_OSAL_PRIORITY_BELOW_NORMAL6 

Priority: below normal + 6

XF_OSAL_PRIORITY_BELOW_NORMAL7 

Priority: below normal + 7

XF_OSAL_PRIORITY_NORMOL 

Priority: normal

XF_OSAL_PRIORITY_NORMOL1 

Priority: normal + 1

XF_OSAL_PRIORITY_NORMOL2 

Priority: normal + 2

XF_OSAL_PRIORITY_NORMOL3 

Priority: normal + 3

XF_OSAL_PRIORITY_NORMOL4 

Priority: normal + 4

XF_OSAL_PRIORITY_NORMOL5 

Priority: normal + 5

XF_OSAL_PRIORITY_NORMOL6 

Priority: normal + 6

XF_OSAL_PRIORITY_NORMOL7 

Priority: normal + 7

XF_OSAL_PRIORITY_ABOVE_NORMAL 

Priority: above normal

XF_OSAL_PRIORITY_ABOVE_NORMAL1 

Priority: above normal + 1

XF_OSAL_PRIORITY_ABOVE_NORMAL2 

Priority: above normal + 2

XF_OSAL_PRIORITY_ABOVE_NORMAL3 

Priority: above normal + 3

XF_OSAL_PRIORITY_ABOVE_NORMAL4 

Priority: above normal + 4

XF_OSAL_PRIORITY_ABOVE_NORMAL5 

Priority: above normal + 5

XF_OSAL_PRIORITY_ABOVE_NORMAL6 

Priority: above normal + 6

XF_OSAL_PRIORITY_ABOVE_NORMAL7 

Priority: above normal + 7

XF_OSAL_PRIORITY_HIGH 

Priority: high

XF_OSAL_PRIORITY_HIGH1 

Priority: high + 1

XF_OSAL_PRIORITY_HIGH2 

Priority: high + 2

XF_OSAL_PRIORITY_HIGH3 

Priority: high + 3

XF_OSAL_PRIORITY_HIGH4 

Priority: high + 4

XF_OSAL_PRIORITY_HIGH5 

Priority: high + 5

XF_OSAL_PRIORITY_HIGH6 

Priority: high + 6

XF_OSAL_PRIORITY_HIGH7 

Priority: high + 7

XF_OSAL_PRIORITY_REALTIME 

Priority: realtime

XF_OSAL_PRIORITY_REALTIME1 

Priority: realtime + 1

XF_OSAL_PRIORITY_REALTIME2 

Priority: realtime + 2

XF_OSAL_PRIORITY_REALTIME3 

Priority: realtime + 3

XF_OSAL_PRIORITY_REALTIME4 

Priority: realtime + 4

XF_OSAL_PRIORITY_REALTIME5 

Priority: realtime + 5

XF_OSAL_PRIORITY_REALTIME6 

Priority: realtime + 6

XF_OSAL_PRIORITY_REALTIME7 

Priority: realtime + 7

XF_OSAL_PRIORITY_ISR 

为 ISR 延迟线程保留

XF_OSAL_PRIORITY_ERROR 

系统无法确定优先级或非法优先级

XF_OSAL_PRIORITY_RESERVED 

防止枚举缩小编译器优化

在文件 xf_osal_thread.h76 行定义.

函数说明

◆ xf_osal_thread_create()

xf_osal_thread_t xf_osal_thread_create ( xf_osal_thread_func_t  func,
void *  argument,
const xf_osal_thread_attr_t attr 
)

创建一个线程并将其添加到活动线程中。

  • 函数 xf_osal_thread_create() 通过将线程函数添加到活动线程列表, 并将其设置为状态 READY 来启动线程函数。
  • 当创建的线程函数的优先级高于当前 RUNNING 线程时,立刻发生一次线程切换, 创建的线程函数立即启动,并成为新的 RUNNING 线程。
注解
禁止 在中断服务函数中调用。
参数
func线程函数。
argument线程函数的参数。
attr线程属性。填入 NULL 时使用默认属性。
返回
xf_osal_thread_t
  • NULL 创建失败
  • (OTHER) 线程句柄
示例
examples/osal/event/main/xf_main.c, examples/osal/mutex/main/xf_main.c, examples/osal/notify/main/xf_main.c, examples/osal/queue/main/xf_main.c, examples/osal/semaphore/main/xf_main.c, examples/osal/thread/main/xf_main.c, examples/protocols/http_request/main/xf_main.c, examples/protocols/icmp_echo/main/xf_main.c, examples/protocols/iperf/softap/main/xf_main.c, examples/protocols/iperf/station/main/xf_main.c, examples/protocols/sockets/tcp_client/main/xf_main.c, examples/protocols/sockets/tcp_server/main/xf_main.c, examples/protocols/sockets/udp_client/main/xf_main.c , 以及 examples/protocols/sockets/udp_server/main/xf_main.c.

◆ xf_osal_thread_get_name()

const char * xf_osal_thread_get_name ( xf_osal_thread_t  thread)

获取线程的名称。

注解
可以 在中断服务函数中调用。
参数
thread线程句柄。
返回
const char* 线程名称字符串(以 '\0' 结尾)。
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_get_current()

xf_osal_thread_t xf_osal_thread_get_current ( void  )

返回当前正在运行的线程的线程句柄。

注解
可以 在中断服务函数中调用。
返回
xf_osal_thread_t
  • NULL 错误
  • (OTHER) 当前线程句柄
示例
examples/osal/mutex/main/xf_main.c , 以及 examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_get_state()

xf_osal_state_t xf_osal_thread_get_state ( xf_osal_thread_t  thread)

获取线程的当前线程状态。

注解
禁止 在中断服务函数中调用。
参数
thread线程句柄。
返回
xf_osal_state_t 指定线程的当前线程状态,见 xf_osal_state_t.
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_get_stack_space()

uint32_t xf_osal_thread_get_stack_space ( xf_osal_thread_t  thread)

根据执行过程中的栈记录获取线程的可用堆栈空间。

注解
禁止 在中断服务函数中调用。
参数
thread线程句柄。
返回
uint32_t 剩余的堆栈空间(单位字节)。
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_set_priority()

xf_err_t xf_osal_thread_set_priority ( xf_osal_thread_t  thread,
xf_osal_priority_t  priority 
)

更改线程的优先级。

注解
禁止 在中断服务函数中调用。
参数
thread线程句柄。
priority线程函数的新优先级值。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_RESOURCE 线程处于无效状态
  • XF_ERR_ISR 禁止在中断服务函数中调用
  • XF_ERR_INVALID_ARG 无效参数
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_get_priority()

xf_osal_priority_t xf_osal_thread_get_priority ( xf_osal_thread_t  thread)

获取线程的当前优先级。

注解
禁止 在中断服务函数中调用。
参数
thread线程句柄。
返回
xf_osal_priority_t 指定线程的优先级。
  • (OTHER) 指定线程的优先级,见 xf_osal_priority_t
  • XF_OSAL_PRIORITY_ERROR 无法确定优先级或优先级非法,或在中断中调用该函数
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_yield()

xf_err_t xf_osal_thread_yield ( void  )

将控制权传递给处于状态 READY 的下一个线程。

  • xf_osal_thread_yield() 不会将线程设置为状态 BLOCKED。 因此,即使处于 READY 状态的线程可用,也不会调度优先级较低的线程。
注解
禁止 在中断服务函数中调用。
当内核锁定时此函数无作用。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_ISR 禁止在中断服务函数中调用
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_suspend()

xf_err_t xf_osal_thread_suspend ( xf_osal_thread_t  thread)

暂停指定线程的执行,使其进入 BLOCKED 状态。

  • 暂停正在运行的线程将导致上下文立即切换到另一个处于 READY 状态的线程。
  • 在使用函数 xf_osal_thread_resume() 显式恢复之前,不会执行挂起的线程。
注解
禁止 在中断服务函数中调用。
当内核被锁定时,不得调用此函数来挂起正在运行的线程。
参数
thread线程句柄。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_RESOURCE 线程处于无效状态
  • XF_ERR_ISR 禁止在中断服务函数中调用
  • XF_ERR_INVALID_ARG 无效参数
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_resume()

xf_err_t xf_osal_thread_resume ( xf_osal_thread_t  thread)

恢复线程的执行。

注解
禁止 在中断服务函数中调用。
当内核被锁定时, 可以 调用此函数。 此时潜在的上下文切换会被延迟,直到内核解锁。
参数
thread线程句柄。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_RESOURCE 线程处于无效状态
  • XF_ERR_ISR 禁止在中断服务函数中调用
  • XF_ERR_INVALID_ARG 无效参数
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_delete()

xf_err_t xf_osal_thread_delete ( xf_osal_thread_t  thread)

终止线程的执行。

注解
禁止 在中断服务函数中调用。
参数
thread线程句柄。 允许为 NULL, 等价于 xf_osal_thread_delete(xf_osal_thread_get_current())
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_RESOURCE 线程处于无效状态或不存在其他 READY 线程
  • XF_ERR_ISR 禁止在中断服务函数中调用
  • XF_ERR_INVALID_ARG 无效参数
示例
examples/osal/thread/main/xf_main.c, examples/protocols/http_request/main/xf_main.c, examples/protocols/icmp_echo/main/xf_main.c, examples/protocols/iperf/softap/main/xf_main.c, examples/protocols/iperf/station/main/xf_main.c, examples/protocols/sockets/tcp_client/main/xf_main.c, examples/protocols/sockets/tcp_server/main/xf_main.c, examples/protocols/sockets/udp_client/main/xf_main.c , 以及 examples/protocols/sockets/udp_server/main/xf_main.c.

◆ xf_osal_thread_get_count()

uint32_t xf_osal_thread_get_count ( void  )

获取活动线程的数量。

注解
禁止 在中断服务函数中调用。
返回
uint32_t
  • 0 错误,可能在中断服务函数中调用
  • (OTHER) 活动线程的数量
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_thread_enumerate()

uint32_t xf_osal_thread_enumerate ( xf_osal_thread_t thread_array,
uint32_t  array_items 
)

列出活动线程。

注解
禁止 在中断服务函数中调用。
参数
[out]thread_array指向用于检索线程句柄的数组的指针。
array_items用于检索线程句柄的数组中的最大项目数。
返回
uint32_t
  • 0 错误,可能在中断服务函数中调用,或接口未实现, 或参数错误
  • (OTHER) 已枚举线程的数量

◆ xf_osal_thread_notify_set()

xf_err_t xf_osal_thread_notify_set ( xf_osal_thread_t  thread,
uint32_t  notify 
)

设置线程的指定线程标志。

注解
可以 在中断服务函数中调用。
参数
thread线程句柄。
notify指定应设置的线程标志。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_TIMEOUT 超时
  • XF_ERR_RESOURCE 资源不可用
  • XF_ERR_INVALID_ARG 无效参数,参数标志设置了最高位
  • XF_ERR_ISR 中断调用错误,禁止在中断中调用
示例
examples/osal/notify/main/xf_main.c.

◆ xf_osal_thread_notify_clear()

xf_err_t xf_osal_thread_notify_clear ( uint32_t  notify)

清除当前运行线程的指定线程标志。

注解
禁止 在中断服务函数中调用。
参数
notify指定应清除的线程标志。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_INVALID_ARG 无效参数,参数标志设置了最高位
  • XF_ERR_ISR 中断调用错误,禁止在中断中调用
示例
examples/osal/notify/main/xf_main.c.

◆ xf_osal_thread_notify_get()

uint32_t xf_osal_thread_notify_get ( void  )

获取当前正在运行的线程的当前线程标志。

注解
禁止 在中断服务函数中调用。
返回
uint32_t 当前线程标志。
示例
examples/osal/notify/main/xf_main.c.

◆ xf_osal_thread_notify_wait()

xf_err_t xf_osal_thread_notify_wait ( uint32_t  notify,
uint32_t  options,
uint32_t  timeout 
)

当前运行线程等待一个或多个线程标志变为有信号状态。

注解
禁止 在中断服务函数中调用。
参数
notify指定要等待的标志。
options指定标志选项。
timeout超时值,单位 ticks. 可以为 0 或 XF_OSAL_WAIT_FOREVER.
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_TIMEOUT 超时
  • XF_ERR_RESOURCE 在未指定超时的情况下,未设置等待标记
  • XF_ERR_INVALID_ARG 无效参数,句柄无效或 flags 设置了最高位
示例
examples/osal/notify/main/xf_main.c.

◆ xf_osal_delay()

xf_err_t xf_osal_delay ( uint32_t  ticks)

(睡眠)等待超时。

xf_osal_delay() 从调用时刻起睡眠等待指定时间刻度。

注解
禁止 在中断服务函数中调用。
参数
ticks需要等待的时间刻度值。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_INVALID_ARG 无效参数
  • XF_ERR_ISR 禁止在中断服务函数中调用

◆ xf_osal_delay_until()

xf_err_t xf_osal_delay_until ( uint32_t  ticks)

(睡眠)等到指定时间刻度。

xf_osal_delay_until() 会等待直到绝对时间刻度。

注解
禁止 在中断服务函数中调用。
参数
ticks等待到指定的时间刻度值。
返回
xf_err_t
  • XF_OK 成功
  • XF_FAIL 通用错误
  • XF_ERR_INVALID_ARG 无效参数
  • XF_ERR_ISR 禁止在中断服务函数中调用
示例
examples/osal/thread/main/xf_main.c.

◆ xf_osal_delay_ms()