Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Linux Çý¶¯¿ª·¢âÒ¶¡½âÅ£Ö®¶þ —— Ä£¿é±à³Ì


±¾ÎÄÊǽ¨Á¢ÔÚÇ°ÃæµÄ¿ª·¢»·¾³ÒѾ­³É¹¦½¨Á¢µÄ»ù´¡Ö®Éϵġ£Èç¹ûûÓн¨Á¢ºÃ£¬Çë²ÎÕÕ¡¶ Linux Çý¶¯¿ª·¢âÒ¶¡½âÅ£Ö®Ò» —— ¿ª·¢»·¾³µÄ½¨Á¢¡·¡£
ÒѾ­ÓкܶàÎĵµ½²ÊöÄ£¿é±à³Ì£¬¸öÈ˾õµÃ¡¶ The Linux kernel module programming guide ¡·ÊÇ×îÏ꾡µÄ¡£±¾ÎIJ»ÔÙÁ¢×ãÓÚ´ÓÀíÂÛÉÏÈ¥²ûÊöÄ£¿é±à³ÌµÄÏà¹ØÖªÊ¶£¬¶ø×ÅÖØ´Óʵ¼ùµÄ»ù´¡ÉÏÈ¥ÕÆÎÕÄ£¿é±à³Ì£¬ÁìÎòÄ£¿é±à³ÌµÄʵÖÊ¡£µ±È»£¬¾ß±¸×ã¹»µÄÀíÂÛ֪ʶ²ÅÄÜ´Óʵ¼ù³ö·¢£¬ËùÒÔ£¬±¾Îĵµ¾¡Á¿ÅäºÏ¡¶ Linux Device Driver ¡·µÚÈý°æµÄµÚ¶þÕ£¬ÒÔ¼°½²ÊöÄ£¿é±à³Ì×îÍêÉÆµÄÎĵµ¡¶ The Linux kernel module programming guide ¡·¡£ÏÂÃæ£¬ÎÒÃÇ´Óʵ¼ù¿ªÊ¼³ö·¢°É¡£
1. ÈËÖ®³õ£¨ hello world £©
/*
* hello.c - The first kernel module programming
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_ALERT */
#include <linux/init.h>
MODULE_LICENCE( “ Dual BSD/GPL ” );
static int hello_init(void)
{
printk(KERN_INFO "Hello world\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO "Goodbye world\n");
}
module_init(hello_init);
 
module_exit(hello_exit);
MODULE_AUTHOR(“dreamice, jyjiang2005@gmail.com ”);
MODULE_DESCRIPTION(“The first module program”);
MODULE_VERSION(“V1.0”);
MODULE_ALIAS(“Chinese: ren zhi chu”);
Makefile:
obj-m := hello.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
$(RM) *.o *.ko *.mod.c Module.symvers
ÏÖÔÚ£¬ÎÒÃÇÒ»²½Ò»²½À´½âÎöÕâ¸ö×î¼òµ¥µÄhello world Ä£¿é³ÌÐò¡£
1£® /linux/module.h Õâ¸öÊDZØÐëµÄ¡£Õâ¸öÍ·Îļþ°üº¬Á˶ÔÄ£¿é½á¹¹µÄ¶¨ÒåÒÔ¼°Ïà¹ØÐÅÏ¢¡£
2£® module_init ºÍ module_exit ÕâÁ½¸öº¯ÊýÊDZØÐëµÄ¡£ module_init ¾ÍºÃ±ÈÓ¦ÓóÌÐòµÄ main º¯Êý£¬Ã»ÓÐ main º¯Êý£¬Ó¦ÓóÌÐò½«²»ÖªµÀ´ÓÄÄÀ↑ʼִÐС£
3£®¹ØÓÚ printk £¬ÔÚ ldd3 µÄµÚËÄÕÂÓÐÏêϸµÄ˵Ã÷£¬Õâ¸ö¿ÉÒÔ˵ÊÇÄں˵÷ÊÔµÄÒ»¸ö»ù±¾ÊֶΡ£
4£® MODULE_LICENCE £¬ MODULE_AUTHOR £¬ MODULE_DESCR


Ïà¹ØÎĵµ£º

linux pppoe

ÊÖÍ·Óиöep9315µÄ°å£¬½ñÌìͻȻÏëÆðÅÜÒ»ÏÂadslÉÏÍø¡£ÍíÉÏ»ØÀ´¾Í¿ªÊ¼¸ã¡£
´Ó10µãµ½ÏÖÔÚ£¬ÖÕÓÚÄܹ»ÅÜÆðÀ´¡£
¸ø´ó¼Ò½è¼øÒ»Ï¡£
1.±àÒëÄںˣ¬°ÑpppµÄÄÇЩѡÏîÑ¡ÉÏ¡£ (ÎÒÓÃ2.6.8.1µÄkernel£¬cirrus µÄpatch)
2.libpcap-0.9.1 Õâ¸ö°üÊÇpppdÐèÒªµÄ¡£
./configure CC=arm-linux-gcc CFLAGS=-msoft-float --target=arm-linu ......

linuxÉèÖû·¾³±äÁ¿

1¡¢ÒýÑÔ
    ÔÚlinuxϵͳÏ£¬Èç¹ûÄãÏÂÔØ²¢°²×°ÁËÓ¦ÓóÌÐò£¬ºÜÓпÉÄÜÔÚ¼üÈëËüµÄÃû³ÆÊ±³öÏÖ“command not found”µÄÌáʾÄÚÈÝ¡£Èç¹ûÿ´Î¶¼µ½°²×°Ä¿±êÎļþ¼ÐÄÚ£¬ÕÒµ½¿ÉÖ´ÐÐÎļþÀ´½øÐвÙ×÷¾ÍÌ«·±ËöÁË¡£ÕâÉæ¼°µ½»·¾³±äÁ¿PATHµÄÉèÖÃÎÊÌ⣬¶øPATHµÄÉèÖÃÒ²ÊÇÔÚlinux϶¨ÖÆ»·¾³±äÁ¿µÄÒ»¸ö×é³É²¿·Ö¡£±¾ÎÄ»ùÓ ......

Interrupt in Linux£¨Ó²¼þƪ£©—— APIC2


1.2.2 LAPIC
ÊÕµ½À´×ÔIOAPICµÄÖжÏÏûÏ¢ºó£¬LAPIC»á½«¸ÃÖжϽ»ÓÉCPU´¦Àí¡£ºÍIOAPIC±È½Ï£¬LAPIC¾ßÓиü¶àµÄ¼Ä´æÆ÷ÒÔ¼°¸ü¸´ÔӵĻúÖÆ¡£µ«¶ÔÓÚ´¦ÀíÀ´×ÔIOAPICµÄÖжÏÏûÏ¢£¬×îÖØÒªµÄ¼Ä´æÆ÷»¹ÊÇIRR¡¢ISRÒÔ¼°EOI¡£
ͼ1-4ÏÔʾÁËx86ƽ̨ÉÏ£¬IRRºÍISRµÄ¸ñʽ£º
 
ͼ1-4 IRR¡¢ISR¹¹³É
ÓëPICÖеÄIRR¡¢ISR²»Í¬µÄÊÇ£¬LAPICµÄISR¡¢ ......

WindowsÏÂÐ¶ÔØLinuxϵͳ

   ÎҵĵçÄÔ°²×°ÁË˫ϵͳ£¬WindowsºÍLinux£¬²»¹ýÓÉÓÚLinuxÔÚ×î½üÒ»¶Îʱ¼äÄÚ²»»áʹÓã¬ËùÒÔÎÒ´òËãɾ³ýLinux¡£
   ɾ³ýLinux×îÐèҪעÒâµÄµØ·½£¬¾ÍÊÇMBR£¨Master Boot Record£©¡£ÔÚɾ³ýLinux·ÖÇøÇ°£¬ÎÒÃÇÐèÒª½«Æô¶¯WindowsµÄÒýµ¼ÐÅϢдÈëMBR£¬·ñÔò£¬MBRÖеÄLinuxÒýµ¼ÐÅÏ¢£¬µ±È»¾Í²»ÄÜÆô¶¯WindowsÏµÍ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