美文网首页
linux dirver demo

linux dirver demo

作者: AppleLin_cdea | 来源:发表于2021-11-20 13:58 被阅读0次

什么是 linux dirver ?

它是一个程序,可以动态安装和卸载,它在 module 中

简单示例

一个 Makefile 和 一个 demo.c

Makefile

#!/bin/bash

obj-m += demo.o

KDIR := /lib/modules/$(shell uname -r)/build

PWD ?= $(shell pwd)

all:
    make -C $(KDIR) M=$(PWD) modules

clean:
    make -C $(KDIR) M=$(PWD) clean

demo.c

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/uaccess.h>

static int __init apple_init(void)    //驱动入口函数
{
    printk(KERN_EMERG "apple_init\r\n");
    return 0;
}

static void __exit apple_exit(void)    //驱动出口函数
{
    printk(KERN_EMERG "apple_exit\r\n");
}
module_init(apple_init);    //注册入口函数
module_exit(apple_exit);    //注册出口函数

MODULE_LICENSE("GPL");    //同意GPL开源协议,就不会打印警告信息了
MODULE_AUTHOR("apple");    //还可以再添加上作者名称

测试

~/apple/project/driver/demo$ sudo dmesg -C
apple:~/apple/project/driver/demo$ ls
demo.c  demo.ko  demo.mod.c  demo.mod.o  demo.o  Makefile  modules.order  Module.symvers
apple:~/apple/project/driver/demo$ dmesg
apple:~/apple/project/driver/demo$ sudo insmod demo.ko 
apple:~/apple/project/driver/demo$ dmesg 
[71311.800245] apple_init
apple:~/apple/project/driver/demo$ sudo rmmod demo
apple:~/apple/project/driver/demo$ dmesg
[71311.800245] apple_init
[71321.339982] apple_exit

相关文章

网友评论

      本文标题:linux dirver demo

      本文链接:https://www.haomeiwen.com/subject/qdoytrtx.html