Linux开发模块,在本机上看调试信息的方法走通了。当前版本号2.6.32-32-generic

uname –r

能够查询

这里取module_param()作为样例。

该宏被定义在include/linux/moduleparam.h文件里,详细定义例如以下:

#define module_param(name, type, perm)                

    module_param_named(name, name, type, perm)

当中使用了 3个參数:要传递的參数变量名, 变量的数据类型, 以及訪问參数的权限。

hello.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h> MODULE_LICENSE("Dual BSD/GPL"); static char *flag="world";
static int times = 5;
module_param(times,int,S_IRUSR);
module_param(flag,charp,S_IRUSR); static int hello_init(void)
{
int i;
for(i=0;i<=times;i++)
{
printk("(%d)hello ,%s\n",i,flag); //KERN_DEBUG
}
return 0;
} static void hello_exit(void)
{
printk("Goodbye,%s\n",flag); //KERN_DEBUG
} module_init(hello_init);
module_exit(hello_exit);

这个文件须要编译成模块,採用

Makefile

obj-m	:= hello.o
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd) default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

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

1),-C $(KERNELDIR)

表示在$(KERNELDIR)文件夹下运行make命令。

2),M=$(PWD)

表示包括$(PWD)下的Makefile文件。

3),modules

表示模块编译

在终端中

make

生成hello.ko模块

Insmod hello.ko flag=”daniu” times=5

root@zhangw:/mnt/hgfs/test_curl/core# dmesg -c

[ 9057.070444] Goodbye,\xffffffe2\xffffff80\xffffff9d\xffffff80\xffffff9ddaniu\xffffffe2\xffffff80\xffffff9d\xffffff80\xffffff9d

[ 9059.357777] (0)hello ,daniu

[ 9059.357781] (1)hello ,daniu

[ 9059.357783] (2)hello ,daniu

[ 9059.357784] (3)hello ,daniu

[ 9059.357785] (4)hello ,daniu

[ 9059.357786] (5)hello ,daniu

rmmod hello.ko

hello.c内核模块编译 -- linux内核的更多相关文章

  1. Centos下编译Linux内核

    Linux内核编译是一件简单却费事的事.但是独立的编译linux内核会帮助你很好的理解Linux内核的工作机理. 首先编译linux内核我们需要在当前linux操作系统下安装gcc编译器,因为我是Ce ...

  2. 为什么要编译Linux内核?

    新的内核修订了旧内核的bug,并增加了许多新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核. 通常,更新的内核会支持更多的硬件,具 ...

  3. 自定义配置编译linux内核

    1 编译linux内核原因一般情况下,我们是不需要重新去编译linux内核的,但如果你发现你需要修改内核的某个部分或者说你需要的某个模块并没有编译进内核,那里你可以通过重新编译内核来满足你的需求,比如 ...

  4. 35、在编译Linux内核中增加程序需要完成以下3项工作

    在编译Linux内核中增加程序需要完成以下3项工作: 将编写的源代码拷入Linux内核源代码的相应目录. 在目录的Kconfig文件中增加关于新源代码对应项目的编译配置选项 在目录的Makefile文 ...

  5. 安装debian总结以及编译linux内核

    1. 安装debian 使用unetbootin(http://unetbootin.sourceforge.net/)来创建启动盘,并且下载debian的基本包. 将磁盘进行压缩操作,并且保留出一个 ...

  6. 如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录

    最近帮一位上海的朋友搞一块小板,在ubuntu15.04 vivid上已经加载了对应了.ko驱动包 但关键是系统根本就枚举不到该声卡ALC5640,试了OpenSUSE也是一样的结果,看来是内核漏加载 ...

  7. 编译linux内核时出错

    在编译linux内核的时候使用make menuconfig 可能出现下面的错误 *** Unable to find the ncurses libraries or the*** required ...

  8. Mac下重新编译Linux内核

    Mac下重新编译Linux内核 操作系统实验,要求添加系统调用并重新编译内核,这里记录一下编译内核的过程 0.下载VirtualBox 博主一直用parallel desk,但因为驱动等问题,在PD上 ...

  9. 编译Linux内核(Mac OS平台)

    操作系统第一次实验需要编译Linux内核,我之前在Mac上一直使用的都是Parallels Desktop这个软件,所以这次也将课程网站上提供的Ubuntu安装在了PD上,但是编译完内核后无法进入Ub ...

随机推荐

  1. php高并发秒杀解决方案

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/super_runman/article/details/53037151 在秒杀.抢火车票等地方,我 ...

  2. spring扫描自定义注解并进行操作

    转载:http://blog.csdn.net/cuixuefeng1112/article/details/45331233 /**  * 扫描注解添加服务到缓存以供判断时候为对外开放service ...

  3. 11.2 Android显示系统框架_android源码禁用hwc和GPU

    2. 修改tiny4412_Android源码禁用hwc和gpu(厂家不会提供hwc和gpu的源代码,没有源代码就没法分析了,因此在这里禁用该功能并用软件库实现)最终源码: git clone htt ...

  4. 【例题 6-6 UVA - 679】Dropping Balls

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 直接模拟会超时. 根据奇偶的规律.直接判断会往哪里走就好. 每个二叉树的节点.必然是左边和右边走的次数对半分.->奇数左边多一 ...

  5. KDE Plasma 5.8 的 LTS 周期正好与其所采用的 Qt 5.6 的 LTS 周期一致

    在 KDE Plasma 5.7 刚刚发布不久,KDE 开发团队就宣布了 KDE Plasma 5.8 的开发计划.这个版本将是一个 LTS 版本,据我所知,这应该是 KDE 历史上第一个 LTS 版 ...

  6. CSS垂直居中的实现

    这个问题可以说是老生常谈了,面试时经常问道,一直没整理过,这次做个系统梳理 1.利用display:table实现 从caniuse.com上查到,display:table可以兼容到IE8,以目前环 ...

  7. css 单行图片文字水平垂直居中汇总

    (1) 水平居中 a. 行内元素水平居中 因为img是行内元素(行内块级元素也一样)父级元素设置text-align:center即可,例如: <div style="width: 6 ...

  8. ocx中用自定义消息去调用自定义事件

    硬件发送消息---->接收到消息后调用回调函数DWORD __stdcall CxxxCtrl::FVI_NotifyCallBack(void *FVINOTIFYCallbackCtx,UI ...

  9. IWorkSpace与IWorkSpaceFactory与IWorkSpaceEdit

    樱木 原文 IWorkSpace与IWorkSpaceFactory与IWorkSpaceEdit 1.IWorkSpace是一个容器,里面存放着各种空间数据和非空间数据,比如Featureclass ...

  10. MapReduce&#160;图解流程

    Anatomy of a MapReduce Job In MapReduce, a YARN application is called a Job. The implementation of t ...