亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1161 | 回復: 0
打印 上一主題 下一主題

class device的注冊 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-02-06 18:57 |只看該作者 |倒序瀏覽
Class_device接口

struct class_device {

struct kobject kobj;

struct class *class;

struct device *dev;

void *class_data;

char class_id[BUS_ID_SIZE];

 };

class_id 成員持有設備名子, 如同它在 sysfs 中的一樣. class 指針應當指向持有這個設備的類, 并且 dev 應當指向關聯(lián)的設備結構. 設置 dev 是可選的; 如果它是非 NULL, 它用來創(chuàng)建一個符號連接從類入口到對應的在 /sys/devices 下的入口, 使得易于在用戶空間找到設備入口. 類可以使用 class_data 來持有一個私有指針.

通常的注冊函數(shù)已經(jīng)被提供:

int class_device_register(struct class_device *cd);

void class_device_unregister(struct class_device *cd);

實例用法 ,參照drivers/i2c/i2c-core.c

adap->class_devstruct class_device類型:

   memset(&adap->class_dev, 0x00, sizeof(struct class_device));

        adap->class_dev.dev = &adap->dev;

        adap->class_dev.class = &i2c_adapter_class;

        strlcpy(adap->class_dev.class_id, adap->dev.bus_id, BUS_ID_SIZE);

        class_device_register(&adap->class_dev);

adap->dev是個stuct device結構。

i2c_adapter_class定義:

static struct class i2c_adapter_class = {

        .name =         "i2c-adapter",

        .release =      &i2c_adapter_class_dev_release,

};

 adap->dev.bus_id的值形如i2c-0,i2c-1這種類型。

那么在SYS目錄下有:

# ls /sys/class/i2c-adapter/i2c-0/ 

device  driver

# ls /sys/class/i2c-adapter/i2c-0/device/

0-001a        0-0048        detach_state

0-003a        0-0068        name

# ls /sys/class/i2c-adapter/i2c-0/driver/

class_simple 接口

static struct class_device *davinci_class_device;

static struct class_simple *davinci_class;

davinci_class = class_simple_create( THIS_MODULE , "davinci" );

if( IS_ERR( davinci_class ) )

{

printk("creat davinci_class fault");

goto class_simple_create_err;

}

davinci_class_device = class_simple_device_add(davinci_class,devno,NULL,"davinci" );

class_simple_create創(chuàng)建了一個davinci .

class_simple_device_add的原形為:

struct class_device *class_simple_device_add(struct class_simple *cs, dev_t devnum, struct device *device, const char *fmt, ...); 

這里, cs 是之前創(chuàng)建的簡單類, devnum 是分配的設備號, device 是代表這個設備的 struct device, 其他的參數(shù)是一個 printk-風格 的格式串和參數(shù)來創(chuàng)建設備名子. 這個調用添加一項到類, 包含一個屬性, dev, 含有設備號. 如果設備參數(shù)是非 NULL, 一個符號連接( 稱為 device )指向在 /sys/devices 下的設備的入口。

可能添加其他的屬性到設備入口. 它只是使用 class_device_create_file, 

在這里,class_simple_device_add向這個類添加了設備,該設備設備號為devno.名字為davinci。,于是在sys下有:

# ls /sys/class/davinci/davinci/dev 

/sys/class/davinci/davinci/dev

# cat  /sys/class/davinci/davinci/dev 

252:0

calss下添加一個dev會產生熱插拔事件,如果有UDEV運行,那么這時在/dev目錄下會出現(xiàn)/dev/davinci設備,并且設備號為252:0。

其實"class_simple_device_add"也是class_device_registerclass_device_create_file的封裝。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP