OSE RTOS中APP进程接收消息机制
在OSE运行的APP进程均有一个PCB结构体,结构体中包含了指向该进程signal list的指针,是一个链表,实际上是指向链表的头指针与尾指针,头指针结构中包含指向下一个signal的next指针。其他进程向该进程发送的消息,将用此链表维护。
PCB:
/* Signal buffers head of list.*/
struct sigbuf *sigbuf_head;
/* Signal buffers tail of list.*/
struct sigbuf *sigbuf_tail;
sigbuf_head:
/* Next signal in the list.*/
struct sigbuf *next;
进程一旦启动,就进入while循环(Loop forever),msg_receive会调用OSE的receive系统函数接收消息。如果循环又从头开始执行,这时会通过msg_receive进入系统调用receive函数,receive函数执行有两种情况:
1,如果此时该进程的signal list不空,函数将取出链表头指针指向的signal,然后再调整下signal list,将链表的头指针指向signal list的下一个signal,最后返回取出的signal。
2,如果发现该进程的signal list是空的,函数将在判断signal list为空的分支代码处puts this process to sleep via system call "odo_wait". 在该进程sleep过程中,如果有A进程向该进程发送消息,OSE的send系统函数将会把消息挂到当前进程的signal list中,并且如果A进程优先级低于当前进程,会触发OSE从A进程切换到当前进程执行(OSE进程抢占式调度方式),然后当前进程继续从上次sleep代码处指向,在receive函数中对signal list遍历的for循环的下一次执行中,将会得到A进程所发的signal,并返回。
while(true)
{
msg = msg_receive(WAIT_INFINITE);
handler(msg);
release(msg);
}
OSE RTOS中APP进程接收消息机制相关推荐
- freeswitch和sofia-sip中关于sip的消息机制
Sofia-sip内部使用消息队列的方式对sip协议进行处理,sofia-sip和application之间是通过reactor模式进行通信,即通过回调实现,本文主要关注sofia-sip内部消息队列 ...
- Android中app进程ABI确定过程
更多干货,请关注微信公众号: tmac_lover 所谓的ABI全称是application binary interface,是一个机器语言级别的接口,描述的是二进制代码之间的兼容性,也就是说一起工 ...
- Unity中简单粗暴的消息机制(可限制消息调用次数)
上代码 /********************************************************文件: EasyMsg.cs作者: 阿飞日期: 2022年02月15日_09: ...
- Android中使用Handler(消息机制)造成内存泄露的分析和解决
问题描述: Handler 内部类持有 外部类Activity的引用,如果Activity退出而Handler还有延迟处理的消息没有处理完,会导致Activity不能回收,反复如此会导致内存泄露. 解 ...
- 从源码解析-Android中Zygote进程是如何fork一个APP进程的
zygote进程fork子进程 前言 强烈推荐 进程创建流程 APP启动第三方应用 startActivity startService sendBroadcast ContentResolver.q ...
- APP推送消息测试点分析
APP推送消息测试点分析 1.虽然以前学测试的时候接触一点消息推送测试点,但是自己理解和掌握的测试点还不够深,由于工作需求,这两天深入了解和学了一下APP推送消息是什么,怎么测的问题 设计好的推送消息 ...
- android p获取通话记录_Android 底层的进程间同步机制
作者:Android面试官 进程间通信的经典实现 进程间通信(Inter-process communication,IPC)指运行在不同进程中的若干线程间的数据交换,可发生在一台机器上,也可通过网络 ...
- mfc编程消息机制中消息汇总
做VC开发必须熟悉消息机制,笔试面试重点,自己在这方面很欠缺,搜集学习一下 WM_CREATE CreateWindow 初始化工作 GetMessage 遇到WM_QUIT,程序结束 Dispatc ...
- RTOS中的消息队列的原理以及应用
消息队列的原理 RTOS中的消息队列是一种用于任务间通信的机制,它可以实现任务之间的异步通信,从而实现任务间的解耦.消息队列是一个先进先出的数据结构,任务可以向队列中发送消息,也可以从队列中接收消息. ...
最新文章
- C++ 字符串字母大小写转换
- xend: No such file or directory. Is xend running? 问题
- ajxa异步请求数据
- 方立勋_30天掌握JavaWeb_JSTL标签库
- 全国计算机等级考试题库二级C操作题100套(第86套)
- sqlserver oracle插件,SQLServer链接服务器至Oracle
- 客户端Blazor中的应用程序设置
- 《Scala机器学习》一一
- scala几种循环判断语句_Scala循环控制语句– while,while和for循环
- VC++6.0选择打开文件命令时停止工作解决方法
- 如何判断 DataRow 中是否存在某列????
- R语言预测shibor走势:prophet
- 四种软件开发模式(瀑布、迭代、螺旋、敏捷),对比分析
- 方法重载和重写的区别
- c语言pow函数原型_c语言pow的用法
- ios 设置导航栏背景色
- 扇贝单词里有计算机英语吗,扇贝单词英语版电脑版
- html怎么做向下的图标,用CSS和Bootstrap图标制作上下跳动的指示箭头动画效果
- 字节跳动后端面经(17)
- webrtc 搭建直播平台
热门文章
- 没关系,前端还死不了
- 【技术】PWA实践 - 应用激活与安装
- [Daimayuan] 巨大的牛棚(C++,矩阵前缀和)
- MS10-073微软Windows内核Win32k.sys键盘布局本地提权漏洞 fix poc
- 使用二进制位来控制权限,表设计
- STM32系列后缀的意思
- 塑料保鲜膜效果模拟:ABC文件用BlendShape导出到mayaUnity
- 数据迁移工具/平台大全
- 老板,你跨界了吗? ——今目标企业工作平台为您跨界工作提供有效支撑...
- Vue + Element UI 实现权限管理系统 前端篇(九):接口格式定义