Soạn ra một mô-đun hạt nhân trên 32-Bit kết quả Linux kernel trong__udivdi3 undefined - cách tìm mã sử dụng mã đó?
"__udivdi3" [mymodule.ko] undefined!
"__umoddi3" [mymodule.ko] undefined!
Mọi thứ đều tốt trên hệ thống 64-bit. Theo như tôi biết, lý do cho điều này là phân chia số nguyên 64 bit và modulo không được hỗ trợ bên trong hạt nhân Linux 32 bit.
Tôi làm cách nào để tìm mã phát hành các hoạt động 64 bit. Chúng khó tìm bằng tay vì tôi không thể dễ dàng kiểm tra xem "/" có rộng 32 bit hay rộng 64 bit không. Nếu các hàm "bình thường" không xác định, tôi có thể grep chúng, nhưng điều này là không thể ở đây. Có cách nào khác tốt để tìm kiếm các tài liệu tham khảo? Một số loại "mã máy grep"?
Mô-đun này bao gồm một số nghìn dòng mã. Tôi thực sự không thể kiểm tra từng dòng một cách thủ công.
để thêm một chút thông tin, do_div() được xác định trong tiêu đề. –
Có vẻ như vô lý khi Linux khăng khăng làm cho bạn sử dụng một chức năng xấu xí để phân chia, thay vì chỉ thực hiện '__udivdi3' vv. Chúng dễ thực hiện, và nếu bạn làm điều đó, chúng sẽ hiệu quả hơn nhiều Các phiên bản của libgcc (có thể nhanh hơn 2-3 lần). –
@WilliBallenthin ngay cả sau khi sử dụng, đối mặt với vấn đề này.Vì vậy, bất kỳ ai đề xuất tôi cần phải làm gì để giải quyết vấn đề này? –