]> gitweb.factorcode.org Git - factor.git/blob - core/io/unix/syscalls.factor
eafa6df7a38768444acc4c6f08f3e535378da0f7
[factor.git] / core / io / unix / syscalls.factor
1 ! Copyright (C) 2005 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 IN: unix-internals
4 USING: alien errors kernel math namespaces ;
5
6 ! Alien wrappers for various Unix libc functions.
7
8 LIBRARY: factor
9 FUNCTION: int err_no ( ) ;
10
11 LIBRARY: libc
12 FUNCTION: char* strerror ( int errno ) ;
13 FUNCTION: int open ( char* path, int flags, int prot ) ;
14 FUNCTION: void close ( int fd ) ;
15 FUNCTION: int fcntl ( int fd, int cmd, int arg ) ;
16 FUNCTION: ssize_t read ( int fd, ulong buf, size_t nbytes ) ;
17 FUNCTION: ssize_t write ( int fd, ulong buf, size_t nbytes ) ;
18
19 BEGIN-STRUCT: timeval
20     FIELD: long sec
21     FIELD: long usec
22 END-STRUCT
23
24 : make-timeval ( ms -- timeval )
25     1000 /mod 1000 *
26     "timeval" <c-object>
27     [ set-timeval-usec ] keep
28     [ set-timeval-sec ] keep ;
29
30 FUNCTION: int select ( int nfds, void* readfds, void* writefds, void* exceptfds, timeval* timeout ) ;
31
32 BEGIN-STRUCT: hostent
33     FIELD: char* name
34     FIELD: void* aliases
35     FIELD: int addrtype
36     FIELD: int length
37     FIELD: void* addr-list
38 END-STRUCT
39
40 : hostent-addr hostent-addr-list *void* *uint ;
41
42 : gethostbyname ( name -- hostent )
43     "hostent*" "libc" "gethostbyname" [ "char*" ] alien-invoke ;
44
45 FUNCTION: int socket ( int domain, int type, int protocol ) ;
46 FUNCTION: int setsockopt ( int s, int level, int optname, void* optval, socklen_t optlen ) ;
47 FUNCTION: int connect ( int s, sockaddr-in* name, socklen_t namelen ) ;
48 FUNCTION: int bind ( int s, sockaddr-in* name, socklen_t namelen ) ;
49 FUNCTION: int listen ( int s, int backlog ) ;
50 FUNCTION: int accept ( int s, sockaddr-in* sockaddr, socklen_t* socklen ) ;
51 FUNCTION: uint htonl ( uint n ) ;
52 FUNCTION: ushort htons ( ushort n ) ;
53 FUNCTION: uint ntohl ( uint n ) ;
54 FUNCTION: ushort ntohs ( ushort n ) ;