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