next up previous
Next: Kernel Modules VS Applications Up: เขียน และ ใช้งาน Modules Previous: เขียน และ ใช้งาน Modules

เริ่มต้นแบบง่ายๆ

ในบทนี้เราจะพูดถึงการเขียนโปรแกรมเป็น module แบบง่ายๆ รวมถึงลักษณะการเขียนข้อควรระวัง และจะกล่าวถึงการเขีียน module โดยจะไม่อ้างอิงถึง device ใดๆ โดยเริ่มจากการทำความเข้าใจ module พื้นฐานง่ายๆ

#define MODULE

#include <linux/module.h>

int init_module(void) { printk("<1>Hello, world\n"); return 0; }

void cleanup_module(void) { printk("<1>Goodbye cruel world\n"); }

โดยปกติ MODULE จะถูก define ถ้ามีการ include <linux/module.h> ส่วน function printk ก็เป็น function ที่มีลักษณะคล้ายกับ printf แต่มีการใส่ <1> เพื่อบอก priority ของ message (เลขน้อย piority มาก) แต่จริงๆแล้วอาจจะไม่ต้องใส่ priority no. ก็ได้จะมีการกำหนดค่า default ไว้ซึ่ง message เหล่านี้จะถูกจัดการต่อโดย klogd และ init_module() จะถูกเรียกตอนมีการใส่ module นี้ ส่วน cleanup_module จะถูกเรียกตอนเอา module ออก เราสามารถทดลอง module นี้ได้ด้วยคำสั่ง insmod และ rmmod และ kompile ด้วย gcc ดังตัวอย่าง

root# gcc -c foo.c

root# insmod foo.o

Hello, world

root# rmmod foo

Goodbye cruel world

root#

แต่ถ้าคุณทดสอบ insert และ remove module บน xterm จะไม่ได้รับ message แต่สามารถดูได้จาก /var/log/messages (อาจจะแตกต่างตาม configuration ของ logd) เวลาทดสอบอาจจะเปิดอีก terminal นึงแล้วใช้คำสั่ง tail -f /var/log/messages เพิ่มติดตามดู log file นี้ก็ได้



Pruet Boonma 2001-11-02