当前位置: 首页 > 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);

http://www.dtcms.com/a/25358.html

相关文章:

  • 力扣-二叉树-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 使用详解
  • Spring Boot实战:拦截器
  • 高效执行自动化用例:分布式执行工具pytest-xdist实战!
  • oracle序列每天重置
  • Java 设计模式总结
  • 用 WOW.js 和 animate.css 实现动画效果
  • tomcat 使用域名访问失败
  • 项目一 - 任务1:了解Java编程语言
  • AUTO TECH China 2025 广州国际汽车技术展览会:引领汽车科技新潮流
  • 【WPS+VBA】表格中重复表头与页码的批量删除
  • mybatis存储过程返回list