Al desarrollar un módulo kernel en Linux, no se permite el uso de la biblioteca estándar C.
Sin embargo, en caso de que necesite usar alguna funcionalidad común como strcat()
, ¿a dónde debo ir?stdlib.h alternativa en kernel Linux?
Respuesta
Lo que no está implementado en el kernel de Linux, usted tiene que aplicar a sí mismo o pedir prestado de otro módulo del núcleo de código abierto. Sin embargo, encontrará que strcat
se implementa en el kernel.
Consulte la documentación de kernel API. Específicamente la sección Basic C Library Functions para su pregunta general, y la sección String Manipulation para su pregunta específica acerca de strcat
.
Deberá incluir linux/string.h
.
No sé por qué la documentación API del kernel no muestra realmente el archivo de encabezado que debe incluir para obtener la función. Pero si está buscando algo, puede restringir su búsqueda a /include/linux
porque es allí donde van los archivos de encabezado si tienen funciones que se comparten entre las diferentes partes del kernel.
Los archivos de encabezado fuera de /include/linux
contienen definiciones solo para los archivos de origen que residen en el mismo directorio que el encabezado. La excepción es /arch/.../include
, que contendrá encabezados específicos de la arquitectura en lugar de los independientes de la plataforma.
Lo sentimos @eq - pensando en otra función.
Por qué no
void (char *d, const char *s);
{
if (*d)
{
for (; *d; ++d) {} ;
--d;
}
strcpy(d, s);
}
que podía hacer strcpy
si desea
@indiv - Vaya, el pensamiento es correcto. Esas funciones se pueden lograr fácilmente. –
¿Estamos todos contentos de cómo, a pesar de que una función de cadena requiere una biblioteca? –
... ¿Y el kernel de Linux está escrito en C? –
- 1. Linux kernel aio funcionalidad
- 2. Linux Kernel coding style
- 3. ¿Alternativa a JFileChooser en Linux?
- 4. Linux Kernel Invalidating TLB Entries
- 5. desarrollo del kernel de Linux
- 6. módulo del kernel Linux compilar
- 7. kernel stack for linux process
- 8. TextMate alternativa para Linux
- 9. Programación del kernel de Linux
- 10. prio, static_prio, rt_priority en Linux Kernel
- 11. stdlib.h: No existe el fichero o directorio
- 12. alternativa malloc_size en Linux y Windows
- 13. Linux Kernel: copy_from_user - struct con punteros
- 14. Linux Kernel Memory Management Paging Levels
- 15. Organización de los encabezados kernel de Linux
- 16. Entorno virtual para Linux Kernel Hacking
- 17. ¿Impresiones de depuración del kernel de Linux?
- 18. técnicas de depuración actual Linux Kernel
- 19. Linux Kernel Modules: Cuándo usar try_module_get/module_put
- 20. Quiero contribuir con el kernel de Linux
- 21. Símbolo exportado del kernel de Linux
- 22. Cómo codificar un módulo kernel de Linux?
- 23. Makefile para el módulo kernel de Linux?
- 24. compilando kernel de Linux con no-gcc
- 25. Ubicación del Módulo Kernel de Linux
- 26. ¿Por qué no hay strtoi en stdlib.h?
- 27. ¿En qué contexto Kernel Thread se ejecuta en Linux?
- 28. No se puede escribir en la memoria kernel a través del módulo kernel de Linux (Ubuntu)
- 29. ¿Puedo usar strtok() en un Módulo Kernel de Linux?
- 30. ¿Cuántas llamadas al sistema hay en Linux kernel 2.6?
¿Hay una lista de los archivos de encabezado en los que se guardan este tipo de funciones? (Como ha mencionado 'linux \ string.h') – Fairview
@Fairview: No es que pudiera encontrarlo, lo cual es extraño. Supongo que tendrás que encontrar la función que deseas en la API del kernel y luego buscarla en '/ include/linux'. Agregué más detalles en mi respuesta sobre los archivos de encabezado en el núcleo y por qué puede restringir su búsqueda a '/ include/linux' y sus subdirectorios. – indiv