Czy istnieje sposób na wywołanie funkcji w jądrze Linux? Wiem, że __ func __ zwraca nazwę funkcji, która jest wykonywana. Szukam funkcji, które pod nazwą „__ func __”Wywołanie funkcji w jądrze Linuksa
Odpowiedz
Można uzyskać rozmówcę z __builtin_return_address(0)
.
Dzwoniącego dzwoniącego jest __builtin_return_address(1)
i tak dalej.
Jest to rozszerzenie GCC, udokumentowany gcc instrukcji: http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html
Edit: Powinienem chyba podkreślić, że dostaje adres osoby dzwoniącej. Jeśli chcesz nazwę funkcji można wydrukować z %pS
np:
printk("Caller is %pS\n", __builtin_return_address(0));
Jeśli nie chcesz go wydrukować, można użyć kallsyms_lookup()
itp
, czy potrzebne są wskaźniki ramki zależy na łuku, IIRC. W przypadku architektury x86 z pewnością pragnie się w pełni wykorzystać te funkcje. Zauważmy również, że wstawianie może z tej przyczyny skosić dokładność wbudowanego adresu_wejścia.
Jeśli chcesz tylko zrzutu stosu, aby zobaczyć, jak pewne miejsce zostało osiągnięte, lepiej korzystać z funkcji dump_stack()
niż próbować bawić się przy użyciu wbudowanego adresu_wejściowego.
Możesz także wydrukować całą zawartość stosu wywołań, wywołując dump_stack().
Aby uzyskać nazwę funkcji wywołującej, można użyć poniższego polecenia printk.
printk ("Wzywający to% pF \ n", __builtin_return_address (0));
- 1. Jak spać w jądrze Linuksa?
- 2. hrtimer powtarzające się zadanie w jądrze Linuksa
- 3. Który kontekst danej funkcji jest wywoływany w jądrze Linuksa
- 4. główna obsługa błędów strony w jądrze Linuksa
- 5. Mierzenie czasu w jądrze Linuksa 2.6
- 6. Uzyskiwanie listy urządzeń sieciowych w jądrze Linuksa
- 7. Implementacja wywołań systemowych/pułapek w jądrze Linuksa źródło
- 8. Przejście z trybu rzeczywistego do chronionego w jądrze Linuksa
- 9. Implementacja poprawnej synchronizacji między modułami w jądrze Linuksa
- 10. Jak odczytać sektor za pomocą żądania biologicznego w jądrze Linuksa
- 11. Używanie podwójnego wskaźnika w jądrze Linuksa Implementacja listy skrótów
- 12. Jak odczytać sektor za pomocą żądania bio w jądrze Linuksa
- 13. Limit linii Shebang w bashu i jądrze Linuksa
- 14. przypisanie funkcji i wywołanie funkcji w C++?
- 15. Co to są przestawienia przerwań (RES)? Co to powoduje? Jak jest obsługiwany w jądrze Linuksa?
- 16. Wywołanie funkcji javascript w iframe
- 17. JS wywołanie funkcji w Swift
- 18. Wywołanie funkcji lambda w GDB
- 19. Wywołanie funkcji w niewłaściwej kolejności
- 20. wywołanie funkcji w łańcuchu znaków
- 21. Wywołanie funkcji w kodzie XAML?
- 22. Adres w jądrze
- 23. Wywołanie funkcji GetLogicalProcessorInformation
- 24. JavaScript anonimowy wywołanie funkcji
- 25. Wywołanie obiektu wewnątrz funkcji
- 26. Wywołanie niezdefiniowanej funkcji apc_fetch()
- 27. Wywołanie niezdefiniowanej funkcji sqlite_open
- 28. Równoważnik usleep() w jądrze CUDA?
- 29. Wywołanie niezdefiniowanej funkcji phpob_start()
- 30. wywołanie funkcji niezdefiniowany array_column()
Muahahahaaa. Haha ... nie jest zdrowy. –