Articles of kernel

Comment créer un répertoire dans l’espace utilisateur dans un module du kernel Linux

Ce qui suit va créer un fichier dans l’espace utilisateur mais comment puis-je créer un répertoire? struct file *filp = filp_open(“/home/myuser/Desktop/newfile”, O_CREAT, S_IRWXU);

Comment l’erreur spéculative due à l’optimisation du compilateur est-elle mise en œuvre sous le capot?

Cette question fait suite à la question suivante: L’optimiseur du compilateur C peut-il violer les courts-circuits et réorganiser les access à la mémoire d’opérandes dans une expression AND logique? . Considérons le code suivant. if (*p && *q) { /* do something */ } Maintenant, comme indiqué dans la discussion ci -dessous, l’optimiseur de compilateur […]

Recherche du nom du paquet d’envoi exécutable dans un hook netfilter

J’écris un module de kernel qui utilise un hook netfilter pour filtrer les paquets TCP et doit trouver le chemin d’access à l’exécutable qui envoie les paquets. Jusqu’ici, j’ai utilisé l’approche suivante, mais elle imprime des noms apparemment sans rapport avec les exécutables utilisés ( / usr / lib / firefox / firefox , usr […]

clock_gettime () toujours pas monotone – alternatives?

Comme on le sait depuis un moment (voir, par exemple, cette vieille question et les rapports de bogues qui apparaissent lorsque vous recherchez ceci sur Google), clock_gettime () ne semble pas rapporter le temps de manière monotone. Pour écarter toute erreur stupide que j’aurais pu oublier, voici le code correspondant (extrait d’un programme plus important): […]

Quel est le problème avec l’appel vfs_stat ()?

J’essaie de faire une statistique sur les fichiers, struct kstat stat; int error = vfs_stat (“/bin/ls”, &stat); // /bin/ls exists if (error) { printk (KERN_INFO “error code %d\n”, error); } else { printk (KERN_INFO “mode of ls: %o\n”, stat.mode); printk (KERN_INFO “owner of ls: %o\n”, stat.uid); } return error; Mais l’erreur a toujours été réglée […]

Exécution d’un thread utilisateur dans le contexte d’une interruption sous Linux

Je suis en train d’écrire une application personnalisée et autorisé à changer le code du gestionnaire d’interruptions dans le kernel Linux. Je rencontre un thread utilisateur qui attend une interruption. Si cette interruption se produit, la première chose que je veux faire est d’exécuter ce thread utilisateur. Y at-il un moyen de le faire fonctionner. […]

Impossible d’insérer ou d’utiliser un ou plusieurs modules inter-kernelx

J’ai une fonction dans le pilote de kernel 1 (KD1.ko): static void test (void); EXPORT_SYMBOL(test); static void test() { printk(“<<>>.\n”); } Dans le pilote de kernel 2 (KD2.ko): extern static void test (void); que j’ai essayé de l’appeler. J’ai réussi à insmod KD1.ko, mais je n’ai pas pu insmod KD2.ko. Est-ce que je manque quelque […]

Est-il possible de tester le code du module de kernel?

Si oui, quelle technique devrais-je utiliser? Je pense à utiliser hippomock car ils peuvent être utilisés pour se moquer des méthodes “C”. Y a-t-il de meilleures approches? Si tel est le cas, quelqu’un peut-il donner un conseil ou pensez-vous que le test unitaire pour le kernel est excessif?

linux / init.h: Aucun fichier ou répertoire de ce type

J’essaie de construire un module de kernel pour une classe de la mienne et j’obtiens un mur d’erreurs, mais en haut de ce mur se trouve la fameuse erreur «Aucun fichier ou répertoire». Cela semble être la racine du problème. Cela semble non seulement affecter init.h, mais aussi module.h et kernel.h. Les trois premières lignes […]

Existe-t-il un moyen d’obtenir des informations sur la batterie (statut, connexion, etc.) sans lire un fichier proc / sys sur linux?

Je veux obtenir des informations sur la batterie en C sur Linux. Je ne veux ni lire ni parsingr aucun fichier! Existe-t-il une interface de bas niveau avec acpi / le kernel ou tout autre module permettant d’obtenir les informations souhaitées? J’ai déjà cherché sur le Web, mais chaque question donne la réponse “parse / […]