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. técnicas de depuración actual Linux Kernel
- 18. ¿Impresiones de depuración del kernel de Linux?
- 19. Linux Kernel Modules: Cuándo usar try_module_get/module_put
- 20. Quiero contribuir con el kernel de Linux
- 21. Cómo codificar un módulo kernel de Linux?
- 22. Símbolo exportado del kernel de Linux
- 23. Makefile para el módulo kernel de Linux?
- 24. Ubicación del Módulo Kernel de Linux
- 25. compilando kernel de Linux con no-gcc
- 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. I2C escribir encuesta de confirmación en Linux Kernel
- 30. Cómo usar ioctl() desde el espacio del kernel en Linux?
¿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