Puncte:0

Mesajul de ieșire al modulului Kernel va fi tipărit data viitoare când introduceți modulul

drapel co

Am scris un modul de nucleu simplu pentru a imprima mesajul Hello kernel.

modulul_meu.c

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

/* Metainformații */
MODULE_LICENSE("GPL");
MODULE_AUTHOR("BHAGWAT");
MODULE_DESCRIPTION("UN MODUL HELLO WORLD");

/*această funcție este apelată când modulul este încărcat în nucleu*/

static int __init ModuleInit(void)
{
    printk("Bună ziua, kernel!\n");
    întoarce 0;
}

/*această funcție este apelată când modulul este eliminat din kernel*/
static void __exit ModuleExit(void)
{
    printk("La revedere, nucleu");
}

module_init(ModuleInit);
module_exit(ModuleExit);

Makefile

obj-m += modulul_meu.o

toate:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) module

curat:
    face -C /lib/modules/$(shell uname -r)/build M=$(PWD) curat

când introduc modulul primesc mesajul tipărit în jurnalele kernelului, dar când elimin modulul, mesajul nu este tipărit. Când introduc din nou modulul, se imprimă două mesaje, unul pentru ultima ieșire a modulului și altul pentru încărcarea modulului. De ce mesajul de ieșire din modul este tipărit mai târziu când introduc modulul, dar nu și când îl scot.

bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 24.595403] rfkill: handler de intrare activat
[ 30.244336] rfkill: handler de intrare dezactivat
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module 
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 24.595403] rfkill: handler de intrare activat
[ 30.244336] rfkill: handler de intrare dezactivat
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
[ 667.900373] La revedere, kernel
[ 676.245356] Bună ziua, kernel!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module 
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
[ 667.900373] La revedere, kernel
[ 676.245356] Bună ziua, kernel!
drapel hr
Poate pentru că nu există nicio linie nouă la sfârșitul mesajului tău `"La revedere, nucleu"`? Vedeți, de exemplu, [printk is line buffered?] (https://stackoverflow.com/questions/13538618/printk-is-line-buffered)
Jeff avatar
drapel mx
Ce versiune de kernel folosești? Probabil este 5.4, nu?
Puncte:0
drapel in

utilizați „\n” în instrucțiunea printk a modulului de ieșire printk("La revedere, nucleu\n");

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.