Threadx_02:服务函数

4 Description of ThreadX Services

4.1 thread相关函数

tx_thread_create

void tx_application_define(void *first_unused_memory)
{
 /* Create my_thread! */
 tx_thread_create(&my_thread, "My Thread",my_thread_entry, \
  0x1234, first_unused_memory, 1024,3, 3, TX_NO_TIME_SLICE, TX_AUTO_START);
}
  • 其中my_thread是一个TX_THREAD的结构体
  • “My Thread” :线程名字
  • my_thread_entry:线程实体程序入口
  • 0x1234:传递给线程条目的32位值第一次执行时的功能。 这个的用途输入完全由应用程序确定。
  • first_unused_memory:栈起始地址
  • 1024:栈大小
  • 3:优先级
  • 3:抢占阈值
  • TX_NO_TIME_SLICE:禁用时间切片
  • TX_AUTO_START:指定线程是否立即启动或处于暂停状态。 法律选择是TX_AUTO_START(0x01)TX_DONT_START(0x00)。 如果是TX_DONT_START指定后,应用程序必须稍后调用tx_thread_resume以便线程运行。

tx_thread_delete

UINT tx_thread_delete(TX_THREAD *thread_ptr) 

该服务删除指定的应用程序线程。 自指定线程必须处于终止或完成状态,该服务不能从试图删除自身的线程中调用。

tx_thread_sleep

将当前的thread挂起 n 个timer_ticks。

tx_thread_suspend & tx_thread_resume

  • tx_thread_suspend此服务挂起指定的应用程序线程。 挂起之后,必须要用thread_resume来重新执行。
  • 该服务恢复或准备执行一个已之前被tx_thread_suspend调用挂起。 另外,这个服务恢复没有自动启动而创建的线程。

tx_thread_terminate

UINT tx_thread_terminate(TX_THREAD *thread_ptr) 

该服务终止指定的应用程序线程,无论线程是否被挂起。 线程可以调用此服务来终止自身。

4.2 tx_byte相关函数

tx_byte_pool_create

tx_byte_allocate

tx_byte_pool_create(&byte_pool_0, "byte pool 0", first_unused_memory, DEMO_BYTE_POOL_SIZE);//9120btye
tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);//分配1024byte

该服务在指定的区域中创建一个内存字节池,然后分配给pointer。

  • bytrr_pool_0:类似thread也是要建立一个架构体变量
  • “byte pool 0”:mem pool name
  • first_unused_memory:起始地址
  • size

4.3 tx_mutex相关函数

mutex内访问的资源,其他的线程不可以再去访问。

tx_mutex_create

    tx_mutex_create(&my_mutex, "my_mutex", TX_NO_INHERIT);
  • My_mutex:控制块
  • “my mutex” :名字
  • 指定此互斥锁是否支持优先级继承。 如果此值为TX_INHERIT,然后支持优先级继承。 但是,如果指定了TX_NO_INHERIT,优先级此互斥体不支持继承。

该服务尝试获取指定互斥锁的独占所有权。 如果调用线程已经拥有该互斥锁,则将增加一个内部计数器,并返回成功状态。

如果互斥锁由另一个线程拥有,并且该线程具有更高的优先级,并且在创建互斥锁时指定了优先级继承,则优先级较低的线程的优先级将暂时提高到调用线程的优先级。

tx_mutex_get

tx_mutex_get(&my_mutex, TX_WAIT_FOREVER);

得到互斥量

tx_mutex_put

tx_mutex_put(&my_mutex);

4.4 tx_event_flag相关函数

tx_event_flags_create

UINT tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr) 

tx_event_flags_get

UINT tx_event_flags_get(TX_EVENT_FLAGS_GROUP *group_ptr,ULONG requested_flags, \
	UINT get_option,ULONG *actual_flags_ptr, ULONG wait_option) 
  • group_ptr:控制块
  • requested_flags:32位无符号变量,代表请求的事件标志。用户自定义这个事件的event_flag
  • get_option:
    TX_AND (0x02):所有事件需要被present
    TX_AND_CLEAR (0x03):清楚所有
    TX_OR (0x00):指定某个事件
    TX_OR_CLEAR (0x01):
  • actural_flag_ptr:
  • option:
    TX_NO_WAIT (0x00000000)
    TX_WAIT_FOREVER (0xFFFFFFFF)
    timeout value (0x00000001through 0xFFFFFFFE)

tx_event_flags_set

UINT tx_event_flags_set(TX_EVENT_FLAGS_GROUP *group_ptr,ULONG flags_to_set,UINT set_option) 

4.5 tx_timer相关函数

tx_timer_create

   tx_timer_create (&stats_timer, "stats_timer", print_stats,
                    0x1234, 500, 500, TX_AUTO_ACTIVATE);
  • stats_timer:控制块
  • “status_timer”:timer名字
  • print_stats:timer超时之后的调用函数
  • 0x1234:超时时间
  • 500:初始ticks
  • 500:指定所有计时器的刻度数在第一个到期之后。 零参数使计时器成为一次性计时器。否则,对于定期计时器,合法值范围从1到0xFFFFFFFF。
  • TX_AUTO_ACTIVATE:自动执行

tx_timer_get

start_time = tx_time_get();

4.7 tx_queue

tx_queue_create

tx_queue_create (&my_queue, "my_queue", QUEUE_MSG_SIZE,
                    queue_storage, QUEUE_TOTAL_SIZE);

queue_storage:队列的起始地址

tx_queue_send

UINT tx_queue_send(TX_QUEUE *queue_ptr,
	VOID *source_ptr, ULONG wait_option) 

tx_queue_receive

UINT tx_queue_receive(TX_QUEUE *queue_ptr,
	VOID *destination_ptr, ULONG wait_option) 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值