Printk
प्रिंटके लिनक्स कर्नेल इंटरफेस से एक सी फ़ंक्शन है जो कर्नेल लॉग में संदेश प्रिंट करता है। यह एक स्ट्रिंग पैरामीटर को स्वीकार करता है जिसे प्रारूप स्ट्रिंग कहा जाता है, जो एक स्ट्रिंग में विभिन्न डेटा प्रकार पैरामीटर (ओं) की एक मनमाने संख्या को प्रस्तुत करने के लिए एक विधि निर्दिष्ट करता है। इसके बाद स्ट्रिंग को कर्नेल लॉग में प्रिंट किया जाता है। यह एक प्रिंटएफ-जैसी अमूर्तता प्रदान करता है और प्रारूप स्ट्रिंग और तर्कों की इसकी पार्सिंग प्रिंटएफ के समान व्यवहार करती है। यह कर्नेल प्रोग्रामरों के लिए एक डिबगिंग उपकरण के रूप में कार्य करता है जिन्हें कर्नेल से संदेशों को लॉग करने के लिए इस कार्य की आवश्यकता होती है। प्रिंटके फ़ंक्शन प्रोटोटाइप हैः इंट प्रिंटके (कॉन्स्ट चार * एफएमटी,.); सी मानक लाइब्रेरी और इसका प्रिंटएफ फ़ंक्शन कर्नेल मोड में उपलब्ध नहीं है, इसलिए प्रिंटके की आवश्यकता है। प्रिंटएफ से अंतर प्रिंटके फ़ंक्शन प्रिंटएफ पर आधारित है, लेकिन हमेशा उसी तरह से उपयोग नहीं किया जा सकता है जैसे प्रिंटएफ का उपयोग किया जाता है। लॉग लेवल प्रिंटके कॉल करने वाले को भेजे जा रहे संदेश के प्रकार और महत्व को निर्दिष्ट करने की अनुमति देता है। इस विनिर्देशक को लॉग स्तर कहा जाता है। लॉग स्तर कर्नेल संदेश लॉग को भेजे जाने वाले संदेश के प्रकार को निर्दिष्ट करता है। लॉग स्तर को पूर्वनिर्धारित करके निर्दिष्ट किया जाता है (सी के स्ट्रिंग शाब्दिक संयोजन का उपयोग करके) एक स्ट्रिंग जो लॉग स्तर को उत्पन्न किए जाने वाले संदेश की शुरुआत में वर्णित करती है। उदाहरण के लिए, के. ई. आर. एन. _ आई. एन. एफ. ओ. पर निम्नलिखित का उपयोग करके एक संदेश का उत्पादन किया जा सकता हैः प्रिंट. के. (के. ई. आर. एन. _ आई. एन. एफ. ओ. "संदेशः% एस. \न", आर. जी.); लॉग स्तर को निर्दिष्ट करने वाले स्ट्रिंग में हेडर वर्ण की ए. एस. सी. आई. आई. शुरुआत होती है जिसके बाद लॉग स्तर का वर्णन करने वाला एक अंक होता है या यह इंगित करने के लिए कि संदेश पिछले संदेश की निरंतरता है। उनकी व्याख्याओं के साथ निम्नलिखित लॉग स्तर नीचे दिए गए हैं। जब लॉग स्तर निर्दिष्ट नहीं होता है, तो डिफ़ॉल्ट लॉग स्तर KERN _ WARNING होता है, जब तक कि कर्नेल में ही एक अलग डिफ़ॉल्ट सेट नहीं किया जाता है, जैसे कि गूगलवेल = बूट तर्क के साथ। लॉग स्तरों को <लिनक्स/केर्न _ लेवल. एच> में परिभाषित किया गया है। कौन से लॉग स्तर मुद्रित किए जाते हैं, उन्हें sysctl फ़ाइल/gov/sys/कर्नेल/प्रिंटके का उपयोग करके कॉन्फ़िगर किया जाता है। सूचक प्रारूप% p प्रारूप विनिर्देशक (प्रिंटएफ में सूचकों को छापने के लिए उपयोग किया जाता है) को अतिरिक्त स्वरूपण विधियों को जोड़ने के लिए विस्तारित किया जाता है, उदाहरण के लिए,% पी. आई. एस. पी. सी. का उपयोग करके एक संरचना सॉकडर * को छापने का अनुरोध करने से एक आई. पी. वी. 4/वी. 6 पता और पोर्ट मानव-अनुकूल प्रारूप (जैसे. "1.2.3.4:12345" या "[1:2:3:4:5:6:7:8]: 12345")। जबकि प्रिंटएफ फ्लोटिंग पॉइंट नंबरों के आउटपुट का समर्थन करता है, प्रिंटके नहीं करता है, क्योंकि लिनक्स कर्नेल कर्नेल के भीतर फ्लोटिंग पॉइंट नंबरों का उपयोग नहीं करता है। वर्णन फंक्शन सिस्टम कंसोल तक पहुंच को नियंत्रित करने वाले सेमाफोर को लॉक करने का प्रयास करता है। यदि यह सफल होता है, तो आउटपुट लॉग किया जाता है और कंसोल ड्राइवरों को बुलाया जाता है। यदि सेमाफोर प्राप्त करना संभव नहीं है तो आउटपुट को लॉग बफर में रखा जाता है, और कंसोल सेमाफोर का वर्तमान धारक कंसोल सेमाफोर जारी करने पर नए आउटपुट को देखेगा और सेमाफोर जारी करने से पहले बफर किए गए आउटपुट को कंसोल को भेजेगा। इस विलंबित मुद्रण का एक प्रभाव यह है कि कोड जो प्रिंटके को कॉल करता है और फिर मुद्रित किए जाने वाले लॉग स्तरों को बदल देता है, टूट सकता है। ऐसा इसलिए है क्योंकि मुद्रित किए जाने वाले लॉग स्तर का निरीक्षण तब किया जाता है जब वास्तविक मुद्रण होता है। फंक्शन प्रिंटके को कर्नेल में कहीं से भी कॉल किया जा सकता है, सिवाय कर्नेल बूट प्रक्रिया के बहुत शुरुआती चरणों के दौरान, जब सिस्टम कंसोल आरंभ नहीं किया जाता है। वैकल्पिक कार्य अर्ली _ प्रिंटके को कुछ आर्किटेक्चर पर लागू किया जाता है और बूट प्रक्रिया के शुरुआती चरणों के दौरान प्रिंटके के लिए समान रूप से उपयोग किया जाता है। संदर्भ बाहरी लिंक प्रारूप संदर्भ लिनक्स कर्नेल ऑपरेटिंग सिस्टम एपीआई