syscalls: Add load-linux-module.

* guix/build/syscalls.scm (load-linux-module): New procedure. Reimplemented
from guile-linux-syscalls.patch.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Mathieu Othacehe 2017-04-10 19:18:13 +02:00 committed by Ludovic Courtès
parent c5cd4fad09
commit 23e525e109
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 12 additions and 0 deletions

View File

@ -578,6 +578,18 @@ constants from <sys/mount.h>."
(list cmd (strerror err)) (list cmd (strerror err))
(list err)))))) (list err))))))
(define-as-needed (load-linux-module data #:optional (options ""))
(let ((proc (syscall->procedure int "init_module"
(list '* unsigned-long '*))))
(let-values (((ret err)
(proc (bytevector->pointer data)
(bytevector-length data)
(string->pointer options))))
(unless (zero? ret)
(throw 'system-error "load-linux-module" "~A"
(list (strerror err))
(list err))))))
(define (kernel? pid) (define (kernel? pid)
"Return #t if PID designates a \"kernel thread\" rather than a normal "Return #t if PID designates a \"kernel thread\" rather than a normal
user-land process." user-land process."