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