Entrada/Salida y Gestión de Memoria (E/S & MM) - Tests
Análisis del Caso de Prueba: mmap01
Subsistema:
syscalls/mmapObjetivo: Verificar que la asignación de memoria compartida (
MAP_SHARED) mediantemmap()proyecte correctamente un descriptor de archivo en la memoria del proceso.Fundamento Teórico: Consulte Entrada/Salida y Gestión de Memoria (E/S & MM) - Teoría para revisar el funcionamiento de la estructura
struct file_operationsy el mapeo de memoria virtual.
Análisis de Ejecución
Configuración del Entorno (
setup): Se utiliza la macroSAFE_OPENde LTP para crear un fichero temporal en un directorio aislado (needs_tmpdir = 1) y se ajusta su tamaño al de una página medianteftruncate.Invocación de Syscall (
run): Se invocammap()con los flagsPROT_READ | PROT_WRITEyMAP_SHARED.Verificación: Se realiza una escritura directa en la dirección devuelta por el kernel (
addr[0] = 'A') comprobando la persistencia en el buffer.
Resultados en Entorno buildlab
tst_test.c:1690: TINFO: LTP version: 20240129
tst_test.c:1578: TINFO: Timeout per test is 0h 05m 00s
mmap01.c:58: TPASS: mmap() funcionó y la memoria es accesible
Summary:
passed 1
failed 0
broken 0
skipped 0
warnings 0
Análisis del Caso de Prueba: direct_io01
Subsistema:
syscalls/read/syscalls/write/fsObjetivo: Verificar la correcta ejecución de operaciones de Entrada/Salida Directa utilizando la bandera
O_DIRECT, garantizando la omisión de la Page Cache del kernel y el uso de memoria alineada.Fundamento Teórico: Consulte Entrada/Salida y Gestión de Memoria (E/S & MM) - Teoría para revisar la abstracción de descriptores de archivo, la gestión de buffers a nivel de VFS y el mecanismo de lectura/escritura en dispositivos de bloque.
Análisis de Ejecución
Configuración del Entorno (
setup): Se abre un archivo temporal en un sistema de archivos compatible mediante la banderaO_DIRECTdeopenat()(requiere_GNU_SOURCE). Se reserva un buffer de memoria virtual alineado estrictamente a límites de página/bloque (utilizandoposix_memaligno atributos de alineación) para cumplir los requisitos de E/S sin caché.Invocación de Syscall (
run): Se escribe un patrón de datos en el archivo mediantewrite()directamente desde el buffer alineado y se reposiciona el cursor a cero (lseek). Posteriormente, se ejecuta una lectura medianteread()sobre un segundo buffer alineado.Verificación: Se valida que la llamada a
write()devuelva la cantidad exacta de bytes escritos sin errores de alineación (EINVAL) y que los datos leídos coincidan exactamente con el patrón original, garantizando la omisión efectiva del Page Cache.
Resultados en Entorno buildlab
Test direct_io01
Sección reservada para documentar las salidas de ejecución y registros en buildlab
clasificando los resultados según la metodología LTP (TPASS, TFAIL, TCONF).
tst_tmpdir.c:316: TINFO: Using /tmp/LTP_dirYgRNov as tmpdir (xfs filesystem)
tst_test.c:1900: TINFO: LTP version: 20250130
tst_test.c:1904: TINFO: Tested kernel: 6.12.0-124.8.1.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 22:54:28 UTC 2025 x86_64
tst_kconfig.c:88: TINFO: Parsing kernel config '/lib/modules/6.12.0-124.8.1.el10_1.x86_64/build/.config'
tst_test.c:1722: TINFO: Overall timeout per run is 0h 00m 30s
direct_io_test.c:68: TINFO: Probando escritura directa (O_DIRECT) de 4096 bytes...
direct_io_test.c:83: TINFO: Probando lectura directa (O_DIRECT)...
direct_io_test.c:94: TPASS: Escritura y lectura O_DIRECT exitosas con datos coherentes
Summary:
passed 1
failed 0
broken 0
skipped 0
warnings 0