एपोल

स्केलेबल I/O ईवेंट अधिसूचना तंत्र के लिए एक Linux कर्नेल सिस्टम कॉल है, जिसे पहली बार Linux कर्नेल के संस्करण 2.5.44 में पेश किया गया था। इसका कार्य एकाधिक फ़ाइल डिस्क्रिप्टरों की निगरानी करना है ताकि यह देखा जा सके कि उनमें से किसी पर I/O संभव है या नहीं। इसका उद्देश्य पुराने POSIX सिलेक्ट (यूनिक्स)| को बदलना है और  सिस्टम कॉल, अधिक मांग वाले अनुप्रयोगों में बेहतर प्रदर्शन प्राप्त करने के लिए, जहां देखे गए फ़ाइल डिस्क्रिप्टर की संख्या बड़ी है (पुराने सिस्टम कॉल के विपरीत, जो बिग ओ नोटेशन (एन) समय में काम करते हैं,   O(1) समय में संचालित होता है ).

FreeBSD के Kqueue| के समान है, इसमें उपयोगकर्ता-स्पेस फ़ंक्शंस का एक सेट शामिल है, प्रत्येक एक फ़ाइल डिस्क्रिप्टर तर्क लेता है जो कॉन्फ़िगर करने योग्य कर्नेल ऑब्जेक्ट को दर्शाता है, जिसके विरुद्ध वे सहकारी रूप से काम करते हैं।  वर्तमान में मॉनिटर किए जा रहे सभी फ़ाइल डिस्क्रिप्टरों पर नज़र रखने के लिए एक लाल-काले पेड़ (आरबी-ट्री) डेटा संरचना का उपयोग करता है।

एपीआई
एक बनाता है  ऑब्जेक्ट और उसका फ़ाइल डिस्क्रिप्टर लौटाता है।   e> पैरामीटर एपोल व्यवहार को संशोधित करने की अनुमति देता है। इसका केवल एक ही वैध मान है,. का एक पुराना संस्करण है  और इसे Linux कर्नेल संस्करण 2.6.27 और glibc संस्करण 2.9 के रूप में हटा दिया गया है। नियंत्रित करता है (कॉन्फ़िगर करता है) कि कौन से फ़ाइल डिस्क्रिप्टर इस ऑब्जेक्ट द्वारा देखे जाते हैं, और किन घटनाओं के लिए।  जोड़ें, संशोधित करें या हटाएं जा सकते हैं. के साथ पंजीकृत किसी भी घटना की प्रतीक्षा करता है, जब तक कि कम से कम एक घटित न हो या समय समाप्त न हो जाए। घटित घटनाओं को लौटाता है  , तक   तुरंत।   की अधिकतम संख्या है  /फ़ाइल डिस्क्रिप्टर की निगरानी की जाएगी।  अधिकांश मामलों में,   के आकार के मान पर सेट किया गया है   तर्क (  सारणी)।

ट्रिगरिंग मोड
इंटरप्ट#एज-ट्रिगर|एज-ट्रिगर और इंटरप्ट#लेवल-ट्रिगर|लेवल-ट्रिगर दोनों मोड प्रदान करता है। एज-ट्रिगर मोड में, एक कॉल  केवल तभी वापस आएगा जब कोई नया इवेंट इसके साथ जोड़ा जाएगा   ऑब्जेक्ट, लेवल-ट्रिगर मोड में रहते हुए,   जब तक स्थिति रहेगी वापस आएँगे।

उदाहरण के लिए, यदि कोई अज्ञात पाइप पंजीकृत है  डेटा प्राप्त हुआ है, एक कॉल   पढ़ने के लिए डेटा की उपस्थिति का संकेत देते हुए वापस आ जाएगा। मान लीजिए, पाठक ने बफ़र से डेटा का केवल एक भाग ही उपभोग किया। लेवल-ट्रिगर मोड में, आगे कॉल करता है   तुरंत वापस आ जाएगा, जब तक पाइप के बफ़र में पढ़ने के लिए डेटा मौजूद है। हालाँकि, एज-ट्रिगर मोड में,   पाइप में नया डेटा लिखे जाने के बाद ही वापस आएगा।

आलोचना
ब्रायन कैंट्रिल ने इस ओर इशारा किया  इसमें गलतियाँ थीं जिन्हें टाला जा सकता था, अगर इसने अपने पूर्ववर्तियों से सीखा होता: इनपुट/आउटपुट पूर्णता पोर्ट, इवेंट पोर्ट (सोलारिस) और केक्यू। हालाँकि, उनकी आलोचना के एक बड़े हिस्से को संबोधित किया गया था  'एस   और   विकल्प. फरवरी 2004 में जारी लिनक्स कर्नेल मेनलाइन के संस्करण 2.6.2 में जोड़ा गया था।  मार्च 2016 में जारी संस्करण 4.5 में जोड़ा गया था।

यह भी देखें

 * इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी)
 * क्यू
 * मुक्ति घटना

बाहरी संबंध

 * epoll manpage
 * epoll patch