summaryrefslogtreecommitdiff
path: root/guix/build/syscalls.scm
Commit message (Collapse)AuthorAge
* syscalls: Use 'syscall->procedure' everywhere.Ludovic Courtès2016-06-13
| | | | | * guix/build/syscalls.scm (mkdtemp!, setns, %ioctl, network-interfaces): (free-ifaddrs): Use 'syscall->procedure'.
* utils: 'with-atomic-file-output' calls 'fdatasync'.Ludovic Courtès2016-06-13
| | | | | | | | | Suggested by Danny Milosavljevic <dannym@scratchpost.org> at <https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00456.html>. * guix/build/syscalls.scm (fdatasync): New procedure. * guix/utils.scm (with-atomic-file-output): Use it. Use 'close-port' instead of 'close'.
* syscalls: Use 'define-c-struct' for 'fcntl-flock'.Ludovic Courtès2016-05-06
| | | | | | * guix/build/syscalls.scm (%struct-flock): Use 'define-c-struct'. (fcntl-flock): Use 'write-flock!' and 'make-bytevector' instead of 'make-c-struct'.
* utils: Move 'fcntl-flock' to (guix build syscalls).Ludovic Courtès2016-05-06
| | | | | | | | | | | * guix/utils.scm (%struct-flock, F_SETLKW, F_SETLK, F_xxLCK) (fcntl-flock): Move to... * guix/build/syscalls.scm: ... here. New variables. * guix/nar.scm: Adjust imports accordingly. * tests/utils.scm ("fcntl-flock wait", "fcntl-flock non-blocking"): Move to... * tests/syscalls.scm: ... here. New tests. (temp-file): New variable.
* syscalls: Wrap TCSA* constants in 'tcsetattr-action' macro.Ludovic Courtès2016-05-03
| | | | | | | * guix/build/syscalls.scm (tcsetattr-action): New macro. (TCSANOW, TCSADRAIN, TCSAFLUSH): Remove. (tcsetattr): Adjust docstring accordingly. * tests/syscalls.scm ("tcsetattr"): Adjust accordingly.
* syscalls: Add 'tcgetattr' and 'tcsetattr' bindings.Ludovic Courtès2016-05-02
| | | | | | | | | | | * guix/build/syscalls.scm (bits->symbols-body, define-bits) (local-flags): New macros. (TCSANOW, TCSADRAIN, TCSAFLUSH): New variables. (<termios>): New record type. (%termios): New C structure. (tcgetattr, tcsetattr): New procedures. * tests/syscalls.scm ("tcgetattr ENOTTY", "tcgetattr") ("tcsetattr"): New tests.
* syscalls: Implement arrays in 'define-c-struct' and use it.Ludovic Courtès2016-05-02
| | | | | | | | | | * guix/build/syscalls.scm (sizeof*, alignof*, write-type, read-type): Add support for (array ...) forms. * guix/build/syscalls.scm (<file-system>)[spare0, spare1]: Remove. [spare]: New field. * guix/build/syscalls.scm (%statfs)[identifier]: Change to (array int 2). [spare0, spare1]: Remove. [spare]: New field.
* syscalls: 'statfs' explicitly binds 'statfs64'.Ludovic Courtès2016-04-30
| | | | * guix/build/syscalls.scm (statfs): Explicitly bind "statfs64".
* syscalls: statfs: Add missing 'mount-flags' field of 'struct statfs'.Ludovic Courtès2016-04-30
| | | | | | * guix/build/syscalls.scm (<file-system>)[mount-flags]: New field. [spare2]: Remove. (%statfs): Likewise.
* syscalls: 'terminal-columns' catches EINVAL on the TIOCGWINSZ ioctl.Ludovic Courtès2016-04-25
| | | | | | | Reported by Mark H Weaver <mhw@netris.org>. * guix/build/syscalls.scm (terminal-columns): Tolerate EINVAL. * tests/syscalls.scm ("terminal-window-size ENOTTY"): Likewise.
* syscalls: Add 'statfs'.Ludovic Courtès2016-04-25
| | | | | | | * guix/build/syscalls.scm (<file-system>): New record type. (fsword): New macro. (%statfs): New C struct. (statfs): New procedure.
* syscalls: 'define-c-struct' computes the struct size.Ludovic Courtès2016-04-25
| | | | | | | | * guix/build/syscalls.scm (struct-alignment, struct-size): New macros. (define-c-struct): Add 'size' parameter and honor it. (sockaddr-in, sockaddr-in6, ifaddrs, winsize): Adjust accordingly. (%struct-ifaddrs-type, %sizeof-ifaddrs, winsize-struct): Remove. (terminal-window-size): Use 'make-bytevector' instead of 'make-c-struct'.
* syscalls: Second argument of packed-struct read is now optional.Ludovic Courtès2016-04-25
| | | | | | * guix/build/syscalls.scm (define-c-struct)[read]: OFFSET defaults to 0. (unfold-interface-list): Remove second argument to 'read-ifaddrs'. (terminal-window-size): Remove second argument to 'read-winsize'.
* syscalls: Move code around [NFC].Ludovic Courtès2016-04-25
| | | | * guix/build/syscalls.scm: Move packed structure handling to the top.
* syscalls: If a syscall is not available, defer the error.Mark H Weaver2016-04-18
| | | | | | | | * guix/build/syscalls.scm (syscall->procedure): New procedure. (mount, umount, swapon, swapoff, clone, pivot-root): Use it. (clone): Add case for nonexistent syscall id. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* syscalls: 'terminal-columns' ignores non-file ports.Ludovic Courtès2016-04-16
| | | | | | * guix/build/syscalls.scm (terminal-columns): Call 'terminal-window-size' only when PORT is a file port. * tests/syscalls.scm ("terminal-columns non-file port"): New test.
* syscalls: Add TIOCGWINSZ bindings.Ludovic Courtès2016-04-15
| | | | | | | | * guix/build/syscalls.scm (TIOCGWINSZ): New macro. (<window-size>): New record type. (winsize): New C struct. (winsize-struct): New variable. (terminal-window-size, terminal-columns): New procedures.
* syscalls: <interface> printer correctly handles lack of sockaddr.Ludovic Courtès2016-03-25
| | | | | | | | Reported by Danny Milosavljevic <dannym@scratchpost.org> in <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22612#16>. * guix/build/syscalls.scm (write-interface): Check whether ADDRESS is true.
* syscalls: 'all-network-interface-names' accepts non-alphanumeric characters.Ludovic Courtès2016-02-03
| | | | | | | | This fixes interfaces with a dash or other characters being ignored. Suggested by Jookia <166291@gmail.com>. * guix/build/syscalls.scm (%interface-line): Use [[:graph:]] instead of [[:alnum:]].
* syscalls: Fix ABI mismatch for 'clone'.Ludovic Courtès2015-10-17
| | | | | | | | Fixes <http://bugs.gnu.org/21694>. * guix/build/syscalls.scm (clone): Change 'syscall' parameter types to LONG, UNSIGNED-LONG, or '*; make sure it has 6 parameters. Adjust caller accordingly.
* build: container: Use the same clone flags as fork(3).David Thompson2015-09-07
| | | | | | | | | | | | The intent is to make 'clone' behave a lot more like 'primitive-fork', which calls clone(2) with SIGCHLD, CLONE_CHILD_CLEARTID, and CLONE_CHILD_SETTID flags. Notably, running 'clone' at the REPL without these flags would break the REPL beyond repair. * guix/build/syscalls.scm (CLONE_CHILD_CLEARTID, CLONE_CHILD_SETTID): New variables. * gnu/build/linux-container.scm (namespaces->bit-mask): Add CLONE_CHILD_CLEARTID and CLONE_CHILD_SETTID to bit mask.
* build: syscalls: Properly handle clone errors.David Thompson2015-09-05
| | | | * guix/build/syscalls.scm (clone): Catch -1 return value and throw error.
* syscalls: setns: Skip binding if there is no such C function.David Thompson2015-08-17
| | | | | | | | On systems with a glibc prior to 2.14, the 'setns' function is not available. Thanks to Eric Bavier for reporting the issue. * guix/build/syscalls.scm (setns): Wrap with 'false-if-exception'.
* syscalls: Add 'network-interfaces', which wraps libc's 'getifaddrs'.Ludovic Courtès2015-07-25
| | | | | | | | | | | | Based on discussions with Rohan Prinja <rohan.prinja@gmail.com>. * guix/build/syscalls.scm (<interface>): New record type. (write-interface, values->interface, unfold-interface-list, network-interfaces, free-ifaddrs): New procedures. (ifaddrs): New C struct. (%struct-ifaddrs-type, %sizeof-ifaddrs): New macros. * tests/syscalls.scm ("network-interfaces returns one or more interfaces", "network-interfaces returns \"lo\""): New tests.
* syscalls: 'define-c-struct' properly align reads.Ludovic Courtès2015-07-25
| | | | | | * guix/build/syscalls.scm (alignof*, align): New macros. (write-types, read-types): Use 'align' to compute the actual offset to read/write a value of TYPE0.
* syscalls: 'read-socket-address' gracefully handles unsupported families.Ludovic Courtès2015-07-25
| | | | | | * guix/build/syscalls.scm (PF_PACKET, AF_PACKET): New variables. (read-socket-address): Make 'index' optional. Return (vector FAMILY) when FAMILY is neither AF_INET nor AF_INET6.
* syscalls: 'define-c-struct' distinguishes pointers from integers.Ludovic Courtès2015-07-25
| | | | * guix/build/syscalls.scm (read-type): Add special-case for when TYPE is '*.
* syscalls: Rename 'network-interfaces' and 'all-network-interfaces'.Ludovic Courtès2015-07-25
| | | | | | | | | | | | * guix/build/syscalls.scm (network-interfaces): Rename to... (network-interface-names): ... this. (all-network-interfaces): Rename to... (all-network-interface-names): ... this. * gnu/services/networking.scm (dhcp-client-service): Adjust accordingly. * tests/syscalls.scm ("all-network-interfaces"): Rename to... ("all-network-interface-names"): ... this, and adjust accordingly. ("network-interfaces"): Rename to... ("network-interface-names"): ... this, and adjust accordingly.
* syscalls: Struct deserializer can now return arbitrary objects.Ludovic Courtès2015-07-17
| | | | | | | | | * guix/build/syscalls.scm (read-types): Add RETURN and VALUES parameters. (define-c-struct): Add WRAP-FIELDS parameter and pass it to 'read-types'. (sockaddr-in, sockaddr-in6): Add first argument that uses 'make-socket-address'. (read-socket-address): Remove 'match' on the result of 'read-sockaddr-in' and 'read-sockaddr-in6'.
* build: syscalls: Add pivot-root.David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (pivot-root): New procedure. * tests/syscalls.scm ("pivot-root"): New test.
* build: syscalls: Add setns.David Thompson2015-07-07
| | | | | | | * guix/build/syscalls.scm (setns): New procedure. * tests/syscalls.scm ("setns"): New test. squash: setns
* build: syscalls: Add clone.David Thompson2015-07-07
| | | | | | | * guix/build/syscalls.scm (clone): New procedure. (CLONE_NEWNS, CLONE_NEWUTS, CLONE_NEWIPC, CLONE_NEWUSER, CLONE_NEWPID, CLONE_NEWNET): New variables. * tests/syscalls.scm ("clone"): New test.
* build: syscalls: Add mkdtemp!David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (mkdtemp!): New procedure. * tests/syscalls.scm ("mkdtemp!"): New test.
* build: syscalls: Add unmount flags.David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (MNT_FORCE, MNT_DETACH, MNT_EXPIRE) (UMOUNT_NOFOLLOW): New variables.
* build: syscalls: Add additional mount flags.David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_STRICTATIME): New variables.
* services: swap: Use 'restart-on-EINTR'.Ludovic Courtès2015-05-22
| | | | | * gnu/services/base.scm (swap-service)[start, stop]: Use 'restart-on-EINTR'. * guix/build/syscalls.scm (swapoff): Fix typo in 'throw' arguments.
* syscalls: Add 'restart-on-EINTR'.Ludovic Courtès2015-05-22
| | | | | * guix/build/syscalls.scm (call-with-restart-on-EINTR): New procedure. (restart-on-EINTR): New macro.
* syscalls: Add 'set-network-interface-up'.Ludovic Courtès2015-05-17
| | | | * guix/build/syscalls.scm (set-network-interface-up): New procedure.
* linux-boot: Make /etc/mtab a symlink to /proc/self/mounts.宋文武2015-01-05
| | | | | | | | | | Fixes <http://bugs.gnu.org/19491>. * gnu/build/linux-boot.scm (mount-root-file-system): Make /root/etc/mtab a symlink to /proc/self/mounts. * gnu/build/file-systems.scm (mount-file-system): Don't update /etc/mtab. * guix/build/syscalls.scm (mount, umount): Have #:update-mtab? default to #f.
* syscalls: Add more procedures for network interfaces.Ludovic Courtès2014-12-19
| | | | | | | | | | | * guix/build/syscalls.scm (sizeof*, type-size, write-type, write-types, read-type, read-types, define-c-struct): New macros. (SIOCSIFFLAGS, SIOCGIFADDR, SIOCSIFADDR): New variables. (sockaddr-in, sockaddr-in6): New C structs. (write-socket-address!, read-socket-address, set-network-interface-flags, set-network-interface-address, network-interface-address, configure-network-interface): New procedures.
* syscalls: Update /etc/mtab, not /etc/fstab.Ludovic Courtès2014-11-14
| | | | | * guix/build/syscalls.scm (remove-from-mtab): Replace "fstab" with "mtab".
* syscalls: Add 'mount-points'.Ludovic Courtès2014-11-10
| | | | | * guix/build/syscalls.scm (mount-points): New procedure. * tests/syscalls.scm ("mount-points"): New test.
* syscalls: Adjust /proc/net/dev parser for old kernels.Ludovic Courtès2014-09-22
| | | | | | * guix/build/syscalls.scm (%interface-line): Remove whitespace in rest pattern. (There's no extra whitespace after the colon with Linux 2.6.32.)
* syscalls: Add 'swapon' and 'swapoff'.Ludovic Courtès2014-09-18
| | | | | | * guix/build/syscalls.scm (swapon, swapoff): New procedures. * tests/syscalls.scm ("swapon, ENOENT/EPERM", "swapoff, EINVAL/EPERM"): New tests.
* syscalls: Add 'all-network-interfaces'.Ludovic Courtès2014-09-14
| | | | | | | | | * guix/build/syscalls.scm (network-interfaces): Update docstring. (%interface-line): New variable. (all-network-interfaces): New procedure. * tests/syscalls.scm ("all-network-interfaces"): New test. ("network-interfaces"): Change to make sure the result is a subset of (all-network-interfaces).
* syscalls: Add 'network-interface-flags'.Ludovic Courtès2014-09-14
| | | | | | | | | * guix/build/syscalls.scm (SIOCGIFFLAGS, IFF_UP, IFF_BROADCAST, IFF_LOOPBACK, IF_NAMESIZE): New variables. (network-interface-flags, loopback-network-interface?): New procedures. * tests/syscalls.scm ("network-interface-flags", "loopback-network-interface?"): New tests.
* syscalls: Add 'network-interfaces'.Ludovic Courtès2014-09-14
| | | | | | | | * guix/build/syscalls.scm (SIOCGIFCONF, ifconf-struct, ifreq-struct-size): New variables. (%ioctl, bytevector->string-list, network-interfaces): New procedures. * tests/syscalls.scm ("network-interfaces"): New test.
* syscalls: Add 'processes' to list all the live processes.Ludovic Courtès2014-05-14
| | | | * guix/build/syscalls.scm (kernel?, processes): New procedures.
* Add (guix build syscalls).Ludovic Courtès2014-05-10
* guix/build/syscalls.scm, tests/syscalls.scm: New files. * Makefile.am (MODULES): Add guix/build/syscalls.scm. (SCM_TESTS): Add tests/syscalls.scm. * guix/utils.scm (%libc-errno-pointer, errno): Remove; take from (guix build syscalls).