2010-07-14 31 views
5

Tôi cần phải viết một mô-đun hạt nhân không phải là trình điều khiển thiết bị. Mô-đun đó sẽ giao tiếp với một số quy trình không gian của người dùng. Vì tôi không muốn sử dụng ioctl(), tôi còn lại với việc tạo một tệp trong thư mục/proc hoặc tạo một tệp thiết bị trong thư mục/dev.Khi nào sử dụng/proc và khi/dev

Câu hỏi: Làm cách nào để quyết định giữa/proc và/dev. Đây có phải chỉ là một cuộc gọi phán xét hoặc có bất kỳ thỏa thuận không được phép sử dụng hai điều này.

+0

Như sarnold chỉ ra các đối tượng đại diện trong/dev/không phải là " thiết bị "thực". Nếu trình điều khiển của bạn hiển thị giao diện loại POSIX (mở/đọc/ghi) thì không có lý do gì để không sử dụng nó. Bạn đang có kế hoạch truyền thông nào giữa người dùng và không gian hạt nhân? – stsquad

+0

Một phần của phần mềm của chúng tôi tạo ra quá nhiều cuộc gọi hệ thống đang ảnh hưởng đến hiệu suất của hệ thống. Để tránh gánh nặng của các cuộc gọi này, chúng tôi dự định chuyển nó vào không gian hạt nhân. Về cơ bản, giao tiếp giữa nhân và không gian người dùng sẽ liên quan đến việc chuyển dữ liệu lớn. Tôi đánh giá cao nếu có ai có thể đề xuất bất kỳ kỹ thuật nào khác cho vấn đề này. – binW

+1

Bạn không thể thấy rằng các cuộc gọi hệ thống nhanh hơn đáng kể từ không gian hạt nhân - ít nhất, không đủ để chúng vượt quá chi phí bổ sung của việc sao chép một lượng lớn dữ liệu đến và từ không gian hạt nhân. Điều đó nói rằng, điều tra một tập tin thiết bị ký tự thực hiện 'mmap'. – caf

Trả lời

6

Bạn sẽ gặp rất nhiều khó khăn khi thêm giao diện mới vào/proc /. Các nhà phát triển hạt nhân không hài lòng vì nó đã trở thành một bãi rác cho các giao diện linh tinh, và trừ khi bạn đang thực sự sửa đổi một cái gì đó về các quy trình thông qua/proc/pid /, tôi nghĩ bạn sẽ gặp khó khăn khi thuyết phục cộng đồng hạt nhân chấp nhận nó.

Tệp thiết bị trong/dev/có thể chấp nhận được, ngay cả đối với các mô-đun không thực sự là trình điều khiển thiết bị. (ví dụ:/dev/kvm,/dev/pts,/dev/ecryptfs,/dev/fuse,/dev/kmsg,/dev/ptmx, v.v.) Tuy nhiên, các tệp thiết bị quá thường dễ thao tác hơn với ioctl (), và tôi nghĩ bạn có quyền tránh nó nếu bạn có thể.

Xu hướng hiện tại trong vòng kết nối hạt nhân là sysfs hoặc hệ thống tệp tùy chỉnh. Cách tiếp cận sysfs dựa trên ngữ nghĩa một giá trị cho mỗi tệp, được dùng để thao tác với echo và cat. Thật tuyệt vời cho người dùng nếu nó phù hợp với bạn. Các hệ thống tệp tùy chỉnh cho phép bạn viết các giao diện có khả năng nhị phân rất cụ thể và fs/libfs.c sẽ giúp bạn viết hệ thống tệp của riêng mình theo nhu cầu của riêng bạn. (Tôi không biết bất cứ ai đã sử dụng configfs, nhưng tôi đã luôn luôn nghĩ rằng nó trông gọn gàng. Có lẽ nó sẽ phù hợp với mô-đun của bạn?)

Các vấn đề liên quan