De Test LTP a Driver de Dispositivo
Este documento define la sistemática para abstraer la lógica de validación aprendida en las pruebas de LTP (Linux Test Project) y traducirla en implementaciones concretas dentro de los controladores de dispositivo del proyecto.
El objetivo es utilizar los tests de LTP como especificación de requisitos y contrato de comportamiento (TDD en Kernel Space).
Flujo de Traducción Iterativa
┌─────────────────────────┐
│ 1. Contrato del Test │
│ (Syscalls & Sysfs) │
└────────────┬────────────┘
│
v
┌─────────────────────────┐
│ 2. Mapeo POSIX <-> VFS │
│ (file_operations) │
└────────────┬────────────┘
│
v
┌─────────────────────────┐
│ 3. Skeleton en Kernel │
│ (sysfs_driver.c) │
└────────────┬────────────┘
│
v
┌─────────────────────────┐
│ 4. Manejo de Errores │
│ (-EINVAL, -EIO, etc) │
└────────────┬────────────┘
│
v
┌─────────────────────────┐
│ 5. Bucle de Validación │
│ (buildlab / CI) │
└─────────────────────────┘
Etapas de la Metodología
1. Extracción del Contrato (Análisis del Test LTP)
Aislar las llamadas al sistema y los accesos a sysfs que realiza la prueba en espacio de usuario.
Identificación de I/O: Determinar si el test interactúa mediante atributos sysfs (
show/store), llamadas de lectura/escritura (read/write) o control de dispositivo (ioctl).Valores esperados: Extraer las condiciones límites, tamaños de búfer y códigos de retorno especificados en los macros de LTP (ej.
TST_EXP_PASSoTST_EXP_FD).
2. Mapeo POSIX <-> VFS (Capa Virtual File System)
Relacionar las llamadas de espacio de usuario con las estructuras y callbacks del kernel Linux.
Operación POSIX / LTP |
Callback en Kernel / Sysfs |
|---|---|
|
|
|
|
|
Callback |
|
Callback |
|
|
3. Implementación Mínima (Skeleton)
Escribir en src/driver/sysfs_driver.c la infraestructura básica necesaria para responder al test sin causar inestabilidad en el sistema.
Registrar el punto de entrada del dispositivo o el grupo de atributos en sysfs (
sysfs_create_group).Implementar stubs que retornen éxito inicial para verificar la correcta apertura y registro del módulo.
4. Réplica de Casuísticas y Mapeo de Errores
Trasladar los escenarios de fallo (casos TFAIL/TCONF identificados en LTP) a las comprobaciones internas del driver.
Validar parámetros de entrada en los callbacks de kernel y retornar códigos de error POSIX estándar (ej.
-EINVALsi el tamaño de búfer es inválido,-EFAULTante fallos de copia con espacio de usuario).Asegurar el manejo seguro de concurrencia y locking cuando sea requerido por la prueba.
5. Validación Automatizada e Integración CI
Una vez refactorizado el driver, sistematizar la validación en el ciclo de integración continua.
Adaptar o compilar la suite de prueba dentro de
tests/IO_tests/.Ejecutar la verificación automatizada en la plataforma de pruebas mediante
Scripts/ci-runLauncher.shen el entornobuildlab.