2012-02-27 5 views
6

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?

+2

¿Por qué querrías poner esto en el núcleo en primer lugar? – Nobody

+0

Creo que abrir es una llamada al sistema. –

+0

@ Nadie Estoy escribiendo un módulo kernel que requeriría analizar un archivo de configuración para algunas funcionalidades. –

Respuesta

5

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.

+3

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" ... –

+0

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. –

+2

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 . –

Cuestiones relacionadas