]> gitweb.factorcode.org Git - factor.git/blob - basis/unix/ffi/linux/linux.factor
31afb2365dd3047f0b1ce5fb0b1f21a113e7e6ec
[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.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_REUSEADDR 2
26 CONSTANT: SO_DONTROUTE 5
27 CONSTANT: SO_BROADCAST 6
28 CONSTANT: SO_SNDBUF 7
29 CONSTANT: SO_RCVBUF 8
30 CONSTANT: SO_KEEPALINE 9
31 CONSTANT: SO_OOBINLINE 10
32 CONSTANT: SO_SNDTIMEO 0x15
33 CONSTANT: SO_RCVTIMEO 0x14
34
35 CONSTANT: F_SETFD 2
36 CONSTANT: FD_CLOEXEC 1
37
38 CONSTANT: F_SETFL 4
39
40 STRUCT: addrinfo
41     { flags int }
42     { family int }
43     { socktype int }
44     { protocol int }
45     { addrlen socklen_t }
46     { addr void* }
47     { canonname c-string }
48     { next addrinfo* } ;
49
50 STRUCT: sockaddr-in
51     { family ushort }
52     { port ushort }
53     { addr in_addr_t }
54     { unused longlong } ;
55
56 STRUCT: sockaddr-in6
57     { family ushort }
58     { port ushort }
59     { flowinfo uint }
60     { addr uchar[16] }
61     { scopeid uint } ;
62
63 CONSTANT: max-un-path 108
64
65 STRUCT: sockaddr-un
66     { family ushort }
67     { path { char max-un-path } } ;
68
69 CONSTANT: SOCK_STREAM 1
70 CONSTANT: SOCK_DGRAM 2
71 CONSTANT: SOCK_RAW 3
72
73 CONSTANT: AF_UNSPEC 0
74 CONSTANT: AF_UNIX 1
75 CONSTANT: AF_INET 2
76 CONSTANT: AF_INET6 10
77
78 ALIAS: PF_UNSPEC AF_UNSPEC
79 ALIAS: PF_UNIX AF_UNIX
80 ALIAS: PF_INET AF_INET
81 ALIAS: PF_INET6 AF_INET6
82
83 CONSTANT: IPPROTO_TCP 6
84 CONSTANT: IPPROTO_UDP 17
85
86 CONSTANT: AI_PASSIVE 1
87
88 CONSTANT: SEEK_SET 0
89 CONSTANT: SEEK_CUR 1
90 CONSTANT: SEEK_END 2
91
92 STRUCT: passwd
93     { pw_name c-string }
94     { pw_passwd c-string }
95     { pw_uid uid_t }
96     { pw_gid gid_t }
97     { pw_gecos c-string }
98     { pw_dir c-string }
99     { pw_shell c-string } ;
100
101 ! dirent64
102 STRUCT: dirent
103     { d_ino ulonglong }
104     { d_off longlong }
105     { d_reclen ushort }
106     { d_type uchar }
107     { d_name char[256] } ;
108
109 FUNCTION: int open64 ( c-string path, int flags, int prot ) ;
110 FUNCTION: dirent* readdir64 ( DIR* dirp ) ;
111 FUNCTION: int readdir64_r ( void* dirp, dirent* entry, dirent** result ) ;
112
113 FUNCTION: ssize_t sendfile ( int out_fd, int in_fd, off_t* offset, size_t count ) ;
114
115
116 CONSTANT: __UT_LINESIZE 32
117 CONSTANT: __UT_NAMESIZE 32
118 CONSTANT: __UT_HOSTSIZE 256
119
120 STRUCT: exit_status
121     { e_termination short }
122     { e_exit short } ;
123
124 STRUCT: utmpx
125     { ut_type short }
126     { ut_pid pid_t }
127     { ut_line char[__UT_LINESIZE] }
128     { ut_id char[4] }
129     { ut_user char[__UT_NAMESIZE] }
130     { ut_host char[__UT_HOSTSIZE] }
131     { ut_exit exit_status }
132     { ut_session long }
133     { ut_tv timeval }
134     { ut_addr_v6 int[4] }
135     { __unused char[20] } ;