]> gitweb.factorcode.org Git - factor.git/blob - basis/unix/ffi/linux/linux.factor
Temporary kludge can safely be removed
[factor.git] / basis / unix / ffi / linux / linux.factor
1 ! Copyright (C) 2010 Doug Coleman.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax classes.struct unix.time
4 unix.types ;
5 IN: unix.ffi
6
7 CONSTANT: MAXPATHLEN 1024
8
9 CONSTANT: O_RDONLY   0x0000
10 CONSTANT: O_WRONLY   0x0001
11 CONSTANT: O_RDWR     0x0002
12 CONSTANT: O_CREAT    0x0040
13 CONSTANT: O_EXCL     0x0080
14 CONSTANT: O_NOCTTY   0x0100
15 CONSTANT: O_TRUNC    0x0200
16 CONSTANT: O_APPEND   0x0400
17 CONSTANT: O_NONBLOCK 0x0800
18
19 ALIAS: O_NDELAY O_NONBLOCK
20
21 CONSTANT: SOL_SOCKET 1
22
23 CONSTANT: FD_SETSIZE 1024
24
25 CONSTANT: SO_DEBUG 1
26 CONSTANT: SO_REUSEADDR 2
27 CONSTANT: SO_TYPE 3
28 CONSTANT: SO_ERROR 4
29 CONSTANT: SO_DONTROUTE 5
30 CONSTANT: SO_BROADCAST 6
31 CONSTANT: SO_SNDBUF 7
32 CONSTANT: SO_RCVBUF 8
33 CONSTANT: SO_KEEPALINE 9
34 CONSTANT: SO_OOBINLINE 10
35 CONSTANT: SO_SNDTIMEO 0x15
36 CONSTANT: SO_RCVTIMEO 0x14
37
38 CONSTANT: F_SETFD 2
39 CONSTANT: FD_CLOEXEC 1
40
41 CONSTANT: F_SETFL 4
42
43 STRUCT: addrinfo
44     { flags int }
45     { family int }
46     { socktype int }
47     { protocol int }
48     { addrlen socklen_t }
49     { addr void* }
50     { canonname c-string }
51     { next addrinfo* } ;
52
53 STRUCT: sockaddr-in
54     { family ushort }
55     { port ushort }
56     { addr in_addr_t }
57     { unused longlong } ;
58
59 STRUCT: sockaddr-in6
60     { family ushort }
61     { port ushort }
62     { flowinfo uint }
63     { addr uchar[16] }
64     { scopeid uint } ;
65
66 CONSTANT: max-un-path 108
67
68 STRUCT: sockaddr-un
69     { family ushort }
70     { path { char max-un-path } } ;
71
72 CONSTANT: SOCK_STREAM 1
73 CONSTANT: SOCK_DGRAM 2
74 CONSTANT: SOCK_RAW 3
75
76 CONSTANT: AF_UNSPEC 0
77 CONSTANT: AF_UNIX 1
78 CONSTANT: AF_INET 2
79 CONSTANT: AF_INET6 10
80
81 ALIAS: PF_UNSPEC AF_UNSPEC
82 ALIAS: PF_UNIX AF_UNIX
83 ALIAS: PF_INET AF_INET
84 ALIAS: PF_INET6 AF_INET6
85
86 CONSTANT: IPPROTO_TCP 6
87 CONSTANT: IPPROTO_UDP 17
88
89 ! Flags only valid in gnu libcs' getaddrinfo
90 CONSTANT: AI_IDN                        0x0040
91 CONSTANT: AI_CANONIDN                   0x0080
92 CONSTANT: AI_IDN_ALLOW_UNASSIGNED       0x0100
93 CONSTANT: AI_IDN_USE_STD3_ASCII_RULES   0x0200
94 CONSTANT: AI_NUMERICSERV                0x0400
95
96
97 CONSTANT: SEEK_SET 0
98 CONSTANT: SEEK_CUR 1
99 CONSTANT: SEEK_END 2
100
101 STRUCT: passwd
102     { pw_name c-string }
103     { pw_passwd c-string }
104     { pw_uid uid_t }
105     { pw_gid gid_t }
106     { pw_gecos c-string }
107     { pw_dir c-string }
108     { pw_shell c-string } ;
109
110 ! dirent64
111 STRUCT: dirent
112     { d_ino ulonglong }
113     { d_off longlong }
114     { d_reclen ushort }
115     { d_type uchar }
116     { d_name char[256] } ;
117
118 FUNCTION: int open64 ( c-string path, int flags, int prot )
119 FUNCTION: dirent* readdir64 ( DIR* dirp )
120 FUNCTION: int readdir64_r ( void* dirp, dirent* entry, dirent** result )
121
122 FUNCTION: ssize_t sendfile ( int out_fd, int in_fd, off_t* offset, size_t count )
123
124 FUNCTION: int pipe2 ( int* filedes, int flags )
125
126 CONSTANT: __UT_LINESIZE 32
127 CONSTANT: __UT_NAMESIZE 32
128 CONSTANT: __UT_HOSTSIZE 256
129
130 STRUCT: exit_status
131     { e_termination short }
132     { e_exit short } ;
133
134 STRUCT: utmpx
135     { ut_type short }
136     { ut_pid pid_t }
137     { ut_line char[__UT_LINESIZE] }
138     { ut_id char[4] }
139     { ut_user char[__UT_NAMESIZE] }
140     { ut_host char[__UT_HOSTSIZE] }
141     { ut_exit exit_status }
142     { ut_session long }
143     { ut_tv timeval }
144     { ut_addr_v6 int[4] }
145     { __unused char[20] } ;