मैं ऐसे डिवाइस के लिए कर्नेल ड्राइवर लिख रहा हूं जो नियमित रूप से पढ़ने के लिए नियमित मात्रा में डेटा उत्पन्न करता है। उपयोगकर्ता अंतरिक्ष कार्यक्रम आदर्श रूप से इसे अवरुद्ध करने वाला ड्राइवर बनाने के लिए उपयुक्त है।मैं लिनक्स ड्राइवर मॉड्यूल में 100+ मिलीसेकंड के लिए कैसे रोक सकता हूं?
क्या तरीकों एक ड्राइवर में 4 से 100ms के लिए कहीं भी रोक (अर्थात "ब्लॉक" कर रही है) के लिए उपलब्ध हैं?
tv.tv_sec = microsecond_delay/1000000ul;
tv.tv_usec = microsecond_delay % 1000000ul;
(void)select(0, NULL, NULL, NULL, & tv);
या
gettimeofday(tv,NULL);
और तुलना संरचनाओं: उपयोगकर्ता अंतरिक्ष में मैं करने के लिए कुछ समान कर चाहते हैं।
[संपादित करें - अपने खुद के जवाब]
मैं अपने ड्राइवर में निम्न कोड का उपयोग किया जाएगा:
#include <linux/jiffies.h>
...
schedule_timeout(file->private_data->my_driver_struct.read_pause_jiffies);
देखा! मैं अब परीक्षण करेगा ...
जवाब स्वागत है, लेकिन मैं सिर्फ पाया [इस] (http://makelinux.com/ldd3/chp-7-sect-4) – Jamie
वास्तव में, मैं के लिए क्या नहीं देख रहा हूँ: मैं चाहता हूँ एक निर्दिष्ट समय सो जाओ, एक एसिंक्रोनस टाइमर घटना नहीं बनाओ। – Jamie
मिले यह: 'निर्वासन पर हस्ताक्षर किए लंबे schedule_timeout (हस्ताक्षरित लंबे समय समाप्त);' – Jamie