- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
thread_act子系统的实现
一个完整的mach 子系统
mach 子系统包括了很多内核功能的实现,比如VM 子系统(内存管理)、host 子系统(主机硬件信
息的处理)、thread 子系统(thread 相关实现)、exc 子系统(异常处理相关);现在拿
thread_act 为例来跟踪一下代码,希望能够简单地了解vm 子系统的概况。
(1)thread_act 子系统的实现分为两部分:
thread_actServer.c 和thread_actUser.c,分别实现了内核中mach msg 消息接收和发送的
各个API 。
基本逻辑是:调用thread_actUser.c 实现的API ,接收到消息后thread_actServer.c 的对应
函数被调用,真正完成一些事情。
说明一下,所有子系统的***Server.c 和***User.c 代码都是通过MIG 由***.defs 生成。
(2 )mach msg 消息发送:
下面是一个 “类似系统调用”的函数(或者某个系统调用会间接调用这个函数),用于向
thread_act 子系统发送mach msg 消息请求某个服务 (可以当作RPC)。
------xnu/osfmk/mach/thread_actUser.c ------
/* Routine act_get_state */
mig_external kern_return_t act_get_state
(
thread_act_t target_act,
int flavor,
thread_state_t old_state,
mach_msg_type_number_t *old_stateCnt
)
{
#ifdef __MigPackStructs
#pragma pack(4)
#endif
typedef struct {
mach_msg_header_t Head;
NDR_record_t NDR;
int flavor;
mach_msg_type_number_t old_stateCnt;
} Request;
#ifdef __MigPackStructs
#pragma pack()
#endif
#ifdef __MigPackStructs
#pragma pack(4)
#endif
typedef struct {
mach_msg_header_t Head;
NDR_record_t NDR;
kern_return_t RetCode;
mach_msg_type_number_t old_stateCnt;
natural_t old_state[224];
mach_msg_trailer_t trailer;
} Reply;
#ifdef __MigPackStructs
#pragma pack()
#endif
#ifdef __MigPackStructs
#pragma pack(4)
#endif
typedef struct {
mach_msg_header_t Head;
NDR_record_t NDR;
kern_return_t RetCode;
mach_msg_type_number_t old_stateCnt;
natural_t old_state[224];
} __Reply;
#ifdef __MigPackStructs
#pragma pack()
#endif
/*
* typedef
您可能关注的文档
- Service动态调用框架的设计与实现.pdf
- Servlet容器工作原理.doc
- Servo Shaft系列直线电机常见问题 Servo Shaft Linear Motor FAQ.doc
- ServU的安装和基本设置实验作业.doc
- servlet跳转页面的几种方法.doc
- SeSFJava A Framework for Design and AssertionTesting of Concurrent.pdf
- SessionCookie笔试题及答案.doc
- SessionBased Adaptive Overload Control for Secure Dynamic Web Applications.pdf
- session空间的使用.doc
- session中merge和update的区别.doc
- 中国国家标准 GB/T 28182-2024额定电压52 kV及以下带串联间隙避雷器.pdf
- GB/T 28182-2024额定电压52 kV及以下带串联间隙避雷器.pdf
- 《GB/T 44045-2024石油、石化和天然气工业用转子泵》.pdf
- GB/T 15314-2024精密工程测量规范.pdf
- 中国国家标准 GB/T 15314-2024精密工程测量规范.pdf
- 《GB/T 15314-2024精密工程测量规范》.pdf
- GB/T 33475.2-2024信息技术 高效多媒体编码 第2部分:视频.pdf
- 中国国家标准 GB/T 33475.2-2024信息技术 高效多媒体编码 第2部分:视频.pdf
- 《GB/T 33475.2-2024信息技术 高效多媒体编码 第2部分:视频》.pdf
- GB/T 44045-2024石油、石化和天然气工业用转子泵.pdf
文档评论(0)