Linux内核编程(1)
前言
不同于windows驱动程序,Linux设备驱动程序在与硬件设备之间建立了标准的抽象接口。通过这个接口,用户可以像处理普通文件一样,通过open,close,read,write等系统调用对设备进行操作,如此一来也大大简化了linux驱动程序的开发,后面会看到,通过file_operations这个结构体(实际上是一个函数指针的集合),把驱动的操作和设备号联系起来,程序员所要做的工作只是通过file_operations挂接自己的系统调用函数。
linux中的设备可大致分为字符设备、块设备、网络设备等。本文关注的是字符设备驱动的编写。
linux内核源码中驱动程序占了相当大的比重,这些驱动程序可以被编译进内核,也可以编译为模块以供动态加载,为了便于调试以及一些列不可告人的目的,猪的第一个驱动程序将以模块的形式出现(废话,难道为了一个什么都不做的驱动重新编译内核?)
一、代码编写
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、使用步骤
1.helloworld.c
代码如下(示例):
#include <linux/module.h>//与module相关的信息#include <linux/kernel.h>
#include <linux/init.h> //与init相关的函数static int __init hellokernel_init(void)
{printk(KERN_INFO "Hello kernel!進入拉\n");return 0;
}static void __exit hellokernel_exit(void)
{printk(KERN_INFO "Exit kernel!退出啦\n");
}module_init(hellokernel_init);
module_exit(hellokernel_exit);MODULE_LICENSE("GPL");
MODULE_AUTHOR("juchunyu");
2.Makefile
代码如下(示例):
obj-m := helloworld.oPWD := $(shell pwd)all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesclean:rm -rf *.o *~ core .*.cmd *.mod.c ./tmp_version
上述两个文件放到同一个目录下,执行如下命令:
make #生成helloworld.ko文件insmod helloworld.ko #安装驱动模块rmmod helloworld.ko #卸载驱动模块dmesg #打印系统信息输出如下:[ 2273.660475] Hello kernel!進入拉[ 2297.612313] Exit kernel!退出啦
Linux内核编程(1)相关推荐
- 初探linux内核编程,参数传递以及模块间函数调用
一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...
- linux内核_Linux驱动编程的本质就是Linux内核编程
由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linux内核的特点. 这篇文章将会帮助读者打下Linux驱动编程的基础知识. 本篇文章分为如下三个小节进行 ...
- 【华为云技术分享】Linux内核编程环境 (1)
在上一期中,我们介绍了Linux内核的源码结构,这一期我们介绍Linux内核编程环境,首先介绍的是Linux内核的编译方法. 一.Linux内核编译方法 本期中我们以Linux 4.19.94版内核来 ...
- Linux内核编程接口函数
Linux内核编程接口函数 转载请注明出处: http://blog.csdn.net/drivelinux/article/details/8656280 字符设备相关函数 1.alloc_chrd ...
- linux内核编程(hello world示例程序)
linux内核编程(hello world) Linux可加载内核模块是 Linux 内核的最重要创新之一.它们提供了可伸缩的.动态的内核.其它开发者可以不用重新编译整个内核便可以开发内核层的程序,极 ...
- Linux 内核编程指南
Linux 内核编程指南 PeterJay Salzman MichaelBurian OriPomerantz Copyright© 2001 Peter Jay Salzman 2007−05 ...
- Linux 内核编程风格
Linux 内核编程风格 (518 个字於此篇帖子) (已阅读: 1177 次) 这篇短小的文章是对Linux内核编程风格的建议.编程风格非常的个性化,而且,我并不想将我的观点强加给任何人,但是为了变 ...
- linux内核编程(一)
这些天在学习linux内核编程,就在这里小小的show以下. 首先编写如下的linux代码.并命名为hello.c 这里你应该注意亮点: 第一.linux内核编程,不同于普通的用户态下的编程:有一个入 ...
- linux进程睡眠编程,linux内核编程-可睡眠锁之SRCU
linux内核编程-可睡眠锁之SRCU DEFINE_SRCU DEFINE_SRCU_STATIC static修饰的定义只能在该c文件中使用,用于保护命名空间. 如果一个函数里面使用了static ...
- linux内核编程_内核线程kthread_run
linux内核编程_内核线程kthread_run 1. 简述: 2. 使用示例: 3. 详述: 1. 简述: 头文件: include/linux/kthread.h 数据类型: struct ta ...
最新文章
- LOJ2586 APIO2018 选圆圈
- python【力扣LeetCode算法题库】—两数之和
- 2018中国互联网企业100强揭晓!阿里巴巴名列榜首
- SAP CRM呼叫中心工具栏按钮的渲染逻辑 - 缺CSDN
- 看明星合影争C位,学PPT中C位排版法
- 基于JAVA+SpringMVC+Mybatis+MYSQL的相声购票系统
- 多分类支持向量机及其Python实现
- netconsole 重定向kernel日志到远程服务器
- 手机WAPI功能检测常见问题分析(系列连载一):证书安装
- Latex 合并多个pdf文件
- 论界面设计与用户需求
- 程序员的桌面画风竟然是酱紫的!
- win10系统安装和优化
- EPOCH、INTERATION、BATCH_SIZE的区别
- html auto自动,css中auto什么意思?
- 游艇租用问题算法c语言,租用游艇问题 算法设计分析
- Git提交报错git-upload-pack
- MATLAB矩阵的建立
- 零基础入门MATLAB(一篇十分钟)
- 窗前花相映 一抹杏腮红 | 腮红用户画像分析
热门文章
- Multisim14仿真使用汇总
- C语言打开微信提示找不到文件,系统弹出提示:windows找不到文件 c:\user\admini~1\temp\appdata\xlliveud。。。什么原因?...
- Github客户端下载慢的解决方法
- 【完美解决】ds1302外置时钟模块重复初始化时间问题(单片机掉电,模块电池供电)
- 使用wireshark抓包分析实战
- SWAT模型在水文水资源、面源污染模拟中的实践技术
- MathType公式编辑器的下载安装及导入Word
- 网易云音乐android变臃肿,网易云音乐版权少,为什么用户还能突破8亿??
- JavaScript — json文件的读取与写入
- 自己的阿里云镜像加速器查找