前言

不同于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)相关推荐

  1. 初探linux内核编程,参数传递以及模块间函数调用

    一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...

  2. linux内核_Linux驱动编程的本质就是Linux内核编程

    由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linux内核的特点. 这篇文章将会帮助读者打下Linux驱动编程的基础知识. 本篇文章分为如下三个小节进行 ...

  3. 【华为云技术分享】Linux内核编程环境 (1)

    在上一期中,我们介绍了Linux内核的源码结构,这一期我们介绍Linux内核编程环境,首先介绍的是Linux内核的编译方法. 一.Linux内核编译方法 本期中我们以Linux 4.19.94版内核来 ...

  4. Linux内核编程接口函数

    Linux内核编程接口函数 转载请注明出处: http://blog.csdn.net/drivelinux/article/details/8656280 字符设备相关函数 1.alloc_chrd ...

  5. linux内核编程(hello world示例程序)

    linux内核编程(hello world) Linux可加载内核模块是 Linux 内核的最重要创新之一.它们提供了可伸缩的.动态的内核.其它开发者可以不用重新编译整个内核便可以开发内核层的程序,极 ...

  6. Linux 内核编程指南

    Linux 内核编程指南   PeterJay Salzman MichaelBurian OriPomerantz Copyright© 2001 Peter Jay Salzman 2007−05 ...

  7. Linux 内核编程风格

    Linux 内核编程风格 (518 个字於此篇帖子) (已阅读: 1177 次) 这篇短小的文章是对Linux内核编程风格的建议.编程风格非常的个性化,而且,我并不想将我的观点强加给任何人,但是为了变 ...

  8. linux内核编程(一)

    这些天在学习linux内核编程,就在这里小小的show以下. 首先编写如下的linux代码.并命名为hello.c 这里你应该注意亮点: 第一.linux内核编程,不同于普通的用户态下的编程:有一个入 ...

  9. linux进程睡眠编程,linux内核编程-可睡眠锁之SRCU

    linux内核编程-可睡眠锁之SRCU DEFINE_SRCU DEFINE_SRCU_STATIC static修饰的定义只能在该c文件中使用,用于保护命名空间. 如果一个函数里面使用了static ...

  10. linux内核编程_内核线程kthread_run

    linux内核编程_内核线程kthread_run 1. 简述: 2. 使用示例: 3. 详述: 1. 简述: 头文件: include/linux/kthread.h 数据类型: struct ta ...

最新文章

  1. LOJ2586 APIO2018 选圆圈
  2. python【力扣LeetCode算法题库】—两数之和
  3. 2018中国互联网企业100强揭晓!阿里巴巴名列榜首
  4. SAP CRM呼叫中心工具栏按钮的渲染逻辑 - 缺CSDN
  5. 看明星合影争C位,学PPT中C位排版法
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的相声购票系统
  7. 多分类支持向量机及其Python实现
  8. netconsole 重定向kernel日志到远程服务器
  9. 手机WAPI功能检测常见问题分析(系列连载一):证书安装
  10. Latex 合并多个pdf文件
  11. 论界面设计与用户需求
  12. 程序员的桌面画风竟然是酱紫的!
  13. win10系统安装和优化
  14. EPOCH、INTERATION、BATCH_SIZE的区别
  15. html auto自动,css中auto什么意思?
  16. 游艇租用问题算法c语言,租用游艇问题  算法设计分析
  17. Git提交报错git-upload-pack
  18. MATLAB矩阵的建立
  19. 零基础入门MATLAB(一篇十分钟)
  20. 窗前花相映 一抹杏腮红 | 腮红用户画像分析

热门文章

  1. Multisim14仿真使用汇总
  2. C语言打开微信提示找不到文件,系统弹出提示:windows找不到文件 c:\user\admini~1\temp\appdata\xlliveud。。。什么原因?...
  3. Github客户端下载慢的解决方法
  4. 【完美解决】ds1302外置时钟模块重复初始化时间问题(单片机掉电,模块电池供电)
  5. 使用wireshark抓包分析实战
  6. SWAT模型在水文水资源、面源污染模拟中的实践技术
  7. MathType公式编辑器的下载安装及导入Word
  8. 网易云音乐android变臃肿,网易云音乐版权少,为什么用户还能突破8亿??
  9. JavaScript — json文件的读取与写入
  10. 自己的阿里云镜像加速器查找