Je dois pouvoir lire un fichier depuis un module, mais tout ce qui ressemble à un open ne peut se faire que depuis l'espace mémoire utilisateur. J'utilise un noyau 2.6.9 red hat. Puis-je utiliser sys_open en faisant auparavant un set_fs(KERNEL_DS) ?
Si oui j'ai un petit problème avec mm_segment que mon gcc me recrache à la figure. Ne dois-je pas faire un truc du genre :
mm_segment fs;
fs = get_fs();
set_fs(KERNEL_DS);
...
fichier = sys_open("toto.xxx",0,0);
ret = sys_read(fichier,buffer,longueur);
sys_close(fichier);
...
set_fs(fs);
# c'est pas bien
Posté par TheBreton . Évalué à 1.
mm_segment_t fs;
[^] # Re: c'est pas bien
Posté par whitefox . Évalué à 1.
Effectivement j'ai bien mis mm_segment_t comme type mais je n'arrive pas à faire un sys_open.
Alors que sys_close et sys_read sont bien reconnus, sys_open provoque une erreur :
<<*** Warning: "sys_open" [/root/red_hat/monModule.ko] undefined!>>
au moment du make.
Sais-tu comment je peux ouvrir un fichier (en lecture ça me suffit à la limite) dans un module ?
[^] # Re: c'est pas bien
Posté par daggett . Évalué à 3.
Sinon, il existe un mécanisme générique de gestion des firmwares, utilisant hotplug, qui est peut-être tout ce dont tu as besoin : http://lwn.net/Articles/32997/ (et un 'grep request_firmware' dans les sources de linux)
[^] # Re: c'est pas bien
Posté par TheBreton . Évalué à 1.
ce mecanisme est utilisé dans le chargement de firmware des cartes video dans v4l.
En voici un exemple utilisant la fonction request_firmware
http://linuxtv.org/hg/v4l-dvb?f=2d0c4da32e19;file=linux/driv(...)
[^] # Re: c'est pas bien
Posté par whitefox . Évalué à 1.
Je vais essayer comme ça.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.