Printk
প্রিন্টকে হল লিনাক্স কার্নেল ইন্টারফেসের একটি সি ফাংশন যা কার্নেল লগ-এ বার্তা মুদ্রণ করে। এটি ফরম্যাট স্ট্রিং নামে একটি স্ট্রিং প্যারামিটার গ্রহণ করে, যা একটি স্ট্রিং-এ নির্বিচারে বিভিন্ন ডেটা টাইপ প্যারামিটার (গুলি) রেন্ডার করার জন্য একটি পদ্ধতি নির্দিষ্ট করে। স্ট্রিংটি তারপর কার্নেল লগ-এ ছাপা হয়। এটি একটি প্রিন্টএফ-এর মতো বিমূর্ততা প্রদান করে এবং এর বিন্যাস স্ট্রিং এবং আর্গুমেন্টের পার্সিং প্রিন্টএফ-এর অনুরূপ আচরণ করে। এটি কার্নেল প্রোগ্রামারদের জন্য একটি ডিবাগিং সরঞ্জাম হিসাবে কাজ করে যাদের কার্নেল থেকে বার্তা লগ করার জন্য এই ফাংশনটি প্রয়োজন। প্রিন্টকে ফাংশনের প্রোটোটাইপ হলঃ ইন্ট প্রিন্টকে (কনস্ট চার * এফএমটি,.); সি স্ট্যান্ডার্ড লাইব্রেরি এবং এর প্রিন্টএফ ফাংশন কার্নেল মোডে অনুপলব্ধ, তাই প্রিন্টকের প্রয়োজন। প্রিন্টএফ থেকে পার্থক্য প্রিন্টকে ফাংশনটি প্রিন্টএফ-এর উপর ভিত্তি করে তৈরি, তবে সবসময় প্রিন্টএফ-এর মতো একইভাবে ব্যবহার করা যায় না। লগ লেভেল প্রিন্টকে একজন কলারকে পাঠানো বার্তার ধরন এবং গুরুত্ব নির্দিষ্ট করার অনুমতি দেয়। এই নির্দিষ্টকারীকে লগ স্তর বলা হয়। লগ স্তরটি কার্নেল বার্তা লগ-এ পাঠানো বার্তার ধরন নির্দিষ্ট করে। লগ স্তরটি প্রি-পেন্ডিং (সি-এর স্ট্রিং আক্ষরিক সংহতকরণ ব্যবহার করে) দ্বারা নির্দিষ্ট করা হয় যা তৈরি করা বার্তার শুরু পর্যন্ত লগ স্তর বর্ণনা করে। উদাহরণস্বরূপ, কে. ই. আর. এন. _ আই. এন. এফ. ও-তে নিম্নলিখিতগুলি ব্যবহার করে একটি বার্তা তৈরি করা যেতে পারেঃ প্রিন্টকে (কে. ই. আর. এন. _ আই. এন. এফ. ও "বার্তাঃ% s\n", আর. জি); লগ স্তর নির্দিষ্টকারী স্ট্রিংটি হেডার অক্ষরের এ. এস. সি. আই. আই শুরু এবং তারপরে লগ স্তর বর্ণনাকারী একটি সংখ্যা বা বার্তাটি পূর্ববর্তী বার্তার ধারাবাহিকতা নির্দেশ করার জন্য 'সি' অক্ষর নিয়ে গঠিত। তাদের ব্যাখ্যা সহ নিম্নলিখিত লগ স্তরগুলি নীচে দেওয়া হল। যখন একটি লগ স্তর নির্দিষ্ট করা হয় না, তখন ডিফল্ট লগ স্তরটি কেআরএন _ ওয়ার্নিং হয়, যদি না কার্নেলে একটি ভিন্ন ডিফল্ট সেট করা থাকে, যেমন গুগলভেল = বুট আর্গুমেন্টের সাথে। লগ স্তরগুলি <লিনাক্স/কার্ন _ লেভেলস. এইচ>-এ সংজ্ঞায়িত করা হয়। কোন লগ স্তরগুলি মুদ্রিত হয় তা sysctl ফাইল/reproc/sys/kernel/প্রিংটকে ব্যবহার করে কনফিগার করা হয়। পয়েন্টার বিন্যাস% p বিন্যাস নির্দিষ্টকারী (প্রিন্টএফ-এ পয়েন্টার মুদ্রণের জন্য ব্যবহৃত) অতিরিক্ত বিন্যাস পদ্ধতি যোগ করার জন্য প্রসারিত করা হয়, উদাহরণস্বরূপ,% পিআইএসপি ব্যবহার করে একটি কাঠামো সকেডার * মুদ্রণের অনুরোধ করা হলে একটি আইপিভি4/ভি6 ঠিকানা এবং পোর্ট মানব-বান্ধব বিন্যাসে মুদ্রণ করা হবে (যেমন। "1.2.3.4:12345" অথবা "[1:2:3:4:5:6:7:8]: 12345")। কোনও ভাসমান বিন্দু সমর্থন নেই যদিও প্রিন্টএফ ভাসমান বিন্দু সংখ্যার আউটপুট সমর্থন করে, প্রিন্টকে সমর্থন করে না, কারণ লিনাক্স কার্নেল কার্নেলের মধ্যে ভাসমান বিন্দু সংখ্যা ব্যবহার করে না। বর্ণনা ফাংশনটি সিস্টেম কনসোলে অ্যাক্সেস নিয়ন্ত্রণকারী সেমাফোরকে লক করার চেষ্টা করে। যদি এটি সফল হয়, আউটপুটটি লগ করা হয় এবং কনসোল ড্রাইভারগুলিকে কল করা হয়। যদি সেমাফোর অর্জন করা সম্ভব না হয় তবে আউটপুটটি লগ বাফারের মধ্যে স্থাপন করা হয় এবং কনসোল সেমাফোরের বর্তমান ধারক যখন কনসোল সেমাফোরটি ছেড়ে দেবে তখন নতুন আউটপুটটি লক্ষ্য করবে এবং সেমাফোরটি ছেড়ে দেওয়ার আগে কনসোলে বাফার আউটপুট পাঠাবে। এই বিলম্বিত মুদ্রণের একটি প্রভাব হল যে কোডটি প্রিন্টকে কল করে এবং তারপর মুদ্রণের জন্য লগ স্তরগুলি পরিবর্তন করে তা ভেঙে যেতে পারে। এর কারণ হল যখন প্রকৃত মুদ্রণ ঘটে তখন মুদ্রিত লগ স্তরটি পরিদর্শন করা হয়। কার্নেল বুট প্রক্রিয়ার খুব প্রাথমিক পর্যায়ে ব্যতীত কার্নেলের যে কোনও জায়গা থেকে ফাংশন প্রিন্টকে কল করা যেতে পারে, যখন সিস্টেম কনসোলটি আরম্ভ করা হয় না। বিকল্প ফাংশন অর্লি _ প্রিন্টকে কিছু আর্কিটেকচারে প্রয়োগ করা হয় এবং বুট প্রক্রিয়ার প্রাথমিক পর্যায়ে প্রিন্টকে একইভাবে ব্যবহার করা হয়। রেফারেন্স বাহ্যিক লিঙ্ক ফরম্যাট রেফারেন্স লিনাক্স কার্নেল অপারেটিং সিস্টেম এপিআই