Voy a escribir un léxico que formará parte de un módulo kernel en el que analizaré un archivo y devolverá tokens. Para eso, puede que necesite usar funciones como fopen, getc, putc, fseek etc. que obviamente son funciones de espacio de usuario. He buscado alternativas a estas funciones en el espacio del kernel y encontré funciones como open, filp_open, sys_open etc. que supongo que estarían bien para mí. Pero lo que quiero saber es si funciones como getc, putc, seek, etc. (que pueden ser muy prácticas en operaciones de archivos), están disponibles en el espacio del kernel?¿Hay funciones simples de operación de archivos C como getc, putc y seek disponibles en el kernel de Linux?
Respuesta
Do not.
Leer archivos, y especialmente archivos de configuración complejos, no es algo que deba hacerse desde el kernel.
Hay mucha información acerca de por qué esta es una mala idea. The KernelNewbies FAQ es un buen comienzo.
Realmente, realmente no hagas esto. Integro un gran número de código de proveedor (kernel), y este es uno de los errores que sigue apareciendo y mordiéndonos. Aprende a hacer las cosas de la manera correcta desde el principio.
Entonces, después de que alguien (... con décadas de experiencia en kernel ...) llega al final de esa referencia y concluye que para su producto integrado la única forma de hacer "eso" es ignorar el consejo de "No hacer", ¿cómo sucede eso? No se preocupe, puedo leer la fuente. Estoy cansado de respuestas como "No hacer" aquí. Nada útil. Quisiera votar su respuesta pero estoy demasiado ocupado para hacer clic en el botón "Abajo" ... –
Ver, puedo aceptar que a veces es obligatorio (como para el servidor NFS), pero también creo que usted está de acuerdo ". Do not "es en realidad la respuesta que Jewel Thief necesitaba escuchar. Agregaría un enlace a una breve descripción, pero cualquiera que * realmente * lo necesite lo encontrará en 5 minutos, y de todos modos solo alentaría a los que no deberían hacerlo a hacerlo. –
No, no estoy de acuerdo con que "Do not" sea la respuesta correcta aquí porque eso suena demasiado como que somos un grupo de Niñeras que intentan evitar que el OP rompa su máquina. Su justificación de que "Do not" está bien porque pudimos encontrarla en 5 minutos huele a elitismo. Bueno, ¿y si no quiero pasar 5 o 10 o 20 o ... minutos desenterrando eso y soy uno de los "élite", porque realmente lo soy - hice mi primer núcleo de UNIX en 1981 . –
- 1. ¿La implementación de getc y putc de K & R es correcta?
- 2. ¿Hay bloques y libdispatch disponibles en Linux?
- 3. ¿Analizar archivos MIME simples de C/C++?
- 4. ¿Cuál es el propósito del código de operación UD2 en el kernel de Linux?
- 5. ¿Hay funciones de DbContext no disponibles en ObjectContext?
- 6. ¿Hay bibliotecas de rastreo de rayos C++ simples y gratuitas?
- 7. ¿Hay algún proyecto libc que no requiera kernel de Linux
- 8. diferencias de parche entre el kernel de Android y el kernel de vanux Linux
- 9. Funciones simples de Delphi 3d
- 10. Makefile para el módulo kernel de Linux?
- 11. C++ wrapper para funciones específicas de posix y linux
- 12. ¿Cómo depurar el kernel de Linux con GDB y QEMU?
- 13. Organización de los encabezados kernel de Linux
- 14. desarrollo del kernel de Linux
- 15. Quiero contribuir con el kernel de Linux
- 16. stdlib.h alternativa en kernel Linux?
- 17. ¿Lees la versión del kernel de Linux usando C?
- 18. Llamante de función en el kernel de Linux
- 19. Programación del kernel de Linux
- 20. ¿Hay alguna aplicación de kernel/escritorio Java?
- 21. Nuevo en el desarrollo del kernel/controlador de Linux
- 22. ¿Cómo habilitar la depuración dinámica en el kernel de Linux?
- 23. compilando kernel de Linux con no-gcc
- 24. Configuración de la licencia para módulos en el kernel de Linux
- 25. ¿Qué significa "EXPORT_SYMBOL" en el código de kernel de Linux?
- 26. Streaming DMA en el controlador de kernel PCIE Linux
- 27. Obteniendo el inodo de la ruta en Linux Kernel
- 28. ¿Impresiones de depuración del kernel de Linux?
- 29. ¿Cuántas llamadas al sistema hay en Linux kernel 2.6?
- 30. Implementación de señales de reloj de hardware en Linux Kernel
¿Por qué querrías poner esto en el núcleo en primer lugar? – Nobody
Creo que abrir es una llamada al sistema. –
@ Nadie Estoy escribiendo un módulo kernel que requeriría analizar un archivo de configuración para algunas funcionalidades. –