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