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

有哪些做批发的网站腾讯企点官网

有哪些做批发的网站,腾讯企点官网,公司建网站会计分录,专业做尼泊尔的旅行网站这段代码实现了 Linux 设备模型中的一个重要功能:**在 /sys/dev 目录下创建设备号到实际设备的符号链接**。以下从五个关键维度进行深度解析: --- ### 一、功能定位与作用 #### 1. **核心功能** - 在 /sys/dev/char/ 或 /sys/dev/block/ 目录下创建形如…

这段代码实现了 Linux 设备模型中的一个重要功能:**在 `/sys/dev` 目录下创建设备号到实际设备的符号链接**。以下从五个关键维度进行深度解析:

---

### 一、功能定位与作用
#### 1. **核心功能**
- 在 `/sys/dev/char/` 或 `/sys/dev/block/` 目录下创建形如 `<major>:<minor>` 的符号链接,指向设备的真实 sysfs 路径
- 提供**设备号→设备**的快速查找能力

#### 2. **典型路径示例**
```bash
# 字符设备
/sys/dev/char/4:64 → ../../devices/virtual/tty/ttyS0

# 块设备
/sys/dev/block/8:0 → ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
```

---

### 二、代码逻辑分解

#### 1. **设备目录选择策略 (`device_to_dev_kobj`)**
```c
if (dev->class)
    kobj = dev->class->dev_kobj;  // 使用类指定的kobj(如块设备类指向sysfs_dev_block_kobj)
else
    kobj = sysfs_dev_char_kobj;   // 默认字符设备目录
```
- **设计意图**:
  - 块设备需要特殊处理(如磁盘分区)
  - 允许设备类自定义 dev_kobj(通过 `class->dev_kobj`)

#### 2. **设备号格式化**
```c
format_dev_t(devt_str, dev->devt);  // 将dev_t转换为"major:minor"格式
```
- 示例:`MKDEV(4, 64)` → `"4:64"`

#### 3. **符号链接创建**
```c
sysfs_create_link(kobj, &dev->kobj, devt_str);
```
- 创建从设备号到设备对象的持久关联

---

### 三、设计思想剖析

#### 1. **双视图分离原则**
| 视图类型       | 路径                  | 组织方式         | 用途                     |
|----------------|-----------------------|------------------|--------------------------|
| **设备号视图** | `/sys/dev/{char,block}`| 按设备号分类     | 通过设备号快速定位设备   |
| **拓扑视图**   | `/sys/devices/`       | 按硬件连接关系   | 反映物理/逻辑设备层次    |

#### 2. **动态决策机制**
- **默认策略**:字符设备优先(历史兼容性)
- **类覆盖机制**:块设备类可重定向到 `/sys/dev/block/`
- **显式禁用**:设置 `class->dev_kobj = NULL` 跳过创建

#### 3. **生命周期同步**
- 必须在设备注册到类**之前**设置 `class->dev_kobj`
- 保证 `create` 和 `remove` 操作对链接存在性判断一致

---

### 四、关键数据结构

```mermaid
classDiagram
    class device {
        +dev_t devt
        +struct class *class
        +struct kobject kobj
    }
    class class {
        +struct kobject *dev_kobj
    }
    device "1" --> "0..1" class
```

- **设备号存储**:`dev->devt`(32位,包含主次设备号)
- **目录选择**:通过 `class->dev_kobj` 实现多态

---

### 五、实际应用场景

#### 1. **字符设备创建**
```c
struct cdev my_cdev;
dev_t dev = MKDEV(250, 0);
cdev_add(&my_cdev, dev, 1);
// 自动在 /sys/dev/char/250:0 创建链接
```

#### 2. **块设备特殊处理**
```c
struct class block_class = {
    .name = "block",
    .dev_kobj = sysfs_dev_block_kobj,  // 重定向到block目录
};
```

#### 3. **禁用链接创建**
```c
struct class my_class = {
    .name = "misc",
    .dev_kobj = NULL  // 不创建/dev/链接
};
```

---

### 六、错误处理与边界条件

#### 1. **异常情况处理**
| 场景                    | 处理方式                     | 返回值  |
|-------------------------|----------------------------|---------|
| devt未初始化            | 不会调用此函数              | -       |
| kobj为NULL              | 跳过链接创建                | 0       |
| 设备号格式化失败        | 不可能(devt_str静态分配)  | -       |
| 符号链接已存在          | 返回-EEXIST                | -EEXIST |

#### 2. **并发安全**
- 依赖上层调用(如 `device_add`)保证设备注册的原子性
- sysfs 内部通过 `kernfs_mutex` 保护链接操作

---

### 七、扩展思考

#### 1. **为什么需要设备号视图?**
- **历史兼容**:与传统的 `/dev` 目录结构对应
- **调试便利**:通过 `ls -l /sys/dev/char` 快速查看所有字符设备
- **逆向查找**:已知设备号时快速定位设备信息

#### 2. **与 udev 的关系**
- udev 会监控 `/sys/dev/` 下的变化
- 设备链接创建后触发 udev 规则匹配,生成 `/dev` 节点

#### 3. **性能影响**
- 每个设备增加:
  - 1个符号链接(约24字节内存)
  - 1次哈希表插入(设备号→kobject查找)

这段代码展现了 Linux 设备模型如何优雅地桥接传统设备号体系与现代 sysfs 架构,通过简单的链接机制实现了设备多维访问路径的统一。

http://www.dtcms.com/wzjs/163210.html

相关文章:

  • cnzz站长统计怎么添加到博客网站网络商城应该如何推广
  • 企业官方网站建设宁波seo企业网络推广
  • 如何做网站服务器映射百度提交收录
  • adobe business catalyst wordpress百度关键词seo优化
  • 自家电脑做网站服务器w7花生壳恶意点击软件有哪些
  • 站长之家下载网络推广策划
  • 做设计英文网站营销案例100例小故事及感悟
  • 网站添加关键词会不会企业新闻稿发布平台
  • 幸福人寿保险公司官方网站电子保单打印百度广告投放公司
  • 深圳做官网公司网站优化排名技巧
  • 做板子焊接的网站的公司名字外贸建站与推广如何做
  • 本地wordpress 固定连接上海最专业的seo公司
  • 网站建设违约收录查询站长工具
  • wordpress速度优化插件青海seo技术培训
  • 域名网站大全备案查询站长之家
  • 做教育网站需要规划哪些内容常见的推广平台有哪些
  • wordpress ftp 安装长沙seo排名收费
  • 网站建设电子商务课总结和体会小熊代刷推广网站
  • 青岛市建设工程青岛关键词优化报价
  • 一级a做爰免费网站小程序开发平台有哪些
  • 聊城网站备案seo外链购买
  • 怎么做农产品垂直网站百度首页纯净版怎么设置
  • 温州网站设计如何宣传推广自己的产品
  • 苏州网站建设致宇搜索引擎营销的概念
  • 黑色门户网站源码巨量算数数据分析
  • 做不做生意都要知道的网站网站运营主要做什么
  • 营销型网站建设亏1seo营销培训咨询
  • 网站运营专员做六休一关键词seo排名优化如何
  • 定制家具网站源代码百度关键词推广2元一天
  • 为什么做动漫短视频网站东莞优化排名推广