Linux System Call Table

转载:http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html


The following table lists the system calls for the Linux 2.2 kernel.It could also be thought of as an API for the interface between userspace and kernel space.My motivation for making this table was to make programming in assemblylanguage easier when using only system calls and not the C library(for more information on this topic, go tohttp://www.linuxassembly.org).On the left are the numbers of the system calls. This number will beput in register %eax. On the right of the table are the types of valuesto be put into the remaining registers before calling the software interrupt'int 0x80'. After each syscall, an integer is returned in %eax.

For convenience, the kernel source file where each system call islocated is linked to in the column labelled "Source". In order to usethe hyperlinks, you must first copy this page to your own machine becausethe links take you directly to the source code on your system. You musthave the kernel source installed (or linked from) under '/usr/src/linux'for this to work.

%eaxNameSource%ebx%ecx%edx%esx%edi
1sys_exitkernel/exit.cint----
2sys_forkarch/i386/kernel/process.cstruct pt_regs----
3sys_readfs/read_write.cunsigned intchar *size_t--
4sys_writefs/read_write.cunsigned intconst char *size_t--
5sys_openfs/open.cconst char *intint--
6sys_closefs/open.cunsigned int----
7sys_waitpidkernel/exit.cpid_tunsigned int *int--
8sys_creatfs/open.cconst char *int---
9sys_linkfs/namei.cconst char *const char *---
10sys_unlinkfs/namei.cconst char *----
11sys_execvearch/i386/kernel/process.cstruct pt_regs----
12sys_chdirfs/open.cconst char *----
13sys_timekernel/time.cint *----
14sys_mknodfs/namei.cconst char *intdev_t--
15sys_chmodfs/open.cconst char *mode_t---
16sys_lchownfs/open.cconst char *uid_tgid_t--
18sys_statfs/stat.cchar *struct __old_kernel_stat *---
19sys_lseekfs/read_write.cunsigned intoff_tunsigned int--
20sys_getpidkernel/sched.c-----
21sys_mountfs/super.cchar *char *char *--
22sys_oldumountfs/super.cchar *----
23sys_setuidkernel/sys.cuid_t----
24sys_getuidkernel/sched.c-----
25sys_stimekernel/time.cint *----
26sys_ptracearch/i386/kernel/ptrace.clonglonglonglong-
27sys_alarmkernel/sched.cunsigned int----
28sys_fstatfs/stat.cunsigned intstruct __old_kernel_stat *---
29sys_pausearch/i386/kernel/sys_i386.c-----
30sys_utimefs/open.cchar *struct utimbuf *---
33sys_accessfs/open.cconst char *int---
34sys_nicekernel/sched.cint----
36sys_syncfs/buffer.c-----
37sys_killkernel/signal.cintint---
38sys_renamefs/namei.cconst char *const char *---
39sys_mkdirfs/namei.cconst char *int---
40sys_rmdirfs/namei.cconst char *----
41sys_dupfs/fcntl.cunsigned int----
42sys_pipearch/i386/kernel/sys_i386.cunsigned long *----
43sys_timeskernel/sys.cstruct tms *----
45sys_brkmm/mmap.cunsigned long----
46sys_setgidkernel/sys.cgid_t----
47sys_getgidkernel/sched.c-----
48sys_signalkernel/signal.cint__sighandler_t---
49sys_geteuidkernel/sched.c-----
50sys_getegidkernel/sched.c-----
51sys_acctkernel/acct.cconst char *----
52sys_umountfs/super.cchar *int---
54sys_ioctlfs/ioctl.cunsigned intunsigned intunsigned long--
55sys_fcntlfs/fcntl.cunsigned intunsigned intunsigned long--
57sys_setpgidkernel/sys.cpid_tpid_t---
59sys_oldunamearch/i386/kernel/sys_i386.cstruct oldold_utsname *----
60sys_umaskkernel/sys.cint----
61sys_chrootfs/open.cconst char *----
62sys_ustatfs/super.cdev_tstruct ustat *---
63sys_dup2fs/fcntl.cunsigned intunsigned int---
64sys_getppidkernel/sched.c-----
65sys_getpgrpkernel/sys.c-----
66sys_setsidkernel/sys.c-----
67sys_sigactionarch/i386/kernel/signal.cintconst struct old_sigaction *struct old_sigaction *--
68sys_sgetmaskkernel/signal.c-----
69sys_ssetmaskkernel/signal.cint----
70sys_setreuidkernel/sys.cuid_tuid_t---
71sys_setregidkernel/sys.cgid_tgid_t---
72sys_sigsuspendarch/i386/kernel/signal.cintintold_sigset_t--
73sys_sigpendingkernel/signal.cold_sigset_t *----
74sys_sethostnamekernel/sys.cchar *int---
75sys_setrlimitkernel/sys.cunsigned intstruct rlimit *---
76sys_getrlimitkernel/sys.cunsigned intstruct rlimit *---
77sys_getrusagekernel/sys.cintstruct rusage *---
78sys_gettimeofdaykernel/time.cstruct timeval *struct timezone *---
79sys_settimeofdaykernel/time.cstruct timeval *struct timezone *---
80sys_getgroupskernel/sys.cintgid_t *---
81sys_setgroupskernel/sys.cintgid_t *---
82old_selectarch/i386/kernel/sys_i386.cstruct sel_arg_struct *----
83sys_symlinkfs/namei.cconst char *const char *---
84sys_lstatfs/stat.cchar *struct __old_kernel_stat *---
85sys_readlinkfs/stat.cconst char *char *int--
86sys_uselibfs/exec.cconst char *----
87sys_swaponmm/swapfile.cconst char *int---
88sys_rebootkernel/sys.cintintintvoid *-
89old_readdirfs/readdir.cunsigned intvoid *unsigned int--
90old_mmaparch/i386/kernel/sys_i386.cstruct mmap_arg_struct *----
91sys_munmapmm/mmap.cunsigned longsize_t---
92sys_truncatefs/open.cconst char *unsigned long---
93sys_ftruncatefs/open.cunsigned intunsigned long---
94sys_fchmodfs/open.cunsigned intmode_t---
95sys_fchownfs/open.cunsigned intuid_tgid_t--
96sys_getprioritykernel/sys.cintint---
97sys_setprioritykernel/sys.cintintint--
99sys_statfsfs/open.cconst char *struct statfs *---
100sys_fstatfsfs/open.cunsigned intstruct statfs *---
101sys_iopermarch/i386/kernel/ioport.cunsigned longunsigned longint--
102sys_socketcallnet/socket.cintunsigned long *---
103sys_syslogkernel/printk.cintchar *int--
104sys_setitimerkernel/itimer.cintstruct itimerval *struct itimerval *--
105sys_getitimerkernel/itimer.cintstruct itimerval *---
106sys_newstatfs/stat.cchar *struct stat *---
107sys_newlstatfs/stat.cchar *struct stat *---
108sys_newfstatfs/stat.cunsigned intstruct stat *---
109sys_unamearch/i386/kernel/sys_i386.cstruct old_utsname *----
110sys_ioplarch/i386/kernel/ioport.cunsigned long----
111sys_vhangupfs/open.c-----
112sys_idlearch/i386/kernel/process.c-----
113sys_vm86oldarch/i386/kernel/vm86.cunsigned longstruct vm86plus_struct *---
114sys_wait4kernel/exit.cpid_tunsigned long *int optionsstruct rusage *-
115sys_swapoffmm/swapfile.cconst char *----
116sys_sysinfokernel/info.cstruct sysinfo *----
117sys_ipc (*Note)arch/i386/kernel/sys_i386.cuintintintintvoid *
118sys_fsyncfs/buffer.cunsigned int----
119sys_sigreturnarch/i386/kernel/signal.cunsigned long----
120sys_clonearch/i386/kernel/process.cstruct pt_regs----
121sys_setdomainnamekernel/sys.cchar *int---
122sys_newunamekernel/sys.cstruct new_utsname *----
123sys_modify_ldtarch/i386/kernel/ldt.cintvoid *unsigned long--
124sys_adjtimexkernel/time.cstruct timex *----
125sys_mprotectmm/mprotect.cunsigned longsize_tunsigned long--
126sys_sigprocmaskkernel/signal.cintold_sigset_t *old_sigset_t *--
127sys_create_modulekernel/module.cconst char *size_t---
128sys_init_modulekernel/module.cconst char *struct module *---
129sys_delete_modulekernel/module.cconst char *----
130sys_get_kernel_symskernel/module.cstruct kernel_sym *----
131sys_quotactlfs/dquot.cintconst char *intcaddr_t-
132sys_getpgidkernel/sys.cpid_t----
133sys_fchdirfs/open.cunsigned int----
134sys_bdflushfs/buffer.cintlong---
135sys_sysfsfs/super.cintunsigned longunsigned long--
136sys_personalitykernel/exec_domain.cunsigned long----
138sys_setfsuidkernel/sys.cuid_t----
139sys_setfsgidkernel/sys.cgid_t----
140sys_llseekfs/read_write.cunsigned intunsigned longunsigned longloff_t *unsigned int
141sys_getdentsfs/readdir.cunsigned intvoid *unsigned int--
142sys_selectfs/select.cintfd_set *fd_set *fd_set *struct timeval *
143sys_flockfs/locks.cunsigned intunsigned int---
144sys_msyncmm/filemap.cunsigned longsize_tint--
145sys_readvfs/read_write.cunsigned longconst struct iovec *unsigned long--
146sys_writevfs/read_write.cunsigned longconst struct iovec *unsigned long--
147sys_getsidkernel/sys.cpid_t----
148sys_fdatasyncfs/buffer.cunsigned int----
149sys_sysctlkernel/sysctl.cstruct __sysctl_args *----
150sys_mlockmm/mlock.cunsigned longsize_t---
151sys_munlockmm/mlock.cunsigned longsize_t---
152sys_mlockallmm/mlock.cint----
153sys_munlockallmm/mlock.c-----
154sys_sched_setparamkernel/sched.cpid_tstruct sched_param *---
155sys_sched_getparamkernel/sched.cpid_tstruct sched_param *---
156sys_sched_setschedulerkernel/sched.cpid_tintstruct sched_param *--
157sys_sched_getschedulerkernel/sched.cpid_t----
158sys_sched_yieldkernel/sched.c-----
159sys_sched_get_priority_maxkernel/sched.cint----
160sys_sched_get_priority_minkernel/sched.cint----
161sys_sched_rr_get_intervalkernel/sched.cpid_tstruct timespec *---
162sys_nanosleepkernel/sched.cstruct timespec *struct timespec *---
163sys_mremapmm/mremap.cunsigned longunsigned longunsigned longunsigned long-
164sys_setresuidkernel/sys.cuid_tuid_tuid_t--
165sys_getresuidkernel/sys.cuid_t *uid_t *uid_t *--
166sys_vm86arch/i386/kernel/vm86.cstruct vm86_struct *----
167sys_query_modulekernel/module.cconst char *intchar *size_tsize_t *
168sys_pollfs/select.cstruct pollfd *unsigned intlong--
169sys_nfsservctlfs/filesystems.cintvoid *void *--
170sys_setresgidkernel/sys.cgid_tgid_tgid_t--
171sys_getresgidkernel/sys.cgid_t *gid_t *gid_t *--
172sys_prctlkernel/sys.cintunsigned longunsigned longunsigned longunsigned long
173sys_rt_sigreturnarch/i386/kernel/signal.cunsigned long----
174sys_rt_sigactionkernel/signal.cintconst struct sigaction *struct sigaction *size_t-
175sys_rt_sigprocmaskkernel/signal.cintsigset_t *sigset_t *size_t-
176sys_rt_sigpendingkernel/signal.csigset_t *size_t---
177sys_rt_sigtimedwaitkernel/signal.cconst sigset_t *siginfo_t *const struct timespec *size_t-
178sys_rt_sigqueueinfokernel/signal.cintintsiginfo_t *--
179sys_rt_sigsuspendarch/i386/kernel/signal.csigset_t *size_t---
180sys_preadfs/read_write.cunsigned intchar *size_tloff_t-
181sys_pwritefs/read_write.cunsigned intconst char *size_tloff_t-
182sys_chownfs/open.cconst char *uid_tgid_t--
183sys_getcwdfs/dcache.cchar *unsigned long---
184sys_capgetkernel/capability.ccap_user_header_tcap_user_data_t---
185sys_capsetkernel/capability.ccap_user_header_tconst cap_user_data_t---
186sys_sigaltstackarch/i386/kernel/signal.cconst stack_t *stack_t *---
187sys_sendfilemm/filemap.cintintoff_t *size_t-
190sys_vforkarch/i386/kernel/process.cstruct pt_regs----

Note for sys_ipc (117): this syscall takes six arguments, so it can't fitinto the five registers %ebx - %edi; the last parameter (not shown) is of type 'long'. Thissyscall requires a special call method where a pointer is put in %ebx which points to an arraycontaining the six arguments.

I will now explain exactly where in the kernel source that I got the information in the table above.I do this because 1) changes in the source are bound to happen, 2) you might be curious,or 3) I might've made an error.

