¿Qué son los objetos del núcleo (Kobj)?

Kobject fue inicialmente pensado como una forma simple de unificar el código del núcleo que gestiona los objetos contados de referencia. sin embargo; ahora es el pegamento que mantiene unido gran parte del modelo del dispositivo y su interfaz sysfs.
Aquí hay algunas definiciones relacionadas con kobject

  • Un kobject es un objeto de tipo struct kobject. Los Kobjects tienen un nombre y un recuento de referencias. Un kobject también tiene un puntero padre (que permite que los kobjects se organicen en jerarquías), un tipo específico y, tal vez, una representación en el sistema de archivos virtual sysfs.
    Los Kobjects generalmente no son interesantes por sí solos; en cambio, generalmente están incrustados dentro de otra estructura que contiene las cosas en las que el código está realmente interesado.
  • Un ktype es un tipo asociado con un objeto k. El ktype controla lo que sucede cuando un kobject ya no está referenciado y la representación predeterminada del kobject en sysfs.
  • Un kset es un grupo de objetos que están incrustados en estructuras del mismo tipo. El kset es el tipo de contenedor básico para colecciones de kobjects. Los Ksets contienen sus propios objetos, por lo que vale. Entre otras cosas, eso significa que el padre de un objeto suele ser el kset que lo contiene, aunque las cosas normalmente no tienen que ser así.

la estructura del objeto es como
struct kobject {
const char * nombre;
struct list_head entry;
struct kobject * parent;
struct kset * kset;
struct kobj_type * ktype;
struct sysfs_dirent * sd;
struct kref kref;
unsigned int state_initialized: 1;
unsigned int state_in_sysfs: 1;
unsigned int state_add_uevent_sent: 1;
unsigned int state_remove_uevent_sent: 1;
unsigned int uevent_suppress: 1;
};

Incrustar objetos:
Es raro (incluso desconocido) que el código del núcleo cree un objeto independiente; en cambio, los objetos se usan para controlar el acceso a un objeto más grande y específico del dominio. Para este fin, los objetos se encontrarán incrustados en otras estructuras. Si está acostumbrado a pensar las cosas en términos orientados a objetos, los objetos se pueden ver como una clase abstracta de nivel superior de la que se derivan otras clases. Un kobject implementa un conjunto de capacidades que no son particularmente útiles por sí mismas, pero que son agradables de tener en otros objetos. El lenguaje C no permite la expresión directa de la herencia, por lo que se deben utilizar otras técnicas, como la incrustación de estructuras.
Entonces, por ejemplo, la versión 2.6.0-test6 de struct cdev, la estructura que describe un dispositivo char, es:
struct cdev {
struct kobject kobj;
estructura del módulo * propietario;
struct file_operations * ops;
struct list_head list;
};

Algunas funciones de manipulación de objetos del núcleo son las siguientes:
Manipulación de objetos del núcleo
kobject_get_path : genera y devuelve la ruta asociada a un par kobj y kset dado.
kobject_set_name – Establece el nombre de un kobject
kobject_init – inicializa una estructura de kobject
kobject_add – la función principal de agregar kobject
kobject_init_add : inicializa una estructura de kobject y la agrega a la jerarquía de kobject
kobject_rename – cambia el nombre de un objeto
kobject_del : desvincula kobject de la jerarquía.
kobject_get – incrementa el recuento para el objeto.
kobject_put – decremento de recuento para objeto.
kobj_create_and_add – crea una estructura kobject dinámicamente y regístrala con sysfs
kset_register : inicializa y agrega un kset.
kset_unregister – elimina un kset.

Respuesta a la segunda pregunta ¿Hay alguna forma de averiguar detalles sobre los objetos del núcleo activados?
Sysfs es un sistema de archivos virtual que describe los dispositivos conocidos por el sistema desde varios puntos de vista. Por defecto está montado en / sys. Los bloques de construcción básicos de la jerarquía son kobjects.Cada directorio en sysfs representa un kobject.

http://www.mjmwired.net/kernel/D

“Un kobject es un objeto de tipo struct kobject. Los Kobjects tienen un nombre y un recuento de referencias. Un kobject también tiene un puntero principal (que permite organizar los objetos en jerarquías), un tipo específico y, por lo general, una representación en los sysfs sistema de archivos virtual

Los Kobjects generalmente no son interesantes por sí solos; en su lugar, generalmente están incrustados dentro de otra estructura que contiene las cosas en las que el código está realmente interesado “.

Para obtener más detalles sobre el modelo de dispositivo Linux, lea “Controladores de dispositivo Linux”, http://lwn.net/Kernel/LDD3/

Los objetos del núcleo son un tipo de estructuras contadas de referencia creadas por el núcleo para mantener tipos específicos de información de estado.

¿Hay alguna forma de averiguar detalles sobre los objetos del núcleo activados?

Según la respuesta anterior: Sysfs es un sistema de archivos virtual que describe los dispositivos conocidos por el sistema desde varios puntos de vista. Por defecto está montado en / sys

Para agregar a la ya excelente respuesta anterior:

Sin embargo: que yo sepa, solo una clase específica de objetos del núcleo, es decir: objetos de objetos que representan dispositivos conocidos por el sistema, están presentes en los sysfs.
Si no recuerdo mal, también puede haber otros tipos de objetos del núcleo, y a excepción de un fragmento de código dentro de la aplicación del lado del núcleo que los creó eligiendo exponerlos al mundo exterior (es decir, código de usuario), no serían visible / enumerable