Có cách nào để gọi hàm trong hạt nhân Linux không? Tôi biết __ func __ trả về tên hàm đang thực thi. Tôi đang tìm kiếm các chức năng mà được gọi là "__ func __"Người gọi chức năng trong hạt nhân Linux
Trả lời
Bạn có thể lấy người gọi với __builtin_return_address(0)
.
Người gọi của người gọi là __builtin_return_address(1)
và cứ tiếp tục như vậy.
Đó là một phần mở rộng GCC, tài liệu trong cuốn hướng dẫn gcc: http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html
Edit: tôi có lẽ nên chỉ ra, đem đến cho bạn địa chỉ của người gọi. Nếu bạn muốn tên hàm bạn có thể in nó với %pS
, ví dụ:
printk("Caller is %pS\n", __builtin_return_address(0));
Nếu bạn không muốn in nó, bạn có thể sử dụng kallsyms_lookup()
, vv
hay không khung gợi ý là cần thiết phụ thuộc trên vòm, IIRC. Đối với x86, họ chắc chắn muốn khai thác triệt để các tính năng này. Cũng lưu ý rằng nội tuyến có thể nghiêng chính xác của buildin_return_address vì lý do này.
Nếu bạn chỉ muốn một bãi chứa ngăn xếp để xem một số địa điểm đã đạt được như thế nào, hãy sử dụng hàm dump_stack()
tốt hơn là cố gắng tìm hiểu thêm với builtin_return_address.
Bạn cũng có thể in toàn bộ nội dung ngăn xếp cuộc gọi bằng cách gọi dump_stack().
Để lấy tên hàm người gọi, người ta có thể sử dụng lệnh printk dưới đây.
printk ("Người gọi là% pF \ n", __builtin_return_address (0));
- 1. Chức năng aio hạt nhân linux
- 2. Tổ chức tiêu đề hạt nhân Linux
- 3. Linux mutexes hạt nhân
- 4. Tạo biểu đồ cuộc gọi tĩnh cho hạt nhân Linux
- 5. Chức năng ghi đè với các mô-đun trong hạt nhân Linux
- 6. Bảng gọi hệ thống trong hạt nhân Linux ở đâu?
- 7. Chức năng hẹn giờ hạt nhân Linux chạy trong bối cảnh nào?
- 8. Khả năng tương thích của hạt nhân Linux (* .ko) giữa các hạt nhân
- 9. Lập trình chức năng trong các nhà máy hạt nhân?
- 10. Tắt (linux) linux từ hạt nhân-không gian
- 11. Làm thế nào để gọi một chức năng chủ trong hạt nhân CUDA?
- 12. về typecheck trong hạt nhân linux
- 13. Khi nào chức năng thăm dò cho trình điều khiển nhân Linux được gọi?
- 14. Tại sao hàm đóng được gọi là phát hành trong `struct file_operations` trong hạt nhân Linux?
- 15. Gọi hạt nhân OpenCL từ một hạt nhân OpenCL khác
- 16. nhiệm vụ lặp lại hrtimer trong hạt nhân Linux
- 17. __init có nghĩa là gì trong mã hạt nhân Linux?
- 18. Kiểu mã hóa hạt nhân Linux
- 19. Giờ hiện hành trong hạt nhân Linux 2.6
- 20. Biên dịch Lỗi hạt nhân Linux xt_CONNMARK.h
- 21. Hạt nhân Linux Vô hiệu hóa mục nhập TLB
- 22. Cách đọc/ghi tệp trong mô-đun hạt nhân Linux?
- 23. Dải nguồn hạt nhân Linux theo .config
- 24. distro cho phát triển hạt nhân linux
- 25. Làm thế nào để truy cập bộ nhớ không gian người dùng từ hạt nhân Linux?
- 26. Tải mô-đun hạt nhân trong hạt nhân Android
- 27. Khi nào sử dụng các chuỗi hạt nhân vs các giá trị gia công trong hạt nhân Linux
- 28. Không thể ghi vào bộ nhớ hạt nhân qua mô-đun hạt nhân Linux (Ubuntu)
- 29. Mô-đun hạt nhân Linux (2.6) biên dịch bao gồm các tiêu đề không phải hạt nhân
- 30. netlink_kernel_create không hoạt động với hạt nhân Linux mới nhất
Muahahahaaa. Haha ... không an toàn. –