Articles of kernel

Extension du code de Python – ajout de fonctionnalités de langage

Je programme exclusivement en python depuis 4 ans et je n’ai jamais vraiment cherché à comprendre le code C dans lequel python est écrit. J’ai récemment étudié un problème impliquant la modification de python à ce niveau. Le code semble assez cohérent et donc relativement facile à comprendre. Cependant, c’est assez complexe pour que cela […]

Comment utiliser un appel système Linux à partir d’un module de kernel Linux

J’ai quelques difficultés à appeler un appel système depuis un module de kernel Linux. Les appels système ont été testés et fonctionnent correctement à partir d’un programme d’espace utilisateur c standard, mais je n’arrive pas à obtenir le module du kernel pour les comstackr et les exécuter. Dans mon programme utilisateur, j’inclus le code suivant […]

Comment écrire plusieurs pilotes de périphérique client esclave i2c?

J’essaie de développer un pilote pour un tableau intégré. Le pilote est censé ouvrir une interface pour v4l2 et communiquer avec 2 périphériques utilisant i2c . le conducteur agira en tant que maître. Je n’arrive pas à comprendre comment fonctionnent les fonctions tableau i2c_add_driver et i2c_add_driver . Je lis la documentation dans les sources du […]

mmap a échoué lors de la tentative de mappage d’une page immense (1 Go)

Ce que j’ai fait: 1. Activer l’énorme page avec root (mon système prend en charge une page énorme de 1 Mo) $echo 20 > /proc/sys/vm/nr_hugepages 2. Montez un énorme système de fichiers de page sur / mnt / hugepages $mount -t hugetlbfs nodev /mnt/hugepages 3.Créez un fichier dans un système de fichiers page énorme $touch […]

Accéder à l’espace de session du kernel à partir du pilote du kernel

J’écris un pilote de kernel, qui devrait lire (et dans certains cas, écrire également) des adresses de mémoire dans l’espace de session du kernel (win32k.sys). J’ai lu dans un autre sujet que, par exemple, dans Windbg, je devrais changer le contexte en un processus utilisateur aléatoire pour lire la mémoire de l’espace de session du […]

Accéder aux données .eh_frame pendant l’exécution

J’essaie d’accéder au contenu de la section .eh_frame d’un programme en cours d’exécution depuis celui-ci (plus précisément, le programme est le kernel Linux 2.6.34.8). Le .eh_frame contient des données utiles utilisées pour la gestion des exceptions et j’aimerais les utiliser en interne à partir du code du kernel. La section est déjà écrite par gcc […]

Pourquoi le système d’exploitation a-t-il besoin / maintient des threads du kernel?

Vous trouverez ci-dessous trois modèles de threading que j’ai rencontrés. Sur la base de ces 3 architectures ci-dessous, il est nouveau pour moi de comprendre qu’il existe également quelque chose appelé thread kernel, à part le thread utilisateur introduit dans POSIX.1C. C’est le modèle 1-1 C’est le modèle N-1. C’est un modèle hybride. J’ai eu […]

Travailler avec Bluetooth dans le développement du kernel Android sous Linux

Je veux savoir comment puis-je utiliser Bluetooth sous Android en utilisant C / C ++ et non l’ API JAVA si quelqu’un a des liens utiles ou peut donner des conseils? J’ai trouvé ce post mais je veux savoir si je donne une information complète?

Détournement d’appels système

J’écris un module de kernel et j’ai besoin de détourner / envelopper certains appels système. Je force brute l’adresse sys_call_table et j’utilise cr0 pour désactiver / activer la protection de page. Jusqu’ici tout va bien (je publierai l’intégralité du code une fois que ce sera fait afin de pouvoir mettre à jour cette question si […]

Comment utiliser correctement copy_from_user?

J’essaie de copier une valeur de l’espace utilisateur vers l’espace kernel avec la fonction suivante: static ssize_t device_write(struct file *filp, const char *buff, size_t len, loff_t *off) { unsigned long copy=0; int desp=0; copy = copy_from_user(&desp, &len, 4); printk(KERN_ALERT “copy: %lx\n”, copy); printk(KERN_ALERT “desp: %d\n”, desp); } où “len” est la variable qui existe dans […]