2012-03-21 51 views
6

Trong khi tôi đang thực hiện một số đọc về các cuộc gọi hệ thống, tôi đã thực hiện tìm kiếm syscalls.h để tìm tệp tiêu đề trong LXR. Kết quả tìm kiếm đã làm tôi bối rối. Có một tá các tập tin syscalls.h đến từ các thư mục theo số arch/_arch_name_/include/asm. Đây là ok, họ là những định nghĩa kiến ​​trúc cụ thể hoặc cái gì khác cần thiết. Câu hỏi đặt ra là tại sao chúng ta có hai tiêu đề khác nhau syscalls.h trong cả hai include/linuxinclude/asm-generic?Tổ chức tiêu đề hạt nhân Linux

Ngoài ra, tôi muốn tìm hiểu xem tiêu đề include/linux là gì và tiêu đề include/asm-generic là gì. Làm thế nào để họ phân biệt giữa nhau? Logic đằng sau có hai thư mục tiêu đề riêng biệt là gì? Chúng liên hệ với nhau như thế nào?

Cảm ơn

+1

Bạn có nhìn vào bên trong từng tệp này không? –

+1

Trong /include/linux/syscalls.h, có một số khai báo cuộc gọi hệ thống. Trong /include/asm-generic/syscalls.h, tất cả các cuộc gọi hệ thống được khai báo với các định nghĩa macro kèm theo. Nhưng điều này chỉ áp dụng cho syscalls.h, tuy nhiên, tôi muốn hiểu bức tranh lớn. – dirtybit

Trả lời

6

Tôi đã đặt câu hỏi này trên Kernel Newbies ML. Tôi nhận được câu trả lời sau đây mà làm cho mọi việc rõ ràng:

Cihangir Akturk đã viết:

AFAIK, tiêu đề tìm thấy trong/include/thư mục asm-generic là dành cho kiến ​​trúc độc lập (có thể là chia sẻ trên kiến ​​trúc) mã. Rất có thể bạn không cần phải bao gồm các tiêu đề này trực tiếp, thay vào đó là , chúng tôi bao gồm các tiêu đề này gián tiếp thông qua các tiêu đề phụ thuộc vào kiến ​​trúc phụ .

Thư mục OTOH,/include/linux dành cho tệp tiêu đề chung để xác định các giao diện giữa các thành phần của hạt nhân. Trong hầu hết các trường hợp, bạn sẽ tìm tất cả các chức năng hạt nhân bạn cần trong các tiêu đề này.

liên quan, chngr.

1

Các tiêu đề trong thư mục arch/_arch_name_/include/asm là kiến ​​trúc cụ thể phụ thuộc, chẳng hạn như đối với x86, kiến ​​trúc ARM. Vì vậy, logic bên trong là nền tảng cụ thể và rất phụ thuộc vào phần cứng cơ bản. Bạn sẽ chỉ bao gồm kiến ​​trúc nền tảng của bạn là gì.

Tiêu đề trong include/linux là phổ biến và nền tảng độc lập. Chúng là những logic phổ biến và sẽ được chia sẻ các kiến ​​trúc chéo.

+0

Câu hỏi khác là lý do bao gồm/asm-generic ngoài việc bao gồm/tiêu đề linux là gì? Mối quan hệ giữa chúng là gì? – dirtybit

+0

Ý kiến ​​của tôi là 'include/asm-generic' cung cấp một giao diện chung và thống nhất để truy cập cấu trúc dữ liệu liên quan đến phần cứng. 'include/asm-generic' cho phép các nhà phát triển kiểm soát phần cứng cơ bản dễ dàng hơn nhiều và không cần phải khai thác chi tiết spec phần cứng. Ví dụ, 'include/asm-generic/rtc.h' cung cấp một giao diện đồng bộ để lấy thông tin rtc, nhưng việc thực hiện nó bao gồm mã phụ thuộc vào kiến ​​trúc, chẳng hạn như' CMOS_WRITE' và 'CMOS_READ'. – Wayne

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