注册设备 ID

通常,驱动程序在其 attach(9E) 处理程序中初始化和注册设备 ID。如上所述,驱动程序负责注册永久设备 ID。同时,驱动程序可能需要处理可直接提供唯一 ID (WWN) 的设备和向稳定存储器写入及从稳定存储器读取虚构 ID 的设备。

注册设备提供的 ID

如果设备可以为驱动程序提供唯一的标识符,则驱动程序可以直接使用此标识符初始化设备 ID 并使用 Oracle Solaris DDI 注册此 ID。/*

* The device provides a guaranteed unique identifier,

* in this case a SCSI3-WWN. The WWN for the device has been

* stored in the device's soft state.

*/

if (ddi_devid_init(dip, DEVID_SCSI3_WWN, un->un_wwn_len, un->un_wwn,

&un->un_devid) != DDI_SUCCESS)

return (DDI_FAILURE);

(void) ddi_devid_register(dip, un->un_devid);

注册虚构 ID

驱动程序还可能为不直接提供唯一 ID 的设备注册设备 ID。注册这些 ID 需要设备能够存储并检索保留区中的少量数据。随后,驱动程序可创建虚构设备 ID 并将其写入保留区中。/*

* the device doesn't supply a unique ID, attempt to read

* a fabricated ID from the device's reserved data.

*/

if (xxx_read_deviceid(un, &devid_buf) == XXX_OK) {

if (ddi_devid_valid(devid_buf) == DDI_SUCCESS) {

devid_sz = ddi_devi_sizeof(devid_buf);

un->un_devid = kmem_alloc(devid_sz, KM_SLEEP);

bcopy(devid_buf, un->un_devid, devid_sz);

ddi_devid_register(dip, un->un_devid);

return (XXX_OK);

}

}

/*

* we failed to read a valid device ID from the device

* fabricate an ID, store it on the device, and register

* it with the DDI

*/

if (ddi_devid_init(dip, DEVID_FAB, 0, NULL, &un->un_devid)

== DDI_FAILURE) {

return (XXX_FAILURE);

}

if (xxx_write_deviceid(un) != XXX_OK) {

ddi_devid_free(un->un_devid);

un->un_devid = NULL;

return (XXX_FAILURE);

}

ddi_devid_register(dip, un->un_devid);

return (XXX_OK);

注册oracle驱动,注册设备 ID - 编写适用于 Oracle® Solaris 11.2 的设备驱动程序相关推荐

  1. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0

    maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0 问题:引入依赖之后会报错.在maven中央库中查找ojdbc, ...

  2. android推送设备id,技术解读:极光推送的设备唯一性标识 RegistrationID

    对于 App 云平台系统,如何唯一地识别移动设备是非常重要的.否则每次用户在设备上卸载掉应用再重新安装,后端系统只能把这个用户当作一个全新的用户了.使用极光推送的开发者常常有这样一个问题:极光推送是如 ...

  3. 编译qt的oracle驱动,怎样编译Qt下的Oracle驱动

    Windows下编译Oracle驱动 打开工程: C:\Qt\4.8.1\src\plugins\sqldrivers\oci 修改oci.pro: TARGET = qsqloci SOURCES ...

  4. oracle中根据会话id查sql_id,Oracle 根据SQL_ID查询并杀会话,清空执行计划缓冲池

    1. 查询最近五分钟内最高频次SQL,查看event select t.SQL_OPNAME,t.SQL_ID,count(*) from v$active_session_history t whe ...

  5. linux spi主机控制器pl022驱动注册以及匹配设备过程

    最近看海思的spi比较多,海思3519的spi ip使用的时ARM提供的pl022,这里对pl022驱动注册和匹配设备树中的设备这个过程捋一下. pl022是ARM提供的片内外设,很多厂商都用了这个i ...

  6. 嵌入式学习笔记(五)- 驱动注册

    驱动注册 关键点 驱动注册结构体platform_driver 在 include/linux/platform_device.h中 驱动注册platform_driver_register,驱动卸载 ...

  7. Linux上面查看虚拟机的ID,Linux虚拟机的设备id与盘符不相符怎么办?

    一般情况下Linux虚拟机中,设备id都是映射磁盘的盘符,所以设备id和盘符是相一致的.但是用户在查看Linux设备id的时候却发现Linux虚拟机中设备id与盘符不相符,这个时候该怎么办呢? 当用户 ...

  8. Android - 获取移动端设备ID标识,分情况

    目前需求:未登录的用户(游客)需要与客服实时通讯,要怎么区分用户消息? 思路:获取游客的设备ID,以此为标识传给服务器来查询/发送信息,一设备为一用户. 那设备ID是什么?怎么获取呢? 设备ID,就是 ...

  9. 安装两个虚拟机只为验证一个猜测,结果不出所料(Unity | deviceUniqueIdentifier | 设备ID相同)

    文章目录 一.前言 二.Unity获取设备ID 三.安装虚拟机 四.虚拟机中测试deviceUniqueIdentifier 五.结束语 一.前言 嗨,大家好,我是新发. 项目发布了Windows平台 ...

最新文章

  1. Luogu P1082 同余方程(NOIP 2012) 题解报告
  2. java流程控制图_Java流程控制
  3. emWin GUIBuilder V5.40a 无法保存文件问题解决方案
  4. failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
  5. 基于最优化方法的超宽带通信信号设计
  6. 版本管理器命令行总结
  7. 利用python同步windows和linux文件
  8. 在phpmyadmin后台获取webshell方法汇总整理
  9. vba php,VBA
  10. 后续的C++测试并不一定会成功
  11. perl cgi session php,如何使用Perl中的CGI :: Session处理Web会话?
  12. 【java笔记】常用函数式接口(1):Supplier接口
  13. 如何对国内股票的名称进行脱敏(待续)
  14. AliDDNS 阿里云动态域名服务 实用工具
  15. 仿支付宝输入密码界面
  16. 运动式蓝牙耳机什么牌子好、运动式蓝牙耳机推荐
  17. 交换机入门小知识2(MAC地址、交换机如何处理数据帧)
  18. (按色谱固定相基质分)液相色谱柱的分类
  19. 博弈论——序论(读书笔记)
  20. 云效x钉钉:让研发工作更简单

热门文章

  1. 永洪科技斩获2019年度大数据分析创新产品和优秀方案2项殊荣
  2. 进军B2B乏力?转转为何一直在原地打转?
  3. 安卓存储性能测试软件,安卓版PCMark存储性能测试:魅族Pro 5/Pro 6都逆袭S7 edge了...
  4. mysql数据库怎么安装建表_mysql数据库安装及建表注意事项
  5. python爬虫代码模板_Python:学习Python爬虫的第一天
  6. 分布式从mysql查数据_技术分享 | 从库数据的查找和参数 slave_rows_search_algorithms...
  7. java对密码进行加密的方法_如何在JAVA中使用MD5加密对密码进行加密
  8. apt和apt-get的区别?为什么推荐使用apt?RedHat系列(rpm包、包管理工具yum)和Debian系列(deb包、包管理工具apt-get)区别?
  9. C语言函数指针(结构体函数指针)
  10. windows10如何删除文件时提示?(回收站--右键属性--显示删除确认对话框)