]> gitweb.factorcode.org Git - factor.git/blob - basis/unix/linux/linux.factor
Fixing various test failures caused by C type parser change, and clarify C type docs...
[factor.git] / basis / unix / linux / linux.factor
1 ! Copyright (C) 2005, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax alien system classes.struct
4 unix.types ;
5 IN: unix
6
7 ! Linux.
8
9 CONSTANT: MAXPATHLEN 1024
10
11 CONSTANT: O_RDONLY   HEX: 0000
12 CONSTANT: O_WRONLY   HEX: 0001
13 CONSTANT: O_RDWR     HEX: 0002
14 CONSTANT: O_CREAT    HEX: 0040
15 CONSTANT: O_EXCL     HEX: 0080
16 CONSTANT: O_NOCTTY   HEX: 0100
17 CONSTANT: O_TRUNC    HEX: 0200
18 CONSTANT: O_APPEND   HEX: 0400
19 CONSTANT: O_NONBLOCK HEX: 0800
20
21 ALIAS: O_NDELAY O_NONBLOCK
22
23 CONSTANT: SOL_SOCKET 1
24
25 CONSTANT: FD_SETSIZE 1024
26
27 CONSTANT: SO_REUSEADDR 2
28 CONSTANT: SO_OOBINLINE 10
29 CONSTANT: SO_SNDTIMEO HEX: 15
30 CONSTANT: SO_RCVTIMEO HEX: 14
31
32 CONSTANT: F_SETFD 2
33 CONSTANT: FD_CLOEXEC 1
34
35 CONSTANT: F_SETFL 4
36
37 STRUCT: addrinfo
38     { flags int }
39     { family int }
40     { socktype int }
41     { protocol int }
42     { addrlen socklen_t }
43     { addr void* }
44     { canonname char* }
45     { next addrinfo* } ;
46
47 STRUCT: sockaddr-in
48     { family ushort }
49     { port ushort }
50     { addr in_addr_t }
51     { unused longlong } ;
52
53 STRUCT: sockaddr-in6
54     { family ushort }
55     { port ushort }
56     { flowinfo uint }
57     { addr uchar[16] }
58     { scopeid uint } ;
59
60 CONSTANT: max-un-path 108
61
62 STRUCT: sockaddr-un
63     { family ushort }
64     { path { char max-un-path } } ;
65
66 CONSTANT: SOCK_STREAM 1
67 CONSTANT: SOCK_DGRAM 2
68
69 CONSTANT: AF_UNSPEC 0
70 CONSTANT: AF_UNIX 1
71 CONSTANT: AF_INET 2
72 CONSTANT: AF_INET6 10
73
74 ALIAS: PF_UNSPEC AF_UNSPEC
75 ALIAS: PF_UNIX AF_UNIX
76 ALIAS: PF_INET AF_INET
77 ALIAS: PF_INET6 AF_INET6
78
79 CONSTANT: IPPROTO_TCP 6
80 CONSTANT: IPPROTO_UDP 17
81
82 CONSTANT: AI_PASSIVE 1
83
84 CONSTANT: SEEK_SET 0
85 CONSTANT: SEEK_CUR 1
86 CONSTANT: SEEK_END 2
87
88 STRUCT: passwd
89     { pw_name char* }
90     { pw_passwd char* }
91     { pw_uid uid_t }
92     { pw_gid gid_t }
93     { pw_gecos char* }
94     { pw_dir char* }
95     { pw_shell char* } ;
96
97 ! dirent64
98 STRUCT: dirent
99     { d_ino ulonglong }
100     { d_off longlong }
101     { d_reclen ushort }
102     { d_type uchar }
103     { d_name char[256] } ;
104
105 FUNCTION: int open64 ( char* path, int flags, int prot ) ;
106 FUNCTION: dirent* readdir64 ( DIR* dirp ) ;
107 FUNCTION: int readdir64_r ( void* dirp, dirent* entry, dirent** result ) ;
108
109 M: linux open-file [ open64 ] unix-system-call ;
110
111 CONSTANT: EPERM 1
112 CONSTANT: ENOENT 2
113 CONSTANT: ESRCH 3
114 CONSTANT: EINTR 4
115 CONSTANT: EIO 5
116 CONSTANT: ENXIO 6
117 CONSTANT: E2BIG 7
118 CONSTANT: ENOEXEC 8
119 CONSTANT: EBADF 9
120 CONSTANT: ECHILD 10
121 CONSTANT: EAGAIN 11
122 CONSTANT: ENOMEM 12
123 CONSTANT: EACCES 13
124 CONSTANT: EFAULT 14
125 CONSTANT: ENOTBLK 15
126 CONSTANT: EBUSY 16
127 CONSTANT: EEXIST 17
128 CONSTANT: EXDEV 18
129 CONSTANT: ENODEV 19
130 CONSTANT: ENOTDIR 20
131 CONSTANT: EISDIR 21
132 CONSTANT: EINVAL 22
133 CONSTANT: ENFILE 23
134 CONSTANT: EMFILE 24
135 CONSTANT: ENOTTY 25
136 CONSTANT: ETXTBSY 26
137 CONSTANT: EFBIG 27
138 CONSTANT: ENOSPC 28
139 CONSTANT: ESPIPE 29
140 CONSTANT: EROFS 30
141 CONSTANT: EMLINK 31
142 CONSTANT: EPIPE 32
143 CONSTANT: EDOM 33
144 CONSTANT: ERANGE 34
145 CONSTANT: EDEADLK 35
146 CONSTANT: ENAMETOOLONG 36
147 CONSTANT: ENOLCK 37
148 CONSTANT: ENOSYS 38
149 CONSTANT: ENOTEMPTY 39
150 CONSTANT: ELOOP 40
151 ALIAS: EWOULDBLOCK EAGAIN
152 CONSTANT: ENOMSG 42
153 CONSTANT: EIDRM 43
154 CONSTANT: ECHRNG 44
155 CONSTANT: EL2NSYNC 45
156 CONSTANT: EL3HLT 46
157 CONSTANT: EL3RST 47
158 CONSTANT: ELNRNG 48
159 CONSTANT: EUNATCH 49
160 CONSTANT: ENOCSI 50
161 CONSTANT: EL2HLT 51
162 CONSTANT: EBADE 52
163 CONSTANT: EBADR 53
164 CONSTANT: EXFULL 54
165 CONSTANT: ENOANO 55
166 CONSTANT: EBADRQC 56
167 CONSTANT: EBADSLT 57
168 ALIAS: EDEADLOCK EDEADLK
169 CONSTANT: EBFONT 59
170 CONSTANT: ENOSTR 60
171 CONSTANT: ENODATA 61
172 CONSTANT: ETIME 62
173 CONSTANT: ENOSR 63
174 CONSTANT: ENONET 64
175 CONSTANT: ENOPKG 65
176 CONSTANT: EREMOTE 66
177 CONSTANT: ENOLINK 67
178 CONSTANT: EADV 68
179 CONSTANT: ESRMNT 69
180 CONSTANT: ECOMM 70
181 CONSTANT: EPROTO 71
182 CONSTANT: EMULTIHOP 72
183 CONSTANT: EDOTDOT 73
184 CONSTANT: EBADMSG 74
185 CONSTANT: EOVERFLOW 75
186 CONSTANT: ENOTUNIQ 76
187 CONSTANT: EBADFD 77
188 CONSTANT: EREMCHG 78
189 CONSTANT: ELIBACC 79
190 CONSTANT: ELIBBAD 80
191 CONSTANT: ELIBSCN 81
192 CONSTANT: ELIBMAX 82
193 CONSTANT: ELIBEXEC 83
194 CONSTANT: EILSEQ 84
195 CONSTANT: ERESTART 85
196 CONSTANT: ESTRPIPE 86
197 CONSTANT: EUSERS 87
198 CONSTANT: ENOTSOCK 88
199 CONSTANT: EDESTADDRREQ 89
200 CONSTANT: EMSGSIZE 90
201 CONSTANT: EPROTOTYPE 91
202 CONSTANT: ENOPROTOOPT 92
203 CONSTANT: EPROTONOSUPPORT 93
204 CONSTANT: ESOCKTNOSUPPORT 94
205 CONSTANT: EOPNOTSUPP 95
206 CONSTANT: EPFNOSUPPORT 96
207 CONSTANT: EAFNOSUPPORT 97
208 CONSTANT: EADDRINUSE 98
209 CONSTANT: EADDRNOTAVAIL 99
210 CONSTANT: ENETDOWN 100
211 CONSTANT: ENETUNREACH 101
212 CONSTANT: ENETRESET 102
213 CONSTANT: ECONNABORTED 103
214 CONSTANT: ECONNRESET 104
215 CONSTANT: ENOBUFS 105
216 CONSTANT: EISCONN 106
217 CONSTANT: ENOTCONN 107
218 CONSTANT: ESHUTDOWN 108
219 CONSTANT: ETOOMANYREFS 109
220 CONSTANT: ETIMEDOUT 110
221 CONSTANT: ECONNREFUSED 111
222 CONSTANT: EHOSTDOWN 112
223 CONSTANT: EHOSTUNREACH 113
224 CONSTANT: EALREADY 114
225 CONSTANT: EINPROGRESS 115
226 CONSTANT: ESTALE 116
227 CONSTANT: EUCLEAN 117
228 CONSTANT: ENOTNAM 118
229 CONSTANT: ENAVAIL 119
230 CONSTANT: EISNAM 120
231 CONSTANT: EREMOTEIO 121
232 CONSTANT: EDQUOT 122
233 CONSTANT: ENOMEDIUM 123
234 CONSTANT: EMEDIUMTYPE 124
235 CONSTANT: ECANCELED 125
236 CONSTANT: ENOKEY 126
237 CONSTANT: EKEYEXPIRED 127
238 CONSTANT: EKEYREVOKED 128
239 CONSTANT: EKEYREJECTED 129
240 CONSTANT: EOWNERDEAD 130
241 CONSTANT: ENOTRECOVERABLE 131