एपोल

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

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

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

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

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

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

यह भी देखें

 * इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी)
 * क्यू
 * लिबइवेंट

बाहरी संबंध

 * epoll manpage
 * epoll patch