2017-07-27 9 views
-1

Je ne suis pas familier avec le codage de module et j'ai besoin d'exécuter un calcul qui utilise la bibliothèque GMP dans un module.GMP dans le noyau Module

Donc la première question: est-il généralement possible d'exécuter GMP dans le noyau? Pour les tests, j'ai écrit ce module:

#include <linux/init.h> 
#include <linux/module.h> 
#include <gmp.h> 

int hallo_init(void) 
{ 
    mpz_t testFactor; 
    mpz_init(testFactor, NULL); 
    mpz_set_str(testFactor, "19", 10); 
    int length = (int) mpz_sizeinbase(testFactor,2); 

    printk(KERN_ALERT "That is testFactor: %x \n",length); 

    return 0; 
} 

void hallo_exit(void) 
{ 
    printk(KERN_ALERT "exit \n"); 
} 

module_init(hallo_init); 
module_exit(hallo_exit); 

je lance avec la commande suivante:

sudo make -C /lib/modules/$(uname -r)/build M=$PWD modules -lgmp 

Le makefile se compose de

obj-m := gmpFile.o 

J'ai aussi essayé d'utiliser le -lgmp dans le fichier makefile:

obj-m := halloGmp.o 
ccflags-y := -lgmp 

Mais je reçois toujours une erreur fatale: gmp.h: No such file or directory Des suggestions? Serait reconnaissant de l'aide!

+0

C'est clairement un problème XY. Si vous avez des calculs excessifs, faites-les dans l'espace utilisateur, les modules du noyau doivent être limités au minimum requis. En tant que sidenote: '% x' prend un comportement' unsigned', pas un 'int' -> indéfini. – Olaf

+0

Malheureusement, je ne peux pas les faire dans l'espace utilisateur. Enfin je veux remplacer un enrôlement (ECDH) par ses contre-mesures contre une certaine attaque avec ma mise en œuvre afin d'analyser la sécurité de certaines connexions. Par conséquent, j'ai besoin d'exécuter mon code dans le noyau – Balltasar

+0

Il existe d'autres façons de tester le cryptage, par exemple. en utilisant des sockets raw, Fuse, etc. GMP ne convient pas pour les algorithmes de cryptage de toute façon. – Olaf

Répondre

0

Je ne connais pas GMP mais il est peu probable que vous puissiez lier dynamiquement une bibliothèque à un module noyau.

La raison en est que le noyau est un programme autonome et que vous ne connaissez aucune bibliothèque système utilisée (par exemple, glib ...) et que GMP les utilise très probablement. La seule solution que je peux penser est que vous faites un module de noyau qui communiquent avec un programme dans l'espace utilisateur et liez le GMP à la partie utilisateur de votre application.