Move multiplexer foreign bindings to syscalls package.
[iolib.git] / syscalls / ffi-wrappers-unix.lisp
blob484972792984fbc1730d3f9fac9e376fd0176a01
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
2 ;;;
3 ;;; --- FFI wrappers.
4 ;;;
6 (in-package :iolib.syscalls)
8 (c "#if defined(__linux__)")
9 (c "#undef _GNU_SOURCE")
10 (define "_XOPEN_SOURCE" 600)
11 (define "_LARGEFILE_SOURCE")
12 (define "_LARGEFILE64_SOURCE")
13 (define "_FILE_OFFSET_BITS" 64)
14 (c "#endif")
17 ;;;-------------------------------------------------------------------------
18 ;;; ERRNO-related functions
19 ;;;-------------------------------------------------------------------------
21 (include "errno.h")
23 (declaim (inline %sys-errno))
24 (defwrapper* ("iolib_get_errno" %sys-errno) :int
26 "return errno;")
28 (declaim (inline %%sys-set-errno))
29 (defwrapper* ("iolib_set_errno" %%sys-set-errno) :int
30 ((value :int))
31 "errno = value;"
32 "return errno;")
35 ;;;-------------------------------------------------------------------------
36 ;;; Socket message readers
37 ;;;-------------------------------------------------------------------------
39 (include "stdlib.h") ; needed on FreeBSD to define NULL
40 (include "sys/socket.h")
42 (declaim (inline %sys-cmsg-space))
43 (defwrapper* ("cmsg_space" %sys-cmsg-space) :unsigned-int
44 ((data-size :unsigned-int))
45 "return CMSG_SPACE(data_size);")
47 (declaim (inline %sys-cmsg-len))
48 (defwrapper* ("cmsg_len" %sys-cmsg-len) :unsigned-int
49 ((data-size :unsigned-int))
50 "return CMSG_LEN(data_size);")
52 (declaim (inline %sys-cmsg-firsthdr))
53 (defwrapper* ("cmsg_firsthdr" %sys-cmsg-firsthdr) :pointer
54 ((msg ("struct msghdr*" :pointer)))
55 "return CMSG_FIRSTHDR(msg);")
57 (declaim (inline %sys-cmsg-data))
58 (defwrapper* ("cmsg_data" %sys-cmsg-data) :pointer
59 ((cmsg ("struct cmsghdr*" :pointer)))
60 "return CMSG_DATA(cmsg);")