ia32.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:6k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _ASM_X86_64_IA32_H
  2. #define _ASM_X86_64_IA32_H
  3. #include <linux/config.h>
  4. #ifdef CONFIG_IA32_EMULATION
  5. /*
  6.  * 32 bit structures for IA32 support.
  7.  */
  8. /* 32bit compatibility types */
  9. typedef unsigned int        __kernel_size_t32;
  10. typedef int        __kernel_ssize_t32;
  11. typedef int        __kernel_ptrdiff_t32;
  12. typedef int        __kernel_time_t32;
  13. typedef int        __kernel_clock_t32;
  14. typedef int        __kernel_pid_t32;
  15. typedef unsigned short        __kernel_ipc_pid_t32;
  16. typedef unsigned short        __kernel_uid_t32;
  17. typedef unsigned         __kernel_uid32_t32;
  18. typedef unsigned short        __kernel_gid_t32;
  19. typedef unsigned         __kernel_gid32_t32;
  20. typedef unsigned short        __kernel_dev_t32;
  21. typedef unsigned int        __kernel_ino_t32;
  22. typedef unsigned short        __kernel_mode_t32;
  23. typedef unsigned short        __kernel_umode_t32;
  24. typedef short        __kernel_nlink_t32;
  25. typedef int        __kernel_daddr_t32;
  26. typedef int        __kernel_off_t32;
  27. typedef unsigned int        __kernel_caddr_t32;
  28. typedef long        __kernel_loff_t32;
  29. typedef __kernel_fsid_t        __kernel_fsid_t32;
  30. /* fcntl.h */
  31. struct flock32 {
  32.        short l_type;
  33.        short l_whence;
  34.        __kernel_off_t32 l_start;
  35.        __kernel_off_t32 l_len;
  36.        __kernel_pid_t32 l_pid;
  37. };
  38. struct ia32_flock64 {
  39. short  l_type;
  40. short  l_whence;
  41. loff_t l_start;  /* unnatural alignment */
  42. loff_t l_len;
  43. pid_t  l_pid;
  44. } __attribute__((packed));
  45. #define F_GETLK64 12 /*  using 'struct flock64' */
  46. #define F_SETLK64 13
  47. #define F_SETLKW64 14
  48. #include <asm/sigcontext32.h>
  49. /* signal.h */
  50. #define _IA32_NSIG        64
  51. #define _IA32_NSIG_BPW        32
  52. #define _IA32_NSIG_WORDS        (_IA32_NSIG / _IA32_NSIG_BPW)
  53. typedef struct {
  54.        unsigned int sig[_IA32_NSIG_WORDS];
  55. } sigset32_t;
  56. struct sigaction32 {
  57.        unsigned int  sa_handler; /* Really a pointer, but need to deal 
  58.      with 32 bits */
  59.        unsigned int sa_flags;
  60.        unsigned int sa_restorer; /* Another 32 bit pointer */
  61.        sigset32_t sa_mask; /* A 32 bit mask */
  62. };
  63. typedef unsigned int old_sigset32_t; /* at least 32 bits */
  64. struct old_sigaction32 {
  65.        unsigned int  sa_handler; /* Really a pointer, but need to deal 
  66.      with 32 bits */
  67.        old_sigset32_t sa_mask; /* A 32 bit mask */
  68.        unsigned int sa_flags;
  69.        unsigned int sa_restorer; /* Another 32 bit pointer */
  70. };
  71. typedef struct sigaltstack_ia32 {
  72. unsigned int ss_sp;
  73. int ss_flags;
  74. unsigned int ss_size;
  75. } stack_ia32_t;
  76. struct ucontext_ia32 {
  77. unsigned int   uc_flags;
  78. unsigned int    uc_link;
  79. stack_ia32_t   uc_stack;
  80. struct sigcontext_ia32 uc_mcontext;
  81. sigset32_t   uc_sigmask; /* mask last for extensibility */
  82. };
  83. struct stat32 {
  84.        unsigned short st_dev;
  85.        unsigned short __pad1;
  86.        unsigned int st_ino;
  87.        unsigned short st_mode;
  88.        unsigned short st_nlink;
  89.        unsigned short st_uid;
  90.        unsigned short st_gid;
  91.        unsigned short st_rdev;
  92.        unsigned short __pad2;
  93.        unsigned int  st_size;
  94.        unsigned int  st_blksize;
  95.        unsigned int  st_blocks;
  96.        unsigned int  st_atime;
  97.        unsigned int  __unused1;
  98.        unsigned int  st_mtime;
  99.        unsigned int  __unused2;
  100.        unsigned int  st_ctime;
  101.        unsigned int  __unused3;
  102.        unsigned int  __unused4;
  103.        unsigned int  __unused5;
  104. };
  105. /* This matches struct stat64 in glibc2.2, hence the absolutely
  106.  * insane amounts of padding around dev_t's.
  107.  */
  108. struct stat64 {
  109. unsigned long long st_dev;
  110. unsigned char __pad0[4];
  111. #define STAT64_HAS_BROKEN_ST_INO 1
  112. unsigned int __st_ino;
  113. unsigned int st_mode;
  114. unsigned int st_nlink;
  115. unsigned int st_uid;
  116. unsigned int st_gid;
  117. unsigned long long st_rdev;
  118. unsigned char __pad3[4];
  119. long long st_size;
  120. unsigned int st_blksize;
  121. long long st_blocks;/* Number 512-byte blocks allocated. */
  122. unsigned long long st_atime;
  123. unsigned long long st_mtime;
  124. unsigned long long st_ctime;
  125. unsigned long long st_ino;
  126. } __attribute__((packed));
  127. struct statfs32 {
  128.        int f_type;
  129.        int f_bsize;
  130.        int f_blocks;
  131.        int f_bfree;
  132.        int f_bavail;
  133.        int f_files;
  134.        int f_ffree;
  135.        __kernel_fsid_t32 f_fsid;
  136.        int f_namelen;  /* SunOS ignores this field. */
  137.        int f_spare[6];
  138. };
  139. typedef union sigval32 {
  140. int sival_int;
  141. unsigned int sival_ptr;
  142. } sigval_t32;
  143. typedef struct siginfo32 {
  144. int si_signo;
  145. int si_errno;
  146. int si_code;
  147. union {
  148. int _pad[((128/sizeof(int)) - 3)];
  149. /* kill() */
  150. struct {
  151. unsigned int _pid; /* sender's pid */
  152. unsigned int _uid; /* sender's uid */
  153. } _kill;
  154. /* POSIX.1b timers */
  155. struct {
  156. unsigned int _timer1;
  157. unsigned int _timer2;
  158. } _timer;
  159. /* POSIX.1b signals */
  160. struct {
  161. unsigned int _pid; /* sender's pid */
  162. unsigned int _uid; /* sender's uid */
  163. sigval_t32 _sigval;
  164. } _rt;
  165. /* SIGCHLD */
  166. struct {
  167. unsigned int _pid; /* which child */
  168. unsigned int _uid; /* sender's uid */
  169. int _status; /* exit code */
  170. __kernel_clock_t32 _utime;
  171. __kernel_clock_t32 _stime;
  172. } _sigchld;
  173. /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
  174. struct {
  175. unsigned int _addr; /* faulting insn/memory ref. */
  176. } _sigfault;
  177. /* SIGPOLL */
  178. struct {
  179. int _band; /* POLL_IN, POLL_OUT, POLL_MSG */
  180. int _fd;
  181. } _sigpoll;
  182. } _sifields;
  183. } siginfo_t32;
  184. struct ustat32 {
  185. __u32 f_tfree;
  186. __kernel_ino_t32 f_tinode;
  187. char f_fname[6];
  188. char f_fpack[6];
  189. };
  190. struct iovec32 { 
  191. unsigned int iov_base; 
  192. int iov_len; 
  193. };
  194. #ifdef __KERNEL__
  195. struct iovec *get_iovec32(struct iovec32 *iov32, struct iovec *iov_buf, u32 count, int type);
  196. #endif
  197. #endif /* !CONFIG_IA32_SUPPORT */
  198.  
  199. #endif