LLD3学习笔记(2) hello world
来源:互联网 发布:origin转换为矩阵 编辑:程序博客网 时间:2024/05/17 11:35
一 、系统环境
系统:ubuntu5.04内核版本:2.6.10
二 、hello world模块
//hello.c#include<linux/init.h>#include<linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT"hello,world\n");return 0;}static void hello_exit(void){printk(KERN_ALERT"Goodby , cruel world\n");}module_init(hello_init);module_exit(hello_exit);三、编译和装载
#Makefileifneq ($(KERNELRELEASE),) obj-m:=hello.oelse KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd)default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesendif
由于刚开始学习,对Makefile不是很了解,不懂里面的原理,后面学会有时间再解释下。
编译完之后加载、卸载。
#insmod hello.ko #rmmod hello.ko #dmesg | tail -2hello,worldGoodby , cruel world四、使用moduleparam
//hello_param.c#include<linux/init.h>#include<linux/module.h>#include<linux/moduleparam.h>MODULE_LICENSE("Dual BSD/GPL");static char *who = "xxxx";static int num = 10;module_param(who, charp, S_IRUGO);module_param(num, int, S_IRUGO);static int hello_init(void){ char i; for(i=0; i<num; i++) printk(KERN_ALERT"%d hello,world,%s\n" , i ,who); return 0;}static void hello_exit(void){ printk(KERN_ALERT"Goodby , cruel world\n");}module_init(hello_init);module_exit(hello_exit);
#Makefileifneq ($(KERNELRELEASE),) obj-m:=hello_parama.oelse KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd)default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesendif
root@ychx:hello_parama# insmod hello_parama.ko who="yyyyy" num=5root@ychx:hello_parama# rmmod hello_paramaroot@ychx:hello_parama# dmesg | tail -6[104286.928300] 0 hello,world,yyyyy[104286.928316] 1 hello,world,yyyyy[104286.928317] 2 hello,world,yyyyy[104286.928318] 3 hello,world,yyyyy[104286.928319] 4 hello,world,yyyyy[104290.874700] Goodby , cruel world
0 0
- LLD3学习笔记(2) hello world
- Hello World学习笔记
- WTL学习笔记——(2)WTL Hello World !
- Android学习笔记(2)Hello World Again
- Qt 学习之路 2(3):Hello, world! 笔记
- Flask学习总结笔记(2)-- Hello world程序
- Nebula3学习笔记(2): Hello World
- struts2学习笔记2-strut2 hello world
- angular 2 学习笔记 1--Hello world
- Android学习笔记(四) Hello World
- Python学习笔记(一)Hello World
- maven学习笔记(一)hello world
- springMVC学习笔记一(hello world)
- docker学习笔记(二):Hello World
- Unity3D学习笔记(1)hello world
- [C学习笔记].Hello World
- Jquery学习笔记:Hello World
- xlib学习笔记-hello world
- ckeditor换kama皮肤
- redis队列处理文件并发(日志处理)
- ActiveMQ消息中间件Producer和Consumer
- 用户浏览器禁用了cookie,SessionID如何传递
- java和javascript双引号嵌套的问题
- LLD3学习笔记(2) hello world
- Java Socket和ServerSocket编程 NIO
- anroid sqlite数据库操作框架
- Callable与Runable接口 submit与execute区别
- java concurrent包自带线程池和队列详细讲解
- ActiveMQ session.close与session.commit的区别
- ActiveMQ消息传送模型
- ActiveMQ BrokeUrl的配置和消息持久化配置
- Linux vi下常用实用命令