`

[Linux Device Drivers 3rd Notes] 2. Modules and kernel programming concepts

阅读更多

Preparation:

  1. Come up with a kernel source tree. (The latest stable kernel is 2.6.36.1, you could get it from kernel.org )
  2. Build kernel and install it on your system. 具体可以参考在ubuntu10.10上编译安装linux-2.6.36.1 kernel

Hello module coding:

hello.c

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
	printk(KERN_ALERT "Hello, allenpettle\n");
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_ALERT "Goodbye, allenpettle\n");
}

module_init(hello_init);
module_exit(hello_exit);

 linux/module.h and linux/init.h must appear in every loadable modules.

module.h contains many definitions of symbols and functions.

init.h specify initialization and cleanup functions.

module_init and module_exit are mandatory.

 

MAKEFILE 注意前面不是空格而是tab,不然编译不过

# 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
endif

obj-m
A makefile symbol used by the kernel build system to determine which modules
should be built in the current directory.

 

make / insmod / rmmod操作, dmesg看log,如果log太多,dmesg -c 清空

 

 

 

 

 

 

Kernel Space VS. User Space

System memory in Linux can be divided into two distinct regions: kernel space and user space.

Kernel space is where the kernel(i.e., the core of the operating system) executes and provides its services.

User space is that set of memory locations in which user processes run. A process is an excuting instance of a program.

Kernel space can be accessed by user processes only through the use of system calls.

 

 

  • 大小: 103.1 KB
  • 大小: 87.3 KB
分享到:
评论

相关推荐

    基于java的人事管理系统设计与实现.docx

    基于java的人事管理系统设计与实现.docx

    Spring Boot微博后端系统(spring-boot-tucao-weibo).zip

    这是一个基于Spring Boot框架开发的微博后端系统,实现前后端分离,使得后台可以独立开发和调试。该系统采用Vue实现前端界面,并提供了丰富的功能,如发布微博、评论、点赞等。技术栈包括Spring Boot、Spring Data JPA和Stomp(WebSocket)。项目提供开发环境和生产环境的运行方式,支持H2内存数据库和mySQL数据库。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看reADME.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    基于java的房产销售系统设计与实现.docx

    基于java的房产销售系统设计与实现.docx

    51单片机PID算法控制无刷直流电机proteus仿真 功能描述 1.五个按键,停止 启动,正转,反转,加速,减速 2.显示lc

    51单片机PID算法控制无刷直流电机proteus仿真 功能描述 1.五个按键,停止 启动,正转,反转,加速,减速 2.显示lcd1602,第一行设置速度set= 3.第二行实际速度speed= r min 4.第一行右上角转正显示Z,反转显示F 5.驱动用ir2101加上6个mos管, 6.程序里有pid算法

    基于java的疫苗发布和接种预约系统设计与实现.docx

    基于java的疫苗发布和接种预约系统设计与实现.docx

    基于python+DQN深度强化学习解决三维在线装箱问题+源码+项目文档+逻辑解析(毕业设计&课程设计&项目开发)

    基于python+DQN深度强化学习解决三维在线装箱问题+源码+项目文档+逻辑解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 问题描述: 物流公司在流通过程中,需要将打包完毕的箱子装入到一个货车的车厢中,为了提高物流效率,需要将车厢尽量填满,显然,车厢如果能被100%填满是最优的,但通常认为,车厢能够填满85%,可认为装箱是比较优化的。 设车厢为长方形,其长宽高分别为L,W,H;共有n个箱子,箱子也为长方形,第i个箱子的长宽高为li,wi,hi(n个箱子的体积总和是要远远大于车厢的体积),做以下假设和要求: 长方形的车厢共有8个角,并设靠近驾驶室并位于下端的一个角的坐标为(0,0,0),车厢共6个面,其中长的4个面,以及靠近驾驶室的面是封闭的,只有一个面是开着的,用于工人搬运箱子; 需要计算出每个箱子在车厢中的坐标,即每个箱子摆放后,其和车厢坐标为(0,0,0)的角相对应的角在车厢中的坐标,并计算车厢的填充率。

    基于微信小程序的医院预约挂号系统小程序设计与实现.docx

    基于微信小程序的医院预约挂号系统小程序设计与实现.docx

    基于Spring框架的数据提取作业调度系统.zip

    本项目是一个基于Spring框架的系统服务应用,它通过SFTP协议发布从后端企业系统定时或即时提取的数据。系统支持使用公钥或密码身份验证的加密sFTP通道传输数据。此外,它还监听RabbitMQ的AMQP交换,接收JSOn Web令牌(JWT)消息,触发即时数据提取作业。该项目使用Java编写,并包含日志记录、速率限制和加密等特性。其设计要求确保数据安全性和可伸缩性,支持在本地测试和多种环境的部署。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    基于java的体育馆管理系统的设计与实现.docx

    基于java的体育馆管理系统的设计与实现.docx

    技术资料分享非常好的通俗易懂的开关电源原理与维修7.zip

    技术资料分享非常好的通俗易懂的开关电源原理与维修7.zip

    基于java的餐饮管理系统的设计与实现.docx

    基于java的餐饮管理系统的设计与实现.docx

    SimpleIRSystem:简单信息检索系统.zip

    SimpleIRSystem是一个简单的信息检索系统,用于对集合进行索引和查询。该系统旨在通过生成测试集合、索引集合以及比较修改前后的引擎性能,来评估信息检索的效果。用户可以通过命令生成测试集合、索引测试集合,并分析修改前后的引擎性能。此外,该系统还支持寻找最佳的指示性术语和用于盲相关反馈的前k个文档。需要注意的是,生成测试集合时,系统忽略非UTF-8格式的文件。在进行跨所有测试集合的优化之前,必须对所有测试集合进行索引。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    基于java的高校学科竞赛平台设计与实现.docx

    基于java的高校学科竞赛平台设计与实现.docx

    weixin280游戏账号交易微信小程序+ssm.rar

    所有源码,都可正常运行

    基于ssm的的家政平台设计与实现.docx

    基于ssm的的家政平台设计与实现.docx

    基于Jenkins的Spring Boot应用部署系统.zip

    该项目是一个使用Jenkins在Unix系统中部署Spring Boot应用的示例。它主要解决了一些在集成Spring bo项目ot到持续集成环境中遇到的难题,如Jenkins进程树杀手会终止Spring Boot应用的执行,以及在Jenkins窗口查看服务器日志的问题。该项目提供了一个脚本,用于复制工件到服务器指定目录、启动应用程序并监听服务器日志,直到应用启动完成。此外,还介绍了一些配置CI环境的最佳实践,如创建服务器日志文件、调整jenkins作业配置以避免默认进程树杀手等。项目文件夹结构包括开发、系统集成测试和用户验收测试等不同环境的资源文件和应用程序文件。总之,这是一个实用的spring Boot应用CI/CD部署流程示例。 用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    车牌定位系统方案实现.zip

    车牌定位系统方案实现.

    springboot助农捐赠服务平台毕业论文.docx

    springboot助农捐赠服务平台毕业论文.docx

    机器学习、深度学习的部分常用指标

    常用指标如: 准确率(Accuracy) 精确率(P) 召回率(R) 等

    基于微信小程序的新冠疫苗预约小程序设计与实现.docx

    基于微信小程序的新冠疫苗预约小程序设计与实现.docx

Global site tag (gtag.js) - Google Analytics