首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arch/x86/include/asm/unistd.h与include/asm-泛型/unistd.h

arch/x86/include/asm/unistd.h与include/asm-泛型/unistd.h
EN

Stack Overflow用户
提问于 2012-06-11 23:31:00
回答 1查看 3.9K关注 0票数 2

这两个文件有什么区别?我真搞不懂。我应该指出,第一个文件应该是arch/x86/include/asm/unistd_32.h (或和_64.h)。下面是它们包含的内容的快速预览:

arch/x86/include/asm/unistd.h

代码语言:javascript
复制
#ifndef _ASM_X86_UNISTD_32_H
#define _ASM_X86_UNISTD_32_H

/*
 * This file contains the system call numbers.
 */

#define __NR_restart_syscall      0
#define __NR_exit         1
#define __NR_fork         2
#define __NR_read         3
#define __NR_write        4
#define __NR_open         5
#define __NR_close        6
#define __NR_waitpid          7
#define __NR_creat        8
#define __NR_link         9
#define __NR_unlink      10
#define __NR_execve      11
#define __NR_chdir       12
#define __NR_time        13
#define __NR_mknod       14
#define __NR_chmod       15
#define __NR_lchown      16
#define __NR_break       17
#define __NR_oldstat         18
#define __NR_lseek       19
#define __NR_getpid      20
#define __NR_mount       21
#define __NR_umount      22

include/asm-generic/unistd.h

代码语言:javascript
复制
#if !defined(_ASM_GENERIC_UNISTD_H) || defined(__SYSCALL)
#define _ASM_GENERIC_UNISTD_H

#include <asm/bitsperlong.h>

/*
 * This file contains the system call numbers, based on the
 * layout of the x86-64 architecture, which embeds the
 * pointer to the syscall in the table.
 *
 * As a basic principle, no duplication of functionality
 * should be added, e.g. we don't use lseek when llseek
 * is present. New architectures should use this file
 * and implement the less feature-full calls in user space.
 */

#ifndef __SYSCALL
#define __SYSCALL(x, y)
#endif

#if __BITS_PER_LONG == 32
#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32)
#else
#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64)
#endif

#define __NR_io_setup 0
__SYSCALL(__NR_io_setup, sys_io_setup)

#define __NR_io_destroy 1
__SYSCALL(__NR_io_destroy, sys_io_destroy)

#define __NR_io_submit 2
__SYSCALL(__NR_io_submit, sys_io_submit)

#define __NR_io_cancel 3
__SYSCALL(__NR_io_cancel, sys_io_cancel)

#define __NR_io_getevents 4
__SYSCALL(__NR_io_getevents, sys_io_getevents)

/* fs/xattr.c */

#define __NR_setxattr 5
__SYSCALL(__NR_setxattr, sys_setxattr)

#define __NR_lsetxattr 6
__SYSCALL(__NR_lsetxattr, sys_lsetxattr)

#define __NR_fsetxattr 7
__SYSCALL(__NR_fsetxattr, sys_fsetxattr)

#define __NR_getxattr 8
__SYSCALL(__NR_getxattr, sys_getxattr)

#define __NR_lgetxattr 9
__SYSCALL(__NR_lgetxattr, sys_lgetxattr)

#define __NR_fgetxattr 10
__SYSCALL(__NR_fgetxattr, sys_fgetxattr)

#define __NR_listxattr 11
__SYSCALL(__NR_listxattr, sys_listxattr)

#define __NR_llistxattr 12
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 04:34:55

我没有明确的答案,但当devs试图从旧的机制转向新的机制时,冗余文件的存在并不少见。你的情况看起来很相似。

如果您签出3.4内核,您将发现arch/x86/include/asm/unistd_32.h和arch/x86/include/asm/unistd_64.h都消失了。相反,它们是使用arch/x86/syscalls生成的。

查看最新的内核(3.4.2稳定运行),并执行"git latest arch/x86/include/asm",搜索unistd_64.h或unistd_32.h或unistd.h。

我发现下面的提交对您来说可能很有趣。提交303395ac3bf3e2cb488435537d416bc840438fcb

我从来没有碰过系统,所以我不想说太多。git日志通常是我整理混乱文件的方式。如果你擅长的话,你也可以进入制作类。)我不是,所以我依赖git日志。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10988759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档