2016-08-21 6 views
8

आमतौर पर CLOCK_MONOTONIC_RAW का उपयोग ऐसी घड़ी प्राप्त करने के लिए किया जाता है जो एनटीपी या adjtime() से प्रभावित नहीं होता है। हालांकि clock_nanosleep()CLOCK_MONOTONIC_RAW का समर्थन नहीं करता है और इसे किसी भी तरह से उपयोग करने का प्रयास करने के परिणामस्वरूप वापसी कोड 95 ऑपरेशन समर्थित नहीं है (कर्नेल 4.6.0)।क्या घड़ी_नहीं नींद एटीटीपी और एनटीपी से प्रभावित है?

क्या clock_nanosleep() किसी भी तरह से इन घड़ी समायोजन को ध्यान में रखता है या नींद का समय इससे प्रभावित होगा?

सोने के समायोजन से प्रभावित नहीं होने पर विकल्प क्या हैं?

उत्तर

2

CLOCK_MONOTONIC_RAWclock_nanosleep() के लिए कभी भी समर्थन नहीं मिला क्योंकि यह was introduced लिनक्स 2.6.28 में है। यह 2.6122 because of oopses में यह समर्थन नहीं रखने के लिए explicitly fixed भी था। इसके बाद कोड को कई बार दोबारा प्रतिक्रिया दी गई थी, लेकिन CLOCK_MONOTONIC_RAWclock_nanosleep() में अभी भी कोई समर्थन नहीं है और पर पर कोई टिप्पणी नहीं मिली।

बहुत कम से कम, तथ्य यह है कि एक पैच था जो इस कार्यक्षमता को स्पष्ट रूप से अक्षम कर दिया गया था और यह सभी समीक्षाओं को पारित करता है हमें बताता है कि यह कर्नेल डेवलपर्स के लिए बड़ी समस्या की तरह नहीं दिखता है। तो, फिलहाल (4.7) the only things CLOCK_MONOTONIC_RAW supportsclock_getres() और clock_gettime() हैं। , समायोजन की

बात हो रही है के रूप में already noted by RichCLOCK_MONOTONICसिर्फ इस घड़ी की प्रकृति द्वारा दर समायोजन करने के लिए अधीन है। ऐसा इसलिए होता है क्योंकि hrtimer_interrupt() समायोजित मोनोटोनिक टाइम मान (ktime_get_update_offsets_now() ->timekeeping_get_ns() ->timekeeping_delta_to_ns() के साथ अपनी कतार चलाता है और यह xtime_nsec के साथ संचालित होता है जो subject to adjustment है)। असल में, इस कोड को देखते हुए मुझे शायद आश्चर्य नहीं हुआ कि CLOCK_MONOTONIC_RAWclock_nanosleep() (और शायद भविष्य में यह नहीं होगा) के लिए कोई समर्थन नहीं है — समायोजित monotonic घड़ी का उपयोग hrtimers के लिए आधार लगता है।

विकल्पों के लिए, मुझे लगता है कि कोई नहीं है। nanosleep() uses the same CLOCK_MONOTONIC, setitimer() has its own set of timers, alarm() uses ITIMER_REAL (same as setitimer()), वह (with some indirection) also our good old friend CLOCK_MONOTONIC है। हमारे पास और क्या है? मुझे कुछ नहीं लगता है।

एक असंबंधित साइड नोट के रूप में, यदि आप सापेक्ष अंतराल (TIMER_ABSTIME नहीं है) के लिए पर पर कॉल करते हैं तो इसमें एक दिलचस्प अवलोकन है) CLOCK_REALTIME actually becomes a synonym for CLOCK_MONOTONIC

+1

आपके सहायक प्रयास के लिए बहुत उपयोगी उत्तर। तो [रिच के जवाब] के अनुसार (http://stackoverflow.com/a/39064645/165063) 'CLOCK_MONOTONIC'' CLOCK_MONOTONIC_RAW' से अधिक सटीक है और इस प्रकार छोटी नींद के लिए बेहतर है, खासकर जब से 'समायोजन' समायोजन छोटे अंतराल के लिए नगण्य हैं । – scai

संबंधित मुद्दे