linux dirver demo

什么是 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 
#include 
#include 
#include 
#include 

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)