Score:0

ข้อความออกจากโมดูลเคอร์เนลจะถูกพิมพ์ในครั้งต่อไปเมื่อใส่โมดูล

ธง co

ฉันได้เขียนโมดูลเคอร์เนลอย่างง่ายเพื่อพิมพ์ Hello kernel msg

my_module.c

#รวม <linux/module.h>
#รวม <linux/init.h>

/* ข้อมูลเมตา */
MODULE_LICENSE("จีพีแอล");
MODULE_AUTHOR("ภควัต");
MODULE_DESCRIPTION("โมดูล HELLO WORLD");

/*ฟังก์ชันนี้ถูกเรียกใช้เมื่อโหลดโมดูลลงในเคอร์เนล*/

int คงที่ __init ModuleInit (โมฆะ)
{
    printk("สวัสดี เคอร์เนล!\n");
    กลับ 0;
}

/*ฟังก์ชันนี้ถูกเรียกใช้เมื่อโมดูลถูกลบออกจากเคอร์เนล*/
โมฆะคงที่ __exit ModuleExit (โมฆะ)
{
    printk("ลาก่อนเคอร์เนล");
}

module_init (โมดูลอินิต);
module_exit (โมดูลทางออก);

สร้างไฟล์

obj-m += my_module.o

ทั้งหมด:
    สร้างโมดูล -C /lib/modules/$(shell uname -r)/build M=$(PWD)

ทำความสะอาด:
    ทำให้ -C /lib/modules/$(shell uname -r)/build M=$(PWD) สะอาด

เมื่อฉันใส่โมดูล ฉันจะได้รับ msg ที่พิมพ์ในบันทึกของเคอร์เนล แต่เมื่อฉันลบโมดูล msg จะไม่ได้รับการพิมพ์ เมื่อฉันใส่โมดูลอีกครั้ง ข้อความสองข้อความจะถูกพิมพ์หนึ่งรายการสำหรับการออกจากโมดูลล่าสุด และอีกข้อความหนึ่งสำหรับการโหลดโมดูล เหตุใดโมดูลออกจาก msg จึงพิมพ์ในภายหลังเมื่อฉันใส่โมดูล แต่ไม่ใช่เมื่อถอดโมดูลออก

bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/ส่วนตัว/device_driver$ dmesg | หาง
[24.595403] rfkill: เปิดใช้งานตัวจัดการอินพุต
[30.244336] rfkill: ตัวจัดการอินพุตปิดใช้งาน
[145.426767] my_module: การตรวจสอบโมดูลล้มเหลว: ลายเซ็นและ/หรือคีย์ที่จำเป็นหายไป - เคอร์เนลเสีย
[ 145.427022] สวัสดีเคอร์เนล!
[217.026559] ลาก่อน เคอร์เนล
[498.489388] สวัสดีเคอร์เนล!
[524.139613] ลาก่อนเคอร์เนล
[ 528.270128] สวัสดีเคอร์เนล!
[577.360611] ลาก่อนเคอร์เนล
[ 587.700237] สวัสดีเคอร์เนล!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module 
bhagwat@bhagwat:~/bhagwatws/ส่วนตัว/device_driver$ dmesg | หาง
[24.595403] rfkill: เปิดใช้งานตัวจัดการอินพุต
[30.244336] rfkill: ตัวจัดการอินพุตปิดใช้งาน
[145.426767] my_module: การตรวจสอบโมดูลล้มเหลว: ลายเซ็นและ/หรือคีย์ที่จำเป็นหายไป - เคอร์เนลเสีย
[ 145.427022] สวัสดีเคอร์เนล!
[217.026559] ลาก่อน เคอร์เนล
[498.489388] สวัสดีเคอร์เนล!
[524.139613] ลาก่อนเคอร์เนล
[ 528.270128] สวัสดีเคอร์เนล!
[577.360611] ลาก่อนเคอร์เนล
[ 587.700237] สวัสดีเคอร์เนล!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/ส่วนตัว/device_driver$ dmesg | หาง
[145.426767] my_module: การตรวจสอบโมดูลล้มเหลว: ลายเซ็นและ/หรือคีย์ที่จำเป็นหายไป - เคอร์เนลเสีย
[ 145.427022] สวัสดีเคอร์เนล!
[217.026559] ลาก่อน เคอร์เนล
[498.489388] สวัสดีเคอร์เนล!
[524.139613] ลาก่อนเคอร์เนล
[ 528.270128] สวัสดีเคอร์เนล!
[577.360611] ลาก่อนเคอร์เนล
[ 587.700237] สวัสดีเคอร์เนล!
[667.900373] ลาก่อน เคอร์เนล
[ 676.245356] สวัสดีเคอร์เนล!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module 
bhagwat@bhagwat:~/bhagwatws/ส่วนตัว/device_driver$ dmesg | หาง
[145.426767] my_module: การตรวจสอบโมดูลล้มเหลว: ลายเซ็นและ/หรือคีย์ที่จำเป็นหายไป - เคอร์เนลเสีย
[ 145.427022] สวัสดีเคอร์เนล!
[217.026559] ลาก่อน เคอร์เนล
[498.489388] สวัสดีเคอร์เนล!
[524.139613] ลาก่อนเคอร์เนล
[ 528.270128] สวัสดีเคอร์เนล!
[577.360611] ลาก่อนเคอร์เนล
[ 587.700237] สวัสดีเคอร์เนล!
[667.900373] ลาก่อน เคอร์เนล
[ 676.245356] สวัสดีเคอร์เนล!
hr flag
อาจเป็นเพราะไม่มีการขึ้นบรรทัดใหม่ที่ท้ายข้อความ `"ลาก่อน เคอร์เนล" ของคุณ? ดูตัวอย่าง [printk is line buffered?](https://stackoverflow.com/questions/13538618/printk-is-line-buffered)
Jeff avatar
mx flag
คุณใช้เคอร์เนลเวอร์ชันใด น่าจะเป็น 5.4 ใช่ไหมครับ
Score:0
ธง in

ใช้ '\n' ในคำสั่ง printk ของโมดูล exit printk("ลาก่อน เคอร์เนล\n");

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา