在/include/linux/compat.h中,我看到很多compat_sys_xxx。另外,还有别的地方定义了sys_xxx。 compat_sys_xxx和sys_xxx之间的关系是什么?在Linux内核中如何定义系统调用? compat_sys_xxx和sys_xxx之间的关系是什么?
-1
A
回答
0
如果存在compat条目,则几乎可以肯定意味着系统调用原型已经更改,并且为了兼容性维护了以前原型的一个版本。通常你会看到compat_sys_xxx只是调用了sys_xxx,其参数适当地转换了(或者两者都调用一个具有稍微不同转换的通用函数)。作为一个或多或少随机的例子,compat_sys_msgsnd带有三个“int”参数,后面跟着一个指向compat_msgbuf结构的指针(其中第一个表面上“长”的字段被强制为32位大小)。 OTOH,sys_msgsnd以不同的顺序列出参数,并且选择参数类型以适当地为体系结构进行变形(即根据自然长整数大小的长浮点数,size_t在一个地方替换int等)。
毫无疑问,系统调用接口被改变了,因为当移动到不同的(非i386)体系结构时,原始接口在某种程度上是不明确的。 compat_版本允许现有的二进制文件无需修改即可继续工作。
相关问题
- 1. dup()和close()系统调用之间的关系是什么?
- 2. Linux-PAM和内核之间的关系
- 3. memcached板和linux内核板之间有什么关系
- 4. virt_to_phys和Linux内核中CPU的MMU之间的关系是什么?
- 5. Linux内核中的系统调用
- 6. Linux内核3.3.4中的自定义系统调用
- 7. 什么是系统类和PrintStream类之间的关系
- 8. 冗余的Linux内核系统调用
- 9. Linux内核AIO,开放系统调用
- 10. 更改linux内核系统调用号
- 11. Linux内核模块(内核3.5)中的系统调用拦截
- 12. 是什么F_DUPFD内的fcntl在Linux系统调用使用
- 13. ftp.kernel.org中的内核tarball和git.kernel.org中的git树之间的关系是什么?
- 14. python虚拟环境和特定系统库之间的关系是什么?
- 15. 如何在Linux内核3.2.x中的自定义系统调用期间读取目录的内容
- 16. clone()系统调用在linux内核中定义的位置在哪里?
- 17. C++和Ruby之间的关系和依赖关系是什么?
- 18. 哪个进程在Linux内核中调用系统调用?
- 19. gcc和arm-linux-gcc之间的关系是什么
- 20. 内核线程和用户线程之间的关系是什么?
- 21. 核心数据中提取与单向关系之间的关系是什么?
- 22. 特权指令,陷阱和系统调用之间的关系
- 23. linux内核中的系统调用表在哪里?
- 24. 在Linux内核3.3中添加一个新的系统调用
- 25. 在系统调用中访问Linux内核的SuperBlock对象
- 26. 什么是系统调用?
- 27. 用户与内核之间的区别系统调用
- 28. 什么Linux操作系统来与Linux内核2.6.32
- 29. getnameinfo - 它在Linux中的系统调用是什么?
- 30. Linux内核如何防止BIOS系统调用?