GNU bug report logs -
#30604
[PATCH 0/4] Load Linux module only when supported hardware is present.
Previous Next
Full log
Message #242 received at 30604 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi Ludo,
I've been thinking about it some more - I think it can be made to work "your" way.
I'm trying to integrate it right now.
But! The module-aliases->module-file-names way I've been pursuing (which also
returns the recursive dependencies) has the advantage of using exactly the same
procedure for both flat-linux-module-directory (which copies files) and for
our modprobe (which loads them later).
This means that it's very likely these two will match.
But if load-linux-module* recursively loads modules on its own it's easily
possible that these will diverge - what flat-linux-module-directory is doing
could (accidentially) differ in the future.
Maybe that's overly defensive programming. What do you think?
My flat-linux-module-directory basically just returns a subset of the directory
tree it gets as parameter (and flattens it for no reason).
Also, I've been trying to use find-files for /sys before, like you do.
It doesn't work correctly - probably because of the mutation that modprobe does
(find-files sorts - not sure whether that's the whole story).
Integration tests just finished - even the basic system test fails because of it
now.
I tried only this:
(define (load-kernel-modules)
"Examine /sys/devices to find out which modules to load and load them."
- (define enter?
- (const #t))
- (define (down! directory stat result)
- ;; Note: modprobe mutates the tree starting with DIRECTORY.
- (let ((modalias-name (string-append directory "/modalias")))
- (if (file-exists? modalias-name)
- (let ((modalias
- (string-trim-right (call-with-input-file modalias-name
- read-string)
- #\newline)))
- (system* "/sbin/modprobe" "-q" "--" modalias))))
- #t)
- (define up
- (const #t))
- (define skip
- (const #t))
- (define leaf
- (const #t))
- (define (error name stat errno result)
- (format (current-error-port) "warning: ~a: ~a~%"
- name (strerror errno))
- result)
- (file-system-fold enter? leaf down! up skip error #t "/sys/devices"))
+ (for-each (lambda (modalias)
+ (system* "/sbin/modprobe" "-q" "--" modalias))
+ (system-device-aliases)))
Doesn't work anymore...
ERROR: In procedure network-interface-flags:
In procedure network-interface-flags: No such device
(I've exported system-device-aliases)
[Message part 2 (application/pgp-signature, inline)]
This bug report was last modified 5 years and 306 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.