Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
POSIX
RTT中的POSIX支持
发布于 2016-11-13 23:32:22 浏览:4321
订阅该版
标题改个名字,原名称是《RTT中的signal支持》,因为在持续性的做POSIX相关的工作,所以其他部分也做个相应的记录。 1. POSIX signal的情况 ----- 按照标准的signal情况,<见POSIX>,语义主要包括几个: int sigaction(int sig, const struct sigaction *restrict act, struct sigaction *restrict oact); void (*signal(int sig, void (*func)(int)))(int); /* 用于设置关联的signal处理函数(action) */ int kill(pid_t, int); -- 向进程发送signal,RTT环境下不会支持。 int raise(int sig); -- 向本身发送signal,在RTT环境下由当前任务进行处理;等同于 pthread_kill(pthread_self(), sig); int pthread_kill(pthread_t thread, int sig); -- 向某pthread发送signal 多个signal相关的sigset int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int signo); int sigdelset(sigset_t *set, int signo); int sigismember(const sigset_t *set, int signo); 核心部分在于,可以通过sigaction或signal函数把一个signal处理函数挂接到对应的signal上。当这个signal触发时(通过kill或raise等API),即使进程处于挂起状态,它也应该被唤醒起来,去执行对应的signal action。然后结束后,再返回原有的状态。 而在触发signal给任务A时,又有几种状态: 1. 触发给任务本身,直接处理,然后返回; 2. 触发给任务,任务处于sigwait状态。 3. 任务处于就绪状态; 4. 任务处于挂起状态; 如果任务A处于挂起状态,则应该唤醒任务,构造栈帧,由任务A去执行signal handler[马上执行,任务优先级顺延任务A的优先级]。执行结束后,返回上次的运行点。 signals参考链接: [http://pubs.opengroup.org/onlinepubs/00 ... nal.h.html](http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html) [http://www.enderunix.org/docs/signals.pdf](http://www.enderunix.org/docs/signals.pdf)
查看更多
3
个回答
默认排序
按发布时间排序
bernard
2016-11-26
这家伙很懒,什么也没写!
Linux的signals处理可以见这篇文档: [http://www.cnblogs.com/blueyunchao0618/p/5953862.html](http://www.cnblogs.com/blueyunchao0618/p/5953862.html) Linux的signals处理因为程序存在用户空间,而sigaction主要是在用户空间发生,所以它是每次在程序从内核空间返回到用户空间是检查是否有signals需要处理,然后再返回到用户态执行相应的sigaction。
bernard
2016-12-26
这家伙很懒,什么也没写!
2. POSIX pipe ----- pipe调用本身的语义, [http://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html](http://pubs.opengroup.org/onlinepubs/96 ... /pipe.html) 主体部分是这个, The pipe() function shall create a pipe and place two file descriptors, one each into the arguments fildes[0] and fildes[1], that refer to the open file descriptions for the read and write ends of the pipe. The file descriptors shall be allocated as described in File Descriptor Allocation. The O_NONBLOCK and FD_CLOEXEC flags shall be clear on both file descriptors. (The fcntl() function can be used to set both these flags.) Data can be written to the file descriptor fildes[1] and read from the file descriptor fildes[0]. A read on the file descriptor fildes[0] shall access data written to the file descriptor fildes[1] on a first-in-first-out basis. It is unspecified whether fildes[0] is also open for writing and whether fildes[1] is also open for reading. A process has the pipe open for reading (correspondingly writing) if it has a file descriptor open that refers to the read end, fildes[0] (write end, fildes[1]). The pipe's user ID shall be set to the effective user ID of the calling process. <单用户,单进程系统,这部分不支持> The pipe's group ID shall be set to the effective group ID of the calling process. <单用户,单进程系统,这部分不支持> Upon successful completion, pipe() shall mark for update the last data access, last data modification, and last file status change timestamps of the pipe. 简单的说就是,调用pipe调用后,出两个fd,一个是read,一个是write。这部分和rt-thread v2.1.0里的定义实际上是完全不一样的。rt-thread v2.1.0里的pipe更类似于自己的 API(也确实是,例如rt_pipe_read/rt_pipe_write;rt_pipe_create则直接创建出一个pipe的设备出来,然后再进行(设备)打开,读写操作)
撰写答案
登录
注册新账号
关注者
0
被浏览
4.3k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5940
被采纳
76
关注TA
发私信
相关问题
1
移植rt-thread2.1.0缺少components/pthreads里的posix_types.h文件中包含的sy
2
[征集自愿者] POSIX相关章节文档编写
3
RT-Thread POSIX支持
4
POSIX标准接口针对文件系统没有导出fsync
5
POSIX接口的select还没实现?
6
pthread 组建bug反馈
7
RT-Thread 如何用POSIX接口
8
使用 RT_USING_POSIX finsh能显示,但不能输入
9
请教、讨论POSIX接口、dfs中的pos和size问题
10
在使用RT_USING_POSIX时,finish 命令问题
推荐文章
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
如何在master上的BSP中添加配置yml文件
2
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
3
RT-Thread 发布 EtherKit开源以太网硬件!
4
rt-thread使用cherryusb实现虚拟串口
5
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
热门标签
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
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部