Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
rt_sem_control()函数
发布于 2011-11-07 11:03:35 浏览:8086
订阅该版
请问:rt_sem_control()函数是 与信号量有关的系统函数。您的编程指南没有提及到此函数的用法和功能。内核里有注释,不是很明白。能简单介绍一下吗?谢谢! [s:188]
查看更多
4
个回答
默认排序
按发布时间排序
bernard
2011-11-07
这家伙很懒,什么也没写!
这个函数用于对semaphore做一些额外的控制,以获取或设置semaphore的一些额外信息或行为。 因为这个函数中的实现比较晚,所以《编程指南》上还没有涉及到这个函数的说明。 当前rt_sem_control函数支持如下命令: RT_IPC_CMD_RESET 以把semaphore进行重置。对semaphore重置后,会先把semaphore上挂起的所有任务进行唤醒(任务的error是-RT_ERROR),然后把semaphore的值会重新初始化成设定的值。 以下是调用例程: ``` rt_err_t result; rt_uint32_t value; value = 1; /* 重置的值,即重置为1 */ result = rt_sem_control(sem, RT_IPC_CMD_RESET, (void*)value); ```
haitao52198
2011-11-15
这家伙很懒,什么也没写!
>这个函数用于对semaphore做一些额外的控制,以获取或设置semaphore的一些额外信息或行为。 > >因为这个函数中的实现比较晚,所以《编程指南》上还没有涉及到这个函数的说明。 > >当前rt_sem_control函数支持如下命令: >RT_IPC_CMD_RESET >以把semaphore进行重置。对semaphore重置后,会先把semaphore上挂起的所有任务进行唤醒(任务的error是-RT_ERROR),然后把semaphore的值会重新初始化成设定的值。 > >以下是调用例程: > > >``` > >rt_err_t result; >rt_uint32_t value; > >value = 1; /* 重置的值,即重置为1 */ >result = rt_sem_control(sem, RT_IPC_CMD_RESET, (void*)value); > >``` --- rt_sem_release(m->sem_ack); rt_sem_control(m->sem_ack, RT_IPC_CMD_RESET, (void *)0); 释放完信号量,系统是怎么调度的啊?是不是释放后立马查询有没有阻塞在该信号量上的高优先线程并切换线程呢?如果是的话,那后面rt_sem_control岂不是等下次该线程运行时才会被执行吗?谢谢。
shaolin
2011-11-15
这家伙很懒,什么也没写!
rt_sem_release后会将挂起在sem_ack上的线程唤醒并重新调度,rt_sem_control是有可能等下次该线程运行时才会被执行的。 在rt_sem_release后使用rt_sem_control的目的是因为在某些应用中必须rt_sem_take和rt_sem_release依次出现,而不允许rt_sem_release被连续多次调用,一旦出现这种情况会被认为是出现了异常,通过调用rt_sem_control接口来重新初始化sem_ack,恢复异常。
撰写答案
登录
注册新账号
关注者
0
被浏览
8.1k
关于作者
haitao52198
这家伙很懒,什么也没写!
提问
42
回答
260
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread项目助手v0.2.0 - 支持Env Windows
2
RttreadV5.10上,GD32F450Z RTC时间显示问题
3
rt-smart启动流程分析
4
EtherKit快速上手PROFINET
5
RTThread USB转串口无法接收数据
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部