Kernel-win32的系统调用机制.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Kernel-win32的系统调用机制.pdf

Kernel-win32 的系统调用机制 毛德操 正如许多网友所言,要在 Linux 内核中实现 Windows 系统调用(或别的系统调用),最简 单的办法莫过于把这些系统调用“搭载”在 Linux 系统调用上。具体又有几种不同的方法: 1. 为Linux系统调用ioctl()增加一些“命令码”,每个新的命令码都代表着一个Windows 系统调用。 2. 为 Linux 增加一个新的系统调用、例如 win32_syscall()、作为总的入口和载体,然 后定义一些类似于 ioctl()中所用那样的命令码。 3. 在 Linux 系统中定义一种虚拟的特殊文件,然后把 Windows系统调用搭载在某个文 件操作的系统调用上,例如 ioctl()、read()等等都可以用于这个目的。作为一种特例, 在/proc 下面增加一个节点,就可以用于这个目的。又如 socket 也可以看作是这样 的特殊文件。 4. 其它。例如也可以采取类似于“远程过程调用” 、即 RPC 的形式,但是让“服务端” 成为内核线程,或者直接在调用者的上下文中执行(这实际上是第 3 种方法的变种)。 其中又以第 1、2 两种方法更为简单易行。事实上 Kernel-win32正是这样做的。 Kernel-win32 原先在这方面提供两种选项。一种是利用 Linux 的 ioctl()系统调用;另一 种是为 Linux 增添一个 win32()系统调用,然后在这个新添系统调用的内部采用类似于 ioctl() 那样的实现。但是在后来的版本中已经放弃了采用 ioctl()的选项(在相应的代码中加上了“#if 0”),所以现在已经只采用上述的第二种方法,即为 Linux增加一个系统调用作为载体。下 面我们看它的代码。 首先,Kernel_win32为 Linux 定义了一个新的系统调用号: /* Linux Win32 emulation syscall */ #define __NR_win32 249 新的调用号__NR_win32 定义为 249。这个调用号在当时无疑是空闲的,但是在 Linux 内核的 版中分配使用的系统调用号已经达到了 288,而调用号为 249 的系统调用是 io_cancel()。所以如果要在 版内核上使用 Kernel-win32肯定得要修改这个调用号的定 义。其实,这也反映出此种方法的缺点:只要是没有被正式纳入 Lunux 内核代码的系统调 用号,都是靠不住的。此外,注释中说这是用来实现(Windows)系统调用“仿真(emulation)” 的,但是我认为这只能说是“模拟(simulation)”,因为只是逻辑上相同、而形式上是不同的。 这个 Linux 系统调用只是个载体,而实际的 Windows 系统调用号(更确切地说是Kernel_win32 系统调用号),则另有定义: /* Win32 system call numbers */ typedef enum { WINESERVER_INITIALISE_WIN32, WINESERVER_UNINITIALISE_WIN32, WINESERVER_CLOSE_HANDLE, WINESERVER_WAIT_FOR_MULTIPLE_OBJECTS, WINESERVER_CREATE_MUTEX, …… WINESERVER_MAP_VIEW_OF_FILE, WINESERVER_UNMAP_VIEW_OF_FILE,

文档评论(0)

雨中人 + 关注
实名认证
文档贡献者

这一世渡尽红尘,若有来生,不再为人。

1亿VIP精品文档

相关文档