Articles of kernel linux

implémenter une liste d’opérations de lecture dans debugfs

J’implémente un module de kernel. en utilisant plusieurs techniques. L’un d’entre eux est de donner en lecture / écriture à différentes variables de module. J’ai été capable de lire / écrire toutes les variables sauf la liste que j’ai dans mon module. la liste liée: static struct node { struct list_head list; unsigned int x; […]

Accès séquentiel à hugepages dans le pilote du kernel

Je travaille dans un pilote qui utilise un tampon soutenu par des pages gigantesques, et je trouve des problèmes avec la séquentalité de ces pages gigantesques. En espace utilisateur, le programme alloue un grand tampon sauvegardé par gigantes pages à l’aide de l’appel système mmap . La mémoire tampon est ensuite communiquée au pilote via […]

Sémaphore partagé entre les espaces utilisateur et kernel

Version courte Est-il possible de partager un sémaphore (ou tout autre verrou de synchronisation) entre l’espace utilisateur et l’espace kernel? Les sémaphores POSIX nommés ont la persistance du kernel , c’est pourquoi je me demandais s’il était possible de créer également et / ou d’y accéder à partir du contexte du kernel. La recherche sur […]

activer / désactiver le cache sur la machine Intel 64 bits: le bit CD est-il toujours activé?

J’essaie de désactiver tous les niveaux de cache pour mon ordinateur. Processeur E5-1650 v2 @ 3.50GHz Intel Xeon J’ai écrit un outil pour appeler le code d’assemblage suivant pour désactiver / activer le cache et afficher la valeur du registre CR0. case XENMEM_disable_cache: __asm__ __volatile__( “pushq %%rax\n\t” “movq %%cr0,%%rax\n\t” “orq $0x40000000,%%rax\n\t” “movq %%rax,%%cr0\n\t” “movq %%cr0, […]

Comment accéder à la mémoire du kernel à partir du programme utilisateur sous Linux?

communication client et serveur dans rt linux. le client envoie les données et le serveur est le destinataire.UDP est utilisé pour la communication entre le client et le serveur. Lorsque le serveur (rt linux) reçoit les données du client, le kernel doit arrêter son travail et commencer à exécuter les nouvelles données. Je veux calculer […]

Comment puis-je suivre les sessions shell interactives qui n’allouent pas un tty à l’aide de eBPF?

J’essaie d’écrire un programme qui retransmet n’importe quelle session interactive du shell dans une firebase database centrale. J’ai réussi à utiliser un programme eBPF pour attacher un gestionnaire à tty_write dans le style de ttysnoop.py . Cela fonctionne pour toutes les sessions qui allouent un terminal. Je peux également utiliser les options sessionid et pidnamespace […]

Comment pouvons-nous partager une table de hachage entre deux modules de kernel différents

Est-il possible de partager une table de hachage définie dans un module de kernel dans un autre module de kernel? /*Hash table declarartion and definition*/ DEFINE_HASHTABLE(my_hash_table, HASH_TABLE_BITS); Je renseigne cette table dans un module, mais j’aimerais également accéder à cette table dans un autre module. La déclaration externe fonctionne-t-elle ici? extern DEFINE_HASHTABLE(…,…)

La lecture d’une broche d’entrée sysfs GPIO (la direction étant «in») affiche toujours une valeur fixe (0)

Après avoir activé la prise en charge du périphérique GPIO dans le pilote de périphérique du kernel (version 3.10.92 du kernel), je souhaitais lire la valeur d’une broche d’entrée de mon expandeur GPIO via GPIO sysfs. Après avoir exporté et défini la direction sur “in”, la valeur est toujours donnée à 0 même après la […]

Noyau Linux: la «longueur» maximale de scatterlist est-elle autorisée?

Ayant résolu mon exemple de cryptage Linux, et pouvant appeler les chiffreurs aead correctement, j’ai rencontré un problème intéressant. Je définis mes listes de dispersion comme: struct scatterlist sg[2]; sg_init_table(sg, 2 ); sg_set_buf(&sg[0], address, 512); sg_set_buf(&sg[1], mac, 16); aead_request_set_crypt(req, sg, sg, 512, iv); crypto_aead_encrypt(req); et cela fonctionne très bien. Cependant, si vous augmentez la taille […]

module de kernel linux pas autoloading

J’étudie le kernel Linux et commence par le module hello world à ce stade, tout va bien, mais après la compilation $ make et installer $ insmod akmod.ko le module ne montre pas un message “hello world” sur KERN_DEBUG $ dmesg nothing here $ il suffit de montrer sur rmmod $ rmmod akmod [4543.3423432] hello […]