System Call Numbers

For the numbers of the syscalls, look inarch/i386/kernel/entry.Sfor sys_call_table.The syscall numbers are offsets into that table.Several spots in the table are occupied by the syscallsys_ni_syscall. This is a placeholderthat either replaces an obsolete syscall or reserves a spot forfuture syscalls.

Incidentally, the system calls are called from the functionsystem_call in the same file; in particular,they are called with the assembly instruction'call *SYMBOL_NAME(sys_call_table)(,%eax,4)'.The part '*SYMBOL_NAME(sys_call_table)' just getsreplaced by a symbol name in sys_call_table.SYMBOL_NAME is a macro defined ininclude/linux/linkage.h, and it just replacesitself with its argument.

Typedefs

Here are the typedef declarations in the prototypes above:

atomic_tinclude/asm/atomic.h:
#ifdef __SMP__
typedef struct { volatile int counter; } atomic_t;
#else
typedef struct { int counter; } atomic_t;
#endif
caddr_tinclude/asm/posix_types.h:typedef char * __kernel_caddr_t;
include/linux/types.h:typedef __kernel_caddr_t caddr_t;
cap_user_header_tinclude/linux/capability.h:
typedef struct __user_cap_header_struct {
     __u32 version;
     int pid;
} *cap_user_header_t;
cap_user_data_tinclude/linux/capability.h:
typedef struct __user_cap_data_struct {
     __u32 effective;
     __u32 permitted;
     __u32 inheritable;
} *cap_user_data_t;
clock_tinclude/asm/posix_types.h:typedef long __kernel_clock_t;
include/linux/types.h:typedef __kernel_clock_t clock_t;
dev_tinclude/asm/posix_types.h:typedef unsigned short __kernel_dev_t;
include/linux/types.h:typedef __kernel_dev_t dev_t;
fdsetinclude/linux/posix_types.h
#define __FD_SETSIZE 1024
#define __NFDBITS (8 * sizeof(unsigned long))
#define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS)
(==> __FDSET_LONGS == 32)

