Browse Source

syscalls: Add 'restart-on-EINTR'.

* guix/build/syscalls.scm (call-with-restart-on-EINTR): New procedure.
  (restart-on-EINTR): New macro.
gn-latest-20200428
Ludovic Courtès 6 years ago
parent
commit
ea98270443
  1. 14
      guix/build/syscalls.scm

14
guix/build/syscalls.scm

@ -29,6 +29,7 @@
MS_REMOUNT
MS_BIND
MS_MOVE
restart-on-EINTR
mount
umount
mount-points
@ -89,6 +90,19 @@
(ref bv))))
(lambda () 0)))
(define (call-with-restart-on-EINTR thunk)
(let loop ()
(catch 'system-error
thunk
(lambda args
(if (= (system-error-errno args) EINTR)
(loop)
(apply throw args))))))
(define-syntax-rule (restart-on-EINTR expr)
"Evaluate EXPR and restart upon EINTR. Return the value of EXPR."
(call-with-restart-on-EINTR (lambda () expr)))
(define (augment-mtab source target type options)
"Augment /etc/mtab with information about the given mount point."
(let ((port (open-file "/etc/mtab" "a")))

Loading…
Cancel
Save