【Linux设备驱动】--0x01简单的字符设备模块

简介: 源文件 #include #include #include #include

源文件

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>

static int g_simple_cdev_major_no;
static struct class *g_simple_cdev_class;
static struct device *g_simple_cdev_device;

static int simple_cdev_open(struct inode *inode, struct file *file)
{
    return 0;
}

static int simple_cdev_release(struct inode *inode, struct file *file)
{
    return 0;
}

static int simple_cdev_mmap(struct file *file, struct vm_area_struct *vma)
{
    return 0;
}

/* File operations struct for character device */
static const struct file_operations g_simple_cdev_fops = {
    .owner   = THIS_MODULE,
    .open    = simple_cdev_open,
    .release = simple_cdev_release,
    .mmap    = simple_cdev_mmap,
};

static int __init simple_cdev_init(void)
{
    g_simple_cdev_major_no = register_chrdev(0, "simple_cdev", &g_simple_cdev_fops);
    g_simple_cdev_class  = class_create(THIS_MODULE, "simple_cdev");
    g_simple_cdev_device = device_create(g_simple_cdev_class, NULL,
        MKDEV(g_simple_cdev_major_no, 0), NULL, "simple_cdev");

    return 0;
}

static void __exit simple_cdev_exit(void)
{
    printk(KERN_INFO "Goodbye world\n");
}

MODULE_LICENSE("GPL");
module_init(simple_cdev_init);
module_exit(simple_cdev_exit);
  1. 由regiser_chrdev自动申请某个设备号
  2. 由class_create和device_create自动生成字符设备结点/dev/simple_cdev,设备号从regiset_chrdev获取

Makefile

obj-m     := simple_cdev.o
PWD       := $(shell pwd)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build

build: 
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

install:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
目录
相关文章
|
16天前
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
22 6
|
16天前
|
存储 缓存 Unix
Linux 设备驱动程序(三)(上)
Linux 设备驱动程序(三)
15 3
|
16天前
|
Linux
Linux 设备驱动程序(四)
Linux 设备驱动程序(四)
9 1
|
16天前
|
存储 数据采集 缓存
Linux 设备驱动程序(三)(中)
Linux 设备驱动程序(三)
13 1
|
16天前
|
存储 前端开发 大数据
Linux 设备驱动程序(二)(中)
Linux 设备驱动程序(二)
15 1
|
16天前
|
缓存 安全 Linux
Linux 设备驱动程序(二)(上)
Linux 设备驱动程序(二)
16 1
|
9天前
|
Linux API
Linux里的高精度时间计时器(HPET)驱动 【ChatGPT】
Linux里的高精度时间计时器(HPET)驱动 【ChatGPT】
|
16天前
|
存储 缓存 安全
Linux 设备驱动程序(三)(下)
Linux 设备驱动程序(三)
11 0
|
16天前
|
安全 Linux 程序员
Linux 设备驱动程序(二)(下)
Linux 设备驱动程序(二)
10 0
|
9天前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
168 73