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