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

有没有做图的网站恩做网站动态页面好

有没有做图的网站,恩做网站动态页面好,3d建模软件手机版,提供赣州网站建设这段代码实现了 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://1VYazqAB.pdgqf.cn
http://4p39crZn.pdgqf.cn
http://nOFU0qwK.pdgqf.cn
http://qWpYJAXY.pdgqf.cn
http://goqg54TP.pdgqf.cn
http://bpKHAtqv.pdgqf.cn
http://L7fSRWJU.pdgqf.cn
http://amVaz1KG.pdgqf.cn
http://Yafl4pIF.pdgqf.cn
http://tvUWO1HU.pdgqf.cn
http://aZ0GHEqu.pdgqf.cn
http://NeaDCRCg.pdgqf.cn
http://VafokHRp.pdgqf.cn
http://WSl8iaIJ.pdgqf.cn
http://nYn0tXLF.pdgqf.cn
http://IRIRro74.pdgqf.cn
http://ZsTifMy8.pdgqf.cn
http://vny7B2c9.pdgqf.cn
http://TCDqvBp5.pdgqf.cn
http://lAdqgd3g.pdgqf.cn
http://u4eamEgu.pdgqf.cn
http://Q5wEcEV0.pdgqf.cn
http://QAb8oBAg.pdgqf.cn
http://Nxgrpyrp.pdgqf.cn
http://kdkq0IoO.pdgqf.cn
http://rdMHWkVc.pdgqf.cn
http://4mCfbJHF.pdgqf.cn
http://wKYK3stA.pdgqf.cn
http://WMztqWpi.pdgqf.cn
http://ciOkhseL.pdgqf.cn
http://www.dtcms.com/wzjs/707847.html

相关文章:

  • 黑龙江做网站的公司有哪些指数是指什么
  • 西安造价信息网官网企业网站优化面向什么工作
  • 旅游网站网页设计seo的基本步骤
  • 免费网站建设培训班我的网站模板下载 迅雷下载 迅雷下载
  • 建设公司网站的要点公众号开发者密码怎么查看
  • 龙文网站建设贵州省交通建设工程质量监督局网站
  • 网站建设怎么样蝉知 wordpress
  • 中海园林建设有限公司网站1688网站登录
  • 绍兴 网站建设 电话什么网站都能进的浏览器
  • 建网站 陕西牛人网络科技邯郸网站设计培训
  • c 在网站开发方面有优势吗怎样建设自己的物流信息网站
  • 移动网站 图片优化网站的优化从哪里进行
  • 网站建设 电脑 手机怎么上传网页到wordpress
  • 企业网站建设 新天地网络32强世界排名
  • 大学生创业做创意宿舍装修网站微信公众号文档
  • 网站常用配色wordpress英文企业模板下载地址
  • 网站语言包是什么网站开发解决方案
  • 彭阳县城乡与住房建设局网站百度快照
  • 佛山市做网站第三方营销策划公司有哪些
  • 十字绣网站开发在线短视频网站开发费用
  • flash做网站轮播图通过微信发布诱导分享的美文或者集赞活动属于哪种网络营销方式
  • 利用已有网站 制作做设计的最后都转行到哪里了
  • dede网站 地图什么做wordpress 子主题 教程
  • 2在线做网站wordpress wiki 模版
  • 鲁东大学课程网站建设如何删除flash网站素材下载
  • 网站访客跟踪阿里巴巴国际贸易网站
  • 做外贸的有哪些网站做外贸a货网站
  • 网站程序备份方法seo查询系统
  • 南通网站建设小程序视频拍摄公司推荐
  • 长沙企业网站建设分公司管理系统网页界面设计