Linux2.6內核驅動hello.c

 hello.c代碼

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

MODULE_LICENSE(
"Dual BSD/GPL");

static char *whom="world";

static int howmany = 1 ;

module_param(howmany, 
int ,S_IRUGO);

module_param(whom, charp , S_IRUGO);

static int hello_init(void)
{
 
int i;
 
for(i=0;i<howmany;i++)
 
{
  printk(KERN_ALERT
"Hello,%s ",whom);
 }


 
return 0;
}


static void hello_exit(void)
{
 printk(KERN_ALERT
"Goodbye,cruel world ");
}


module_init(hello_init);
module_exit(hello_exit);
/**************************************************/


Makefile

/**//**************************************************/
# If KERNELRELEASE 
is defined, we've been invoked from the

# kernel build system and can use its language.

ifneq ($(KERNELRELEASE),)

    obj
-m := hello.o 



# Otherwise we were called directly from the command

# line; invoke the kernel build system.

else



    KERNELDIR 
?= /lib/modules/$(shell uname -r)/build

    PWD  :
= $(shell pwd)



default:

    $(MAKE) 
-C $(KERNELDIR) M=$(PWD) modules

clean:


endif
/**************************************************/

 

在linux2.6的內核下

make -C ~/kernel-2.6 M=`pwd` modules

-C的後面~是kernel的源代碼路徑,注意後面pwd,不是單引'是tab上面`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章