Capacidades Actuales del Controlador
El módulo del kernel hwbus_io.ko actúa como un controlador de dispositivo de caracteres enfocado en la inspección y exposición de parámetros PCI en espacio de usuario. En su estado de desarrollo actual, el controlador implementa los siguientes mecanismos funcionales:
Gestión de Parámetros de Módulo: El driver define e inicializa el parámetro
hwbus_bdf_param, configurado por defecto con la dirección BDF"0000:02:00.0". Este parámetro se expone dinámicamente en el árbol desysfsbajo la ruta/sys/module/hwbus_io/parameters/hwbus_bdf_param.Registro de Dispositivo de Caracteres y Clase: Durante la fase de inicialización (
init), el controlador reserva un número Major dinámico (registrado con el identificador 240 en/proc/devices) y crea la clase de dispositivohwbusc. Esto automatiza la creación del nodo de carácter/dev/hwbusca través deudev, así como su jerarquía asociada en/sys/class/hwbusc/hwbusc/.Operación de Lectura (
.read): Al invocar operaciones de lectura sobre/dev/hwbusc, la implementación interna consulta los registros del espacio de configuración PCI correspondientes al BDF asignado. La función mapea los identificadores de hardware y entrega exactamente 4 bytes estructurados como[VendorID (2 bytes) | DeviceID (2 bytes)]respetando la ordenación little-endian. La operación gestiona adecuadamente el puntero de archivo (f_pos), retornando los bytes leídos en la primera llamada y0(EOF) en accesos subsecuentes dentro de la misma sesión.Protección de Escritura (
.write): El controlador opera estrictamente en modo de solo lectura para las operaciones del dispositivo de caracteres. Las peticiones de escritura dirigidas a/dev/hwbuscson interceptadas y rechazadas intencionadamente en espacio de kernel, devolviendo la constante de error-EINVAL(Invalid argument).
Aislamiento Arquitectónico
El diseño del controlador cumple estrictamente con el principio de separación de espacio de kernel y espacio de usuario definido en el manifiesto:
Espacio de Kernel (
src/driver/): La lógica de callbacks, gestión de estructuras PCI y comunicación consysfsse compila exclusivamente mediante Kbuild contra los encabezados del kernel. No existe ninguna dependencia con bibliotecas de espacio de usuario.Espacio de Usuario (
include/user/,src/core/user/): Las librerías auxiliares (sysfs_utils,hwbus_error) para las herramientas de diagnóstico y pruebas POSIX se compilan contraglibcde forma totalmente aislada al módulo principal.