Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | #ifndef _LINUX_TYPES_H #define _LINUX_TYPES_H #ifndef _SIZE_T #define _SIZE_T typedef unsigned int size_t; #endif #ifndef _SSIZE_T #define _SSIZE_T typedef int ssize_t; #endif #ifndef _TIME_T #define _TIME_T typedef long time_t; #endif #ifndef _CLOCK_T #define _CLOCK_T typedef long clock_t; #endif #ifndef _PTRDIFF_T #define _PTRDIFF_T typedef int ptrdiff_t; #endif #ifndef NULL #define NULL ((void *) 0) #endif typedef int pid_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef unsigned short dev_t; #ifdef OLD_LINUX typedef unsigned short ino_t; #else typedef unsigned long ino_t; #endif typedef unsigned short mode_t; typedef unsigned short umode_t; typedef unsigned short nlink_t; typedef int daddr_t; typedef long off_t; /* bsd */ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; /* sysv */ typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; typedef char *caddr_t; typedef unsigned char cc_t; typedef unsigned int speed_t; typedef unsigned long tcflag_t; /* * This allows for 256 file descriptors: if NR_OPEN is ever grown beyond that * you'll have to change this too. But 256 fd's seem to be enough even for such * "real" unices like SunOS, so hopefully this is one limit that doesn't have * to be changed. * * Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in <sys/time.h> * (and thus <linux/time.h>) - but this is a more logical place for them. Solved * by having dummy defines in <sys/time.h>. */ /* * Those macros may have been defined in <gnu/types.h>. But we always * use the ones here. */ #undef __FDSET_LONGS #define __FDSET_LONGS 8 typedef struct fd_set { unsigned long fds_bits [__FDSET_LONGS]; } fd_set; #undef __NFDBITS #define __NFDBITS (8 * sizeof(unsigned long)) #undef __FD_SETSIZE #define __FD_SETSIZE (__FDSET_LONGS*__NFDBITS) #undef __FD_SET #define __FD_SET(fd,fdsetp) \ __asm__ __volatile__("btsl %1,%0": \ "=m" (*(fd_set *) (fdsetp)):"r" ((int) (fd))) #undef __FD_CLR #define __FD_CLR(fd,fdsetp) \ __asm__ __volatile__("btrl %1,%0": \ "=m" (*(fd_set *) (fdsetp)):"r" ((int) (fd))) #undef __FD_ISSET #define __FD_ISSET(fd,fdsetp) (__extension__ ({ \ unsigned char __result; \ __asm__ __volatile__("btl %1,%2 ; setb %0" \ :"=q" (__result) :"r" ((int) (fd)), \ "m" (*(fd_set *) (fdsetp))); \ __result; })) #undef __FD_ZERO #define __FD_ZERO(fdsetp) \ __asm__ __volatile__("cld ; rep ; stosl" \ :"=m" (*(fd_set *) (fdsetp)) \ :"a" (0), "c" (__FDSET_LONGS), \ "D" ((fd_set *) (fdsetp)) :"cx","di") struct ustat { daddr_t f_tfree; ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; #endif |