Tôi đã lấy bit của mã vùng người dùng mà tôi đã viết và chuyển đổi nó thành không gian hạt nhân (tức là sử dụng kmalloc(), v.v.) . Tuy nhiên, bạn bị giới hạn bởi sự hiểu biết của hạt nhân về C, không phải là không gian người dùng, điều này hơi khác một chút, đặc biệt là với các loại int tiêu chuẩn khác nhau.
Chỉ cần liên kết với không gian người dùng DSO là không thể - hạt nhân Linux là nguyên khối, hoàn toàn khép kín. Nó không sử dụng không gian người dùng libc, thư viện hoặc các bit khác như những người khác đã lưu ý.
9/10 lần, bạn sẽ tìm thấy những gì bạn cần ở đâu đó trong hạt nhân.Rất có thể ai đó đã chạy vào cùng một nhu cầu mà bạn có và đã viết một số hàm tĩnh trong một số mô-đun để làm những gì bạn muốn .. chỉ cần lấy chúng và tái sử dụng chúng.
Trong trường hợp mật mã, như những người khác đã nói, chỉ cần sử dụng những gì trong hạt nhân. Một điều cần lưu ý, bạn sẽ cần chúng được kích hoạt trong kconfig mà có thể hoặc có thể không xảy ra tùy thuộc vào những gì người dùng chọn khi xây dựng nó. Vì vậy, xem ra cho các phụ thuộc và rõ ràng, bạn có thể phải hack một vài mục trong kconfig cũng chọn API mật mã bạn muốn khi module của bạn được chọn. Làm như vậy có thể hơi đau khi xây dựng trên cây.
Vì vậy, một mặt chúng tôi đã "chỉ sao chép và đổi tên nội dung trong khi thêm tổng thể sưng lên", mặt khác bạn có "nói với mọi người rằng họ phải có nguồn hạt nhân đầy đủ". Đó là một trong những điều kỳ quặc đi kèm với một hạt nhân nguyên khối.
Với Microkernel, hầu như mọi thứ đều chạy trong không gian người dùng, không phải lo lắng liên kết với DSO đối với một số trình điều khiển ... đó là vấn đề không phải. Xin vui lòng không lấy tuyên bố đó như là một cue để khởi động lại triết lý thiết kế hạt nhân trong ý kiến, đó không phải là trong phạm vi của câu hỏi này.
Nguồn
2009-05-04 07:49:15