当前位置: 首页 > news >正文

Linux驱动学习(二)--字符设备

设备分类

  • 字符设备
  • 块设备
  • 网络设备

内核结构图:

 字符设备号

字符设备号是32位的无符号整型值

  • 高12位:主设备号
  • 低20位:次设备号

 查看设备号

  • cat /proc/devices

设备号构造

 直接使用宏MKDEV

#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))

设备号注册/注销

注册设备号函数:

 设备号注销函数

实验 

结果

代码

 

/*
 *chr_dev.c
 *Original Author: luoyunheng, 2025-02-19
 *
 * Linux驱动之字符设备的设备号
*/

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kdev_t.h>
#include <linux/fs.h>

static int major = 222;
static int minor = 0;

static dev_t devno;

static int hello_init(void)
{
    int result;
    printk("hello_init\n");
    devno = MKDEV(major, minor);

    result = register_chrdev_region(devno, 1, "loh");
    if (result < 0 ) {
        printk("register dev number failed\n");
        return result;
    }

    return 0;
}

static void hello_exit(void)
{
    printk("hello_exit\n");
    unregister_chrdev_region(devno, 1);\
    return;
}

module_init(hello_init);
module_exit(hello_exit);

相关文章:

  • 力扣-二叉树-700 二叉搜索树中的搜索
  • Springboot接口返回的时间和数据库差了八小时
  • ctfshow web入门 web11-web24
  • Android GreenDAO 适配 AGP 8.0+
  • 使用 Redis 实现 RBAC 权限管理
  • Python毕业设计选题:基于python的酒店推荐系统_django+hadoop
  • 腾讯云ChatBI通过中国信通院大模型驱动的智能数据分析工具专项测试
  • Myplater项目
  • @RestController和@RequestBody注解含义
  • 出现 [ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json (env: Windows,mp 解决方法
  • VSCode本地python包“无法解析导入”
  • 千峰React:脚手架准备+JSX基础
  • Python 文件操作利器:FileUtils 工具类深度剖析
  • 赛前启航 | Azure 应用开发实战指南:开启创意的无限可能
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 15
  • 工业安全的智能哨兵:AI如何筑起生产线的“数字防火墙“
  • React实现自定义图表(线状+柱状)
  • Spring中Bean的四种实例化方法
  • 对称加密算法——IDEA加密算法
  • C# ConcurrentBag 使用详解
  • 中美“第二阶段”贸易协定是否会在会谈中提出?商务部回应
  • 常州市委原常委、组织部部长陈翔调任江苏省民宗委副主任
  • 酒店取消订单加价卖何以屡禁不绝?专家建议建立黑名单并在商家页面醒目标注
  • 明查|这是“C919迫降在农田”?实为飞机模型将用于科普体验
  • 我国外汇储备规模连续17个月稳定在3.2万亿美元以上
  • 央行行长详解降准:将释放长期流动性1万亿,整体存款准备金率平均水平降至6.2%