typedef struct {
     unsigned long fds_bits [__FDSET_LONGS];
} __kernel_fd_set;
include/linux/types.h:typedef __kernel_fd_set fd_set;
gid_tinclude/asm/posix_types.h:typedef unsigned short __kernel_gid_t;
include/linux/types.h:typedef __kernel_gid_t gid_t;
__kernel_daddr_tinclude/asm/posix_types.h:typedef int __kernel_daddr_t;
__kernel_fsid_tinclude/asm/posix_types.h:
typedef struct {
     int __val[2];
} __kernel_fsid_t;
__kernel_ino_tinclude/asm/posix_types.h:typedef unsigned long __kernel_ino_t;
__kernel_size_tinclude/asm/posix_types.h:typedef unsigned int __kernel_size_t;
loff_tinclude/asm/posix_types.h:typedef long long __kernel_loff_t;
include/linux/types.h:typedef __kernel_loff_t loff_t;
mode_tinclude/asm/posix_types.h:typedef unsigned short __kernel_mode_t;
include/linux/types.h:typedef __kernel_mode_t mode_t;
off_tinclude/asm/posix_types.h:typedef long __kernel_off_t;include/linux/types.h:typedef __kernel_off_t off_t;
old_sigset_tinclude/asm/signal.h:typedef unsigned long old_sigset_t;
pid_tinclude/asm/posix_types.h:typedef int __kernel_pid_t;
include/linux/types.h:typedef __kernel_pid_t pid_t;
__sighandler_tinclude/asm/signal.h:typedef void (*__sighandler_t)(int);
siginfo_tinclude/asm/siginfo.h:
#define SI_MAX_SIZE 128
#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 3)
(==> SI_PAD_SIZE == 29)

