2012-03-05 23 views
5

Tôi đang tìm kiếm các tệp tiêu đề hạt nhân khác nhau và tình cờ gặp <linux/kernel.h>. Bên trong nó là một cấu trúc được gọi là sysinfo.cấu trúc sysinfo trong linux/kernel.h

Tôi đã thử sử dụng nó ra khỏi hộp để nói và tất cả các giá trị trong cấu trúc được trả về 0. Tôi đoán tôi cần sử dụng chức năng poplating ở trên được gọi là do_sysinfo(struct sysinfo *info).

Điều tôi không thể tìm thấy bất kỳ thông tin nào tham chiếu cách sử dụng. Tôi đã thử chức năng ra khỏi hộp và nó thất bại vì nó không thể được liên kết. Bất cứ ai có bất kỳ thông tin về cách sử dụng này hoặc tại sao nó không? Tôi là một người mới trong lĩnh vực này. Muốn có bất kỳ liên kết nào để hướng dẫn/thông tin tốt nếu bạn có chúng, điều đó sẽ tuyệt vời.

Trả lời

5

Tôi đoán bạn đã cố gắng gọi hàm đó từ không gian người dùng. Điều đó là không thể, vì tiêu đề đó chỉ dành cho việc sử dụng hạt nhân, ngoại trừ cấu trúc sysinfo được "chia sẻ".

Bạn có thể muốn sử dụng cuộc gọi hệ thống int sysinfo(struct sysinfo *info) bằng cách bao gồm sys/sysinfo.h để điền số struct sysinfo.

4

do_sysinfo là triển khai phía hạt nhân; nó không thể truy cập từ userland. Tuy nhiên, cuộc gọi hệ thống sysinfo có thể truy cập được; đó là những gì populates cấu trúc:

#include <sys/sysinfo.h> 

... 

struct sysinfo info; 
sysinfo(&info); 

Lưu ý rằng có nhiều thông tin có sẵn bởi các tập tin phân tích trong /proc (ví dụ, /proc/uptime, /proc/cpuinfo, /proc/meminfo).

+2

Thứ nhất, cảm ơn tất cả vì đã trả lời câu hỏi của tôi. Giúp đỡ rất nhiều! Nghiêm túc. Bạn học tất cả những thứ này ở đâu? Đó là loại kiến ​​thức là hư không được tìm thấy trên web. Đó là một nỗi đau để tìm ra những chi tiết nhỏ này. Mọi liên kết đến nội dung thú vị? –