Tôi biết tất cả các cuộc thảo luận về lý do tại sao người ta không nên đọc/ghi các tập tin từ hạt nhân, thay vào đó làm thế nào để sử dụng/proc hoặc netlink để làm điều đó. Tôi vẫn muốn đọc/ghi. Tôi cũng đã đọc Driving Me Nuts - Things You Never Should Do in the Kernel.Cách đọc/ghi tệp trong mô-đun hạt nhân Linux?
Tuy nhiên, sự cố là 2.6.30 không xuất sys_read()
. Thay vào đó nó được bọc trong SYSCALL_DEFINE3
. Vì vậy, nếu tôi sử dụng trong mô-đun của tôi, tôi nhận được cảnh báo sau đây:
WARNING: "sys_read" [xxx.ko] undefined!
WARNING: "sys_open" [xxx.ko] undefined!
Rõ ràng insmod
không thể nạp module vì liên kết không xảy ra một cách chính xác.
Câu hỏi:
- Làm thế nào để đọc/ghi trong kernel 2.6.22 sau (nơi
sys_read()
/sys_open()
không xuất khẩu)? - Nói chung, cách sử dụng các cuộc gọi hệ thống được bao bọc trong macro
SYSCALL_DEFINEn()
từ bên trong hạt nhân?
Cảm ơn bạn. Tôi đã suy nghĩ để làm một cái gì đó tương tự bằng cách nhân rộng chức năng sys_read/sys_open. Nhưng đây là sự trợ giúp tuyệt vời. Một sự tò mò, có cách nào để sử dụng các cuộc gọi hệ thống được khai báo bằng SYSCALL_DEFINE không? – Methos
Tôi đã thử mã này trong hạt nhân 2.6.30 (Ubuntu 9.04) và đọc tệp bị treo hệ thống. Bất kỳ ai cũng gặp phải vấn đề tương tự? –
@Enrico Detoma? Tuyệt vời. Điều này có cách nào mà bạn có thể cho tôi các mô-đun bạn sử dụng? Chưa bao giờ thấy điều đó trước đây? – dmeister