2012-11-28 4 views
6

में टाइमर आवृत्ति निर्धारित करने के लिए मुझे लिनक्स कर्नेल टाइमर (इंटरप्ट) आवृत्ति की गणना करने के लिए कर्नेल मॉड्यूल लिखने की आवश्यकता है।लिनक्स

किसी ने मुझसे कहा कि मैं (के लिए मेरे मॉड्यूल में एक टाइमर का उपयोग करने की जरूरत है, लेकिन मैं कैसे स्पष्ट रूप से :(

मेरे अंतिम लक्ष्य कुछ फ़ाइल में परिणाम (आवृत्ति) लिखने के लिए है कि क्या करने के लिए पता नहीं है में उदाहरण:।/proc/osfreq /)

=)

+1

कर्नेल टाइमर इंटरप्ट आवृत्ति को पहले से ही '' – iabdalkader

+0

में 'HZ' के रूप में परिभाषित किया गया है, मुझे लॉग इन करने की आवश्यकता है फ़ाइल में इसका वास्तविक समय मान – Emadpres

+0

आपका लक्ष्य मुझे स्पष्ट नहीं है, क्या आप एक मॉड्यूल लिखना चाहते हैं जो कर्नेल टाइमर का उपयोग करता है या क्या आप समय-समय पर कुछ बाधा उत्पन्न करते हैं? – Raber

उत्तर

8

ऐसे कई तरीके 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 

का मतलब है 250 हर्ट्ज

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

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

का मतलब 4 तर्क सीपीयू, जिसकी बारंबारता है देखते हैं: 43986424 - 43986173 ~ = 250।

इसके अलावा, आप कर्नेल स्पेस पर proc.c में var cpu_khz का मान प्राप्त कर सकते हैं।

+0

एक समाधान, लेकिन मेरी इच्छा का जवाब नहीं .. हम जानते थे कि आवृत्ति वास्तव में कुछ डिग्री में स्थिर नहीं है .. मुझे मॉड्यूल के साथ वर्तमान वास्तविक मूल्य प्राप्त करने की आवश्यकता है। – Emadpres

+0

मुझे 10 सेक देरी के बाद समान परिणाम मिल गए: बिल्ली/proc/interrupts | grep LOC; नींद 10; बिल्ली/proc/interrupts | grep LOC LOC: 98 152 121 91 स्थानीय टाइमर इंटरप्ट करता है LOC: 98 152 121 91 स्थानीय टाइमर इंटरप्ट करता है – Michael

+0

मेरे लिए काम नहीं कर रहा है - मेरे पास /proc/config.gz नहीं है और 1 के बीच LOC मानों की तुलना में कहीं अधिक है 250 (एक सीपीयू ~ 8k और अन्य ~ 11k द्वारा)। मुझे उम्मीद से बहुत दूर लगता है। –

1

आप प्रिंटर का उपयोग कर मॉड्यूल मॉड्यूल में वैश्विक चर HZ के मान को प्रिंट कर सकते हैं, और $ dmesg का उपयोग कर मॉड्यूल लोड करने के बाद कर्नेल लॉग की जांच कर सकते हैं, तो आप HZ का मान पा सकते हैं।