2012-11-28 22 views
6

Tôi cần phải viết một mô-đun hạt nhân để tính toán Tần số Timer Kernel (ngắt) của Linux.Làm thế nào để xác định tần số hẹn giờ trong linux

ai đó nói với tôi rằng tôi cần phải sử dụng một bộ đếm thời gian trong mô-đun của tôi nhưng tôi không biết làm thế nào để làm điều đó rõ ràng :(

mục tiêu cuối cùng của tôi là viết kết quả (tần số) trong một số tập tin (ví Ví dụ trong:./proc/osfreq /)

=)

+1

Tần số ngắt bộ đếm thời gian hạt nhân đã được xác định là 'HZ' trong' ' – iabdalkader

+0

Tôi cần đăng nhập Giá trị thời gian thực của nó trong một tệp – Emadpres

+0

Mục tiêu của bạn không rõ ràng với tôi, bạn có muốn viết mô-đun không sử dụng bộ định thời hạt nhân hoặc bạn có muốn thời gian một số gián đoạn xảy ra thường xuyên không? – Raber

Trả lời

8

có rất nhiều cách để có được tần số thời gian của CPU:

1. zcat /proc/config.gz |grep CONFIG_HZ 

# CONFIG_HZ_100 is not set 
CONFIG_HZ_250=y 
# CONFIG_HZ_1000 is not set 
CONFIG_HZ=250 

nghĩa 250 Hz

2. cat /proc/interrupts |grep LOC; sleep 1;cat /proc/interrupts |grep LOC 

LOC: 43986173 44089526 43986113 44089117 
LOC: 43986424 44089777 43986364 44089368 

có nghĩa là có 4 CPU logic, có tần số là: 43986424 - 43986173 ~ = 250.

Ngoài ra, bạn có thể nhận được giá trị của var cpu_khz trong proc.c tại không gian hạt nhân.

+0

Một giải pháp, Nhưng không phải của tôi mong muốn câu trả lời .. chúng tôi biết tần số thực sự là không liên tục ở một mức độ .. Tôi cần phải nhận được giá trị thực tế hiện tại với một mô-đun. – Emadpres

+0

Tôi nhận được kết quả giống hệt nhau sau 10 giây trì hoãn: cat/proc/interrupts | grep LOC; ngủ 10; cat/proc/interrupts | grep LOC LOC: 98 152 121 91 Hẹn giờ cục bộ ngắt LOC: 98 152 121 91 Bộ đếm giờ cục bộ – Michael

+0

Không hoạt động với tôi - Tôi không có /proc/config.gz và giá trị LOC giữa 1s thay đổi nhiều hơn 250 (một CPU bởi ~ 8k và khác bởi ~ 11k). Có vẻ như quá xa so với những gì tôi mong đợi. –

1

Bạn chỉ có thể in giá trị biến HZ toàn cục trong mô-đun sử dụng printk và kiểm tra nhật ký hạt nhân sau khi tải mô-đun bằng $ dmesg, sau đó bạn có thể tìm giá trị của HZ.

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