guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/05: linux-modules: Use 'load-linux-module/fd'.


From: Ludovic Courtès
Subject: 04/05: linux-modules: Use 'load-linux-module/fd'.
Date: Wed, 28 Feb 2018 16:48:16 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 3c14e7e6bbc2f86f927816042df1a9f1c057e09c
Author: Ludovic Courtès <address@hidden>
Date:   Wed Feb 28 22:02:27 2018 +0100

    linux-modules: Use 'load-linux-module/fd'.
    
    This should be more efficient than loading the whole thing in user space.
    
    * gnu/build/linux-modules.scm (load-linux-module*): Use
    'load-linux-module/fd' instead of 'load-linux-module'.  Remove 'slurp'.
---
 gnu/build/linux-modules.scm | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm
index 5ca7bf8..115a17c 100644
--- a/gnu/build/linux-modules.scm
+++ b/gnu/build/linux-modules.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2016 Ludovic Courtès <address@hidden>
+;;; Copyright © 2014, 2016, 2018 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2017 Mathieu Othacehe <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -180,10 +180,6 @@ success, false otherwise.  When RECURSIVE? is true, load 
its dependencies
 first (à la 'modprobe'.)  The actual files containing modules depended on are
 obtained by calling LOOKUP-MODULE with the module name.  Modules whose name
 appears in BLACK-LIST are not loaded."
-  (define (slurp module)
-    ;; TODO: Use 'finit_module' to reduce memory usage.
-    (call-with-input-file file get-bytevector-all))
-
   (define (black-listed? module)
     (let ((result (member module black-list)))
       (when result
@@ -200,16 +196,20 @@ appears in BLACK-LIST are not loaded."
   (and (not (black-listed? (file-name->module-name file)))
        (or (not recursive?)
            (load-dependencies file))
-       (begin
+       (let ((fd #f))
          (format (current-module-debugging-port)
                  "loading Linux module from '~a'...~%" file)
 
          (catch 'system-error
            (lambda ()
-             (load-linux-module (slurp file)))
+             (set! fd (open-fdes file O_RDONLY))
+             (load-linux-module/fd fd)
+             (close-fdes fd)
+             #t)
            (lambda args
              ;; If this module was already loaded and we're in modprobe style, 
ignore
              ;; the error.
+             (when fd (close-fdes fd))
              (or (and recursive? (= EEXIST (system-error-errno args)))
                  (apply throw args)))))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]