El modelo de dispositivo kobject, kset y su relación

  
Linux2.6 los controladores de dispositivo se construyen sobre la base del modelo de dispositivo, por lo tanto, para escribir controladores de dispositivo en Linux, ya sean dispositivos USB, dispositivos pci, etc. Necesito entender el modelo del dispositivo.
La estructura básica del modelo de dispositivo es principalmente kobject, kset dos estructuras:
struct kobject {char * k_name; nombre de char [KOBJ_NAME_LEN]; struct kref kref; struct list_head entry; struct kobject * parent; struct Kset * kset; struct kobj_type * ktype; struct dentry * dentry;}; struct kset {struct subsystem * subsys; struct kobj_type * ktype; struct list_head list; struct kobject kobj; struct kset_hotplug_ops * hotplug_ops;};

Estructura de subsistema, pero la estructura de subsistema es similar a kset, existe un semáforo de acceso exclusivo, por lo que no hay necesidad de listarlo, también hay una estructura para struct kobj_type {void (* release) (struct Kobject *); struct sysfs_ops * sysfs_ops; struct attribute ** default_attrs;};

se utiliza para indicar el tipo de kobject, kset.

Se muestra una estructura kobject en la parte de tipo kobject de la figura a continuación, y la estructura kset es tal como se muestra en la parte de tipo kset de la figura. Se agrega un kobject a un kset, principalmente el campo relevante en la estructura kobject registra la información correspondiente del kset, 1 Registre el kset correspondiente a kobject, que apunta a la dirección del kobject contenido en kset, 2 registra el puntero kset de kset correspondiente a kobject, 3 registra el tipo de kobject, y 4 registra la cadena de todos los kobjects de kset. La cadena es una lista doblemente enlazada. Cuando se agrega un kobject al kset actual, se llama a la función list_add_tail (), y el kobject que se agrega al kset se conecta al final de la lista para formar una lista enlazada.
kobjec-kset

Cuando hay otro kobject para unirse al kset actual, el paso 123 es el mismo que el primer kobject agregado al kset actual, es decir, el miembro del kobject que se agregará. Haga que apunte a los datos correspondientes de kset actuales, y 4 necesita agregar kobject al final de la lista de kset. La siguiente figura muestra el kobject b agregado a kset A:
kobjec-kset

Cuando hay Es necesario agregar un kset al kset actual. El método también es lo mismo que agregar un kobject al kset actual, es decir, configurar los miembros del kobject contenido en el kset para que se agreguen, de modo que estos miembros apunten a los datos correspondientes del kset correspondiente. El kset actual debe agregarse a otro kset, la forma es la misma que el kset agregado al kset actual, es el kobject en el dispositivo kset, de modo que los miembros del kobject apuntan a los datos correspondientes del kset que se agregará, la siguiente figura muestra un kset B se agrega al icono en kset A.
kobjec-kset

Un simple kset, diagrama de relación de kobject es el siguiente:
kobjec-kset

Copyright © Conocimiento de Windows All Rights Reserved