linux 内核程序 hello,Linux内核编程helloworld代码演示

1.hello.c#include

#include

#include

#include

#include

static short int a=1;

static int b=2;

static long int c=3;

static char *d="bp";

static int myintArray[2]={-1,-1};

static int arr_argc=0;

module_param(a,short,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);

MODULE_PARM_DESC(a,"a short integer");

module_param(b,int ,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);

MODULE_PARM_DESC(b,"an integer");

module_param(c,long,S_IRUSR);

MODULE_PARM_DESC(c,"a long integer");

module_param(d,charp,0000);

MODULE_PARM_DESC(d,"a char string");

module_param_array(myintArray,int,&arr_argc,0000);

MODULE_PARM_DESC(myintArray,"an array of integers");

static int __initdata hellodata=3;

static int __init bp_init(void){

int i;

printk(KERN_ALERT "hello world\n");

printk(KERN_ALERT "a is a short integer:%d\n",a);

printk(KERN_ALERT "b is a integer:%d\n",b);

printk(KERN_ALERT "c is a long integer:%d\n",c);

printk(KERN_ALERT "d is a string:%s\n",d);

for(i=0;i

printk(KERN_ALERT "myintArray[%d] is %d\n",i,myintArray[i]);

printk(KERN_ALERT "\nhi,this is bp %d \n",hellodata);

return 0;

}

static void __exit bp_exit(void){

printk(KERN_ALERT "\ngoobye bp\n");

}

//当向内核插入模块时调用init函数

module_init(bp_init);

//从内核删除模块时则调用exit函数。

module_exit(bp_exit);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("by bp");

MODULE_DESCRIPTION("this is test of bp");

MODULE_SUPPORTED_DEVICE("testdevice");

2.Makefileobj-m := hello.o

server-objs := hello.o

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

PWD := $(shell pwd)

default:

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

clean:

rm -f *.o *.ko *.mod.c modules.* Module.*

3.输入make进行编译

bVcQWQX

(没有错误就是正常提示。。)

ls查看是否生成.ko等文件

bVcQWRw

4.使用insmod将模块插入内核中,使用方法:#insmod XXX.kosudo insmod hello.ko

5.dmesg查看内核输出dmesg

bVcQWRM

6.使用rmmod将模块从内核中删除,使用方法:#rmmod XXX.kosudo rmmod hello

bVcQWRS

此时程序退出了,使用dmesg查看打印了module_exit方法:

bVcQWSy

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值