From 9676d5d868dfdf3ab922ff4996d2b4f5b1b23c99 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 21 Apr 2024 10:42:31 +0100 Subject: syscalls: Add unshare. * guix/build/syscalls.scm (unshare): New procedure. Change-Id: I7caad207117b17b349290e680277f650c51d2f3b --- guix/build/syscalls.scm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 487ee68b43..492a229938 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -36,6 +36,7 @@ #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-71) #:use-module (ice-9 rdelim) #:use-module (ice-9 regex) #:use-module (ice-9 match) @@ -121,6 +122,7 @@ mkdtemp! fdatasync pivot-root + unshare scandir* getxattr setxattr @@ -1183,6 +1185,16 @@ system to PUT-OLD." (list new-root put-old (strerror err)) (list err))))))) +(define unshare + (false-if-exception + (let ((proc (syscall->procedure int "unshare" (list int)))) + (lambda (flags) + (let ((ret err (proc flags))) + (unless (zero? ret) + (throw 'system-error "unshare" "~d ~d: ~A" + (list flags (strerror err)) + (list err)))))))) + ;;; ;;; Opendir & co. -- cgit v1.2.3