¿Hay alguna manera de obtener la función que llama en el kernel de Linux? Sé __ func __ devuelve el nombre de la función que se está ejecutando. Busco a la función que llama "__ __ func"Llamante de función en el kernel de Linux
Respuesta
, usted puede obtener la persona que llama con __builtin_return_address(0)
.
La persona que llama es __builtin_return_address(1)
y así sucesivamente.
Es una extensión del CCG, documentado en el manual de gcc: http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html
Editar: probablemente debería señalar, que obtiene la dirección de la persona que llama. Si desea que el nombre de la función se puede imprimir con %pS
, por ejemplo:
printk("Caller is %pS\n", __builtin_return_address(0));
Si no desea imprimir, se puede utilizar kallsyms_lookup()
etc.
Sea o no el marco son necesarios depende punteros en arco, IIRC. Para x86, ciertamente se desean aprovechar completamente estas características. También tenga en cuenta que la alineación puede sesgar la precisión de builtin_return_address por esta misma razón.
Si solo quiere un volcado de pila para ver cómo se llegó a algún lugar, mejor utilice la función dump_stack()
que tratando de jugar con builtin_return_address.
También puede imprimir todo el contenido de la pila de llamadas llamando a dump_stack().
Para obtener el nombre de la función del llamante, se puede usar el siguiente comando printk.
printk ("Llamante es% pF \ n", __builtin_return_address (0));
- 1. Quiero contribuir con el kernel de Linux
- 2. Makefile para el módulo kernel de Linux?
- 3. desarrollo del kernel de Linux
- 4. Programación del kernel de Linux
- 5. Linux kernel aio funcionalidad
- 6. stdlib.h alternativa en kernel Linux?
- 7. Función de miembro llamante de otro controlador en zend framework?
- 8. Obteniendo el inodo de la ruta en Linux Kernel
- 9. Linux Kernel coding style
- 10. ¿Por qué la función close se llama release en `struct file_operations` en el kernel de Linux?
- 11. ¿Qué significa "EXPORT_SYMBOL" en el código de kernel de Linux?
- 12. Obtener el nombre de la función del llamante dentro de otra función en Python?
- 13. diferencias de parche entre el kernel de Android y el kernel de vanux Linux
- 14. Linux Kernel Invalidating TLB Entries
- 15. ¿Cómo habilitar la depuración dinámica en el kernel de Linux?
- 16. Streaming DMA en el controlador de kernel PCIE Linux
- 17. Nuevo en el desarrollo del kernel/controlador de Linux
- 18. Ejecutar un programa en el kernel de Linux
- 19. ¿Impresiones de depuración del kernel de Linux?
- 20. Organización de los encabezados kernel de Linux
- 21. Cómo saber la clase de llamante de una función
- 22. Implementación de la sincronización correcta entre módulos en el kernel de Linux
- 23. ¿Puedo usar strtok() en un Módulo Kernel de Linux?
- 24. módulo del kernel Linux compilar
- 25. Símbolo exportado del kernel de Linux
- 26. Linux Kernel: copy_from_user - struct con punteros
- 27. técnicas de depuración actual Linux Kernel
- 28. Cómo codificar un módulo kernel de Linux?
- 29. Kernel de Linux: obtenga el último bloque de memoria escrita
- 30. Implementación de señales de reloj de hardware en Linux Kernel
Muahahahaaa. Jaja ... no sanamente. –