typedef struct siginfo {
     int si_signo;
     int si_errno;
     int si_code;

     union {
          int _pad[SI_PAD_SIZE];

          /* kill() */
          struct {
               pid_t _pid; /* sender's pid */
               uid_t _uid; /* sender's uid */
          } _kill;

          /* POSIX.1b timers */
          struct {
               unsigned int _timer1;
               unsigned int _timer2;
          } _timer;

          /* POSIX.1b signals */
          struct {
               pid_t _pid; /* sender's pid */
               uid_t _uid; /* sender's uid */
               sigval_t _sigval;
          } _rt;

          /* SIGCHLD */
          struct {
               pid_t _pid; /* which child */
               uid_t _uid; /* sender's uid */
               int _status; /* exit code */
               clock_t _utime;
               clock_t _stime;
          } _sigchld;

          /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
          struct {
               void*_addr; /* faulting insn/memory ref. */
          } _sigfault;

          /* SIGPOLL */
          struct {
               int_band; /* POLL_IN, POLL_OUT, POLL_MSG */
               int _fd;
          } _sigpoll;
     } _sifields;
} siginfo_t;
sigset_tinclude/asm/signal.h:typedef unsigned long sigset_t;
size_tinclude/asm/posix_types.h:typedef unsigned int __kernel_size_t;
include/linux/types.h:typedef __kernel_size_t size_t;
ssize_tinclude/asm/posix_types.h:typedef int __kernel_ssize_t;
include/linux/types.h:typedef __kernel_ssize_t ssize_t;
stack_tinclude/asm/signal.h:
typedef struct sigaltstack {
     void *ss_sp;
     int ss_flags;
     size_t ss_size;
} stack_t;
suseconds_tinclude/asm/posix_types.h:typedef long __kernel_suseconds_t;
include/linux/types.h:typedef __kernel_suseconds_t suseconds_t;
time_tinclude/asm/posix_types.h:typedef long __kernel_time_t;include/linux/types.h:typedef __kernel_time_t time_t;
uid_tinclude/asm/posix_types.h:typedef unsigned short __kernel_uid_t;
include/linux/types.h:typedef __kernel_uid_t uid_t;
uintinclude/linux/types.h:typedef unsigned int uint;
__u32include/asm/types.h:typedef unsigned int __u32;

 

Struct Declarations

Here are the struct declarations for the table at the top:

exception_table_entryinclude/linux/module.h:
struct exception_table_entry {
     unsigned long insn, fixup;
};
iovecinclude/linux/uio.h:
struct iovec {
     void *iov_base;
     __kernel_size_t iov_len;};
itimervalinclude/linux/time.h:
struct itimerval {
     struct timeval it_interval; /* timer interval */
     struct timeval it_value; /* current value */
};
kernel_syminclude/linux/module.h:
struct kernel_sym {
     unsigned long value;
     char name[60];
};
mmap_arg_structarch/i386/kernel/sys_i386.c:
struct mmap_arg_struct {
     unsigned long addr;
     unsigned long len;
     unsigned long prot;
     unsigned long flags;
     unsigned long fd;
     unsigned long offset;
};
moduleinclude/linux/module.h:
struct module {
     unsigned long size_of_struct; /* sizeof(module) */
     struct module *next;
     const char *name;
     unsigned long size;
     union {
          atomic_t usecount;
          long pad;
     } uc;
     unsigned long flags; /* AUTOCLEAN et al */
     unsigned nsyms;
     unsigned ndeps;

     struct module_symbol *syms;
     struct module_ref *deps;
     struct module_ref *refs;
     int (*init)(void);
     void (*cleanup)(void);
     const struct exception_table_entry *ex_table_start;
     const struct exception_table_entry *ex_table_end;
/* Members past this point are extensions to the basic
module support and are optional. Use mod_opt_member()
to examine them. */
     const struct module_persist *persist_start;
     const struct module_persist *persist_end;
     int (*can_unload)(void);
};
module_persistinclude/linux/module.h:
struct module_persist; /* yes, it's empty */
module_refinclude/linux/module.h:
struct module_ref {
     struct module *dep; /* "parent" pointer */
     struct module *ref; /* "child" pointer */
     struct module_ref *next_ref;
};
module_symbolinclude/linux/module.h:
struct module_symbol {
     unsigned long value;
     const char *name;
};
new_utsnameinclude/linux/utsname.h:
struct new_utsname {
     char sysname[65];
     char nodename[65];
     char release[65];
     char version[65];
     char machine[65];
     char domainname[65];
};
__old_kernel_statinclude/asm/stat.h:
struct __old_kernel_stat {
     unsigned short st_dev;
     unsigned short st_ino;
     unsigned short st_mode;
     unsigned short st_nlink;
     unsigned short st_uid;
     unsigned short st_gid;
     unsigned short st_rdev;
     unsigned long st_size;
     unsigned long st_atime;
     unsigned long st_mtime;
     unsigned long st_ctime;
};
oldold_utsnameinclude/linux/utsname.h:
struct oldold_utsname {
     char sysname[9];
     char nodename[9];
     char release[9];
     char version[9];
     char machine[9];
};
old_sigactioninclude/asm/signal.h:
struct old_sigaction {
     __sighandler_t sa_handler;
     old_sigset_t sa_mask;
     unsigned long sa_flags;
     void (*sa_restorer)(void);
};
old_utsnameinclude/linux/utsname.h:
struct old_utsname {
     char sysname[65];
     char nodename[65];
     char release[65];
     char version[65];
     char machine[65];
};
pollfdinclude/asm/poll.h:
struct pollfd {
     int fd;
     short events;
     short revents;
};
pt_regsinclude/asm/ptrace.h:
struct pt_regs {
     long ebx;
     long ecx;
     long edx;
     long esi;
     long edi;
     long ebp;
     long eax;
     int xds;
     int xes;
     long orig_eax;
     long eip;
     int xcs;
     long eflags;
     long esp;
     int xss;
};
revectored_structinclude/asm/vm86.h:
struct revectored_struct {
     unsigned long __map[8];
};
rlimitinclude/linux/resource.h:
struct rlimit {
     long rlim_cur;
     long rlim_max;
};
rusageinclude/linux/resource.h:
struct rusage {
     struct timeval ru_utime; /* user time used */
     struct timeval ru_stime; /* system time used */
     long ru_maxrss; /* maximum resident set size */
     long ru_ixrss; /* integral shared memory size */
     long ru_idrss; /* integral unshared data size */
     long ru_isrss; /* integral unshared stack size */
     long ru_minflt; /* page reclaims */
     long ru_majflt; /* page faults */
     long ru_nswap; /* swaps */
     long ru_inblock; /* block input operations */
     long ru_oublock; /* block output operations */
     long ru_msgsnd; /* messages sent */
     long ru_msgrcv; /* messages received */
     long ru_nsignals; /* signals received */
     long ru_nvcsw; /* voluntary context switches */
     long ru_nivcsw; /* involuntary '' */
};
sched_paraminclude/linux/sched.h:
struct sched_param {
     int sched_priority;
};
sel_arg_structarch/i386/kernel/sys_i386.c:
struct sel_arg_struct {
     unsigned long n;
     fd_set *inp, *outp, *exp;
     struct timeval *tvp;
};
sigactioninclude/asm/signal.h:
struct sigaction {
     __sighandler_t sa_handler;
     unsigned long sa_flags;
     void (*sa_restorer)(void);
     sigset_t sa_mask; /* mask last for extensibility */
};
statinclude/asm/stat.h:
struct stat {
     unsigned short st_dev;
     unsigned short __pad1;
     unsigned long st_ino;
     unsigned short st_mode;
     unsigned short st_nlink;
     unsigned short st_uid;
     unsigned short st_gid;
     unsigned short st_rdev;
     unsigned short __pad2;
     unsigned long st_size;
     unsigned long st_blksize;
     unsigned long st_blocks;
     unsigned long st_atime;
     unsigned long __unused1;
     unsigned long st_mtime;
     unsigned long __unused2;
     unsigned long st_ctime;
     unsigned long __unused3;
     unsigned long __unused4;
     unsigned long __unused5;
statfsinclude/asm/statfs.h:
struct statfs {
     long f_type;
     long f_bsize;
     long f_blocks;
     long f_bfree;
     long f_bavail;
     long f_files;
     long f_ffree;
     __kernel_fsid_t f_fsid;
     long f_namelen;
     long f_spare[6];
};
__sysctl_argsinclude/linux/sysctl.h
struct __sysctl_args {
     int *name;
     int nlen;
     void *oldval;
     size_t *oldlenp;
     void *newval;
     size_t newlen;
     unsigned long __unused[4];
};
sysinfoinclude/linux/kernel.h:
struct sysinfo {
     long uptime; /* Seconds since boot */
     unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
     unsigned long totalram; /* Total usable main memory size */
     unsigned long freeram; /* Available memory size */
     unsigned long sharedram; /* Amount of shared memory */
     unsigned long bufferram; /* Memory used by buffers */
     unsigned long totalswap; /* Total swap space size */
     unsigned long freeswap; /* swap space still available */
     unsigned short procs; /* Number of current processes */
     char _f[22]; /* Pads structure to 64 bytes */
};
timexinclude/linux/timex.h:
struct timex {
     unsigned int modes; /* mode selector */
     long offset; /* time offset (usec) */
     long freq; /* frequency offset (scaled ppm) */
     long maxerror; /* maximum error (usec) */
     long esterror; /* estimated error (usec) */
     int status; /* clock command/status */
     long constant; /* pll time constant */
     long precision; /* clock precision (usec) (read only) */
     long tolerance; /* clock frequency tolerance (ppm)
      * (read only)
      */
     struct timeval time; /* (read only) */
     long tick; /* (modified) usecs between clock ticks */
     long ppsfreq; /* pps frequency (scaled ppm) (ro) */
     long jitter; /* pps jitter (us) (ro) */
     int shift; /* interval duration (s) (shift) (ro) */
     long stabil; /* pps stability (scaled ppm) (ro) */
     long jitcnt; /* jitter limit exceeded (ro) */
     long calcnt; /* calibration intervals (ro) */
     long errcnt; /* calibration errors (ro) */
     long stbcnt; /* stability limit exceeded (ro) */

     int :32; int :32; int :32; int :32;
     int :32; int :32; int :32; int :32;
     int :32; int :32; int :32; int :32;
};
timespecinclude/linux/time.h:
struct timespec {
     time_t tv_sec; /* seconds */
     long tv_nsec; /* nanoseconds */
};
timevalinclude/linux/time.h:
struct timeval {
     time_t tv_sec; /* seconds */
     suseconds_t tv_usec; /* microseconds */
};
timezoneinclude/linux/time.h:
struct timezone {
     int tz_minuteswest; /* minutes west of Greenwich */
     int tz_dsttime; /* type of dst correction */
};
tmsinclude/linux/times.h
struct tms {
     clock_t tms_utime;
     clock_t tms_stime;
     clock_t tms_cutime;
     clock_t tms_cstime;
};
ustatinclude/linux/types.h:
struct ustat {
     __kernel_daddr_t f_tfree;
     __kernel_ino_t f_tinode;
     char f_fname[6];
     char f_fpack[6];
};
utimbufinclude/linux/utime.h:
struct utimbuf {
     time_t actime;
     time_t modtime;
};
vm86plus_info_structinclude/asm/vm86.h:
struct vm86plus_info_struct {
     unsigned long force_return_for_pic:1;
     unsigned long vm86dbg_active:1;
     unsigned long vm86dbg_TFpendig:1;
     unsigned long unused:28;
     unsigned long is_vm86pus:1;
     unsigned char vm86dbg_intxxtab[32];
};
vm86plus_structinclude/asm/vm86.h:
struct vm86plus_struct {
     struct vm86_regs regs;
     unsigned long flags;
     unsigned long screen_bitmap;
     unsigned long cpu_type;
     struct revectored_struct int_revectored;
     struct revectored_struct int21_revectored;
     struct vm86plus_info_struct vm86plus;
};
vm86_regsinclude/asm/vm86.h:
struct vm86_regs {
/* normal regs, with special meaning for the segment descriptors.. */
     long ebx;
     long ecx;
     long edx;
     long esi;
     long edi;
     long ebp;
     long eax;
     long __null_ds;
     long __null_es;
     long __null_fs;
     long __null_gs;
     long orig_eax;
     long eip;
     unsigned short cs, __csh;
     long eflags;
     long esp;
     unsigned short ss, __ssh;
/* these are specific to v86 mode: */
     unsigned short es, __esh;
     unsigned short ds, __dsh;
     unsigned short fs, __fsh;
     unsigned short gs, __gsh;
};
vm86_structinclude/asm/vm86.h:
struct vm86_struct {
     struct vm86_regs regs;
     unsigned long flags;
     unsigned long screen_bitmap;
     unsigned long cpu_type;
     struct revectored_struct int_revectored;
     struct revectored_struct int21_revectored;
};

©2004, Gary L. Burt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值