আইওএসটিএল (), আনলকড_ইওকটিএল () এবং কমপ্যাট_আইওকটিএল () এর মধ্যে পার্থক্য কী?


38

এ লিনাক্স 2.6.36 সোর্স কোড দিয়ে যাচ্ছিলেন lxr.linux.no , আমি খুঁজে পাইনি ioctl()পদ্ধতি file_operations। পরিবর্তে আমি দুটি নতুন কল পেয়েছি: unlocked_ioctl()এবং compat_ioctl()। মধ্যে পার্থক্য কি ioctl(), unlocked_ioctl()এবং compat_ioctl()?

উত্তর:


39

মেটা-উত্তর: লিনাক্স কার্নেলের সাথে ঘটে যাওয়া সমস্ত কাঁচামাল lkML (লিনাক্স কার্নেল মেলিং তালিকা) দিয়ে যায় । ব্যাখ্যামূলক সংক্ষিপ্তসারগুলির জন্য, পড়ুন বা অনুসন্ধান করুন lwn (লিনাক্স সাপ্তাহিক সংবাদ)

উত্তর: থেকে ioctl () এর নতুন উপায় দ্বারা জনাথন Corbet :

ioctl()কার্নেলের অবশিষ্ট অংশগুলির মধ্যে একটি যা বিগ কার্নেল লক (বিকেএল) এর অধীনে চলে। অতীতে, ioctl()বিকেএল এর ব্যবহার দীর্ঘসম্পর্কিত পদ্ধতিগুলির সাথে সম্পর্কযুক্ত প্রক্রিয়াগুলির জন্য দীর্ঘ বিলম্ব তৈরি করতে সক্ষম করেছে।

যে প্যাচটি প্রবর্তিত হয়েছিল unlocked_ioctlএবং compat_ioctlএটি 2.6.11 এ ব্যাখ্যা করেছে। অপসারণের ioctlক্ষেত্র 2.6.36 মধ্যে, অনেক পরে ঘটেছে।

ব্যাখ্যা: যখন ioctlমৃত্যুদন্ড কার্যকর করা হয়েছিল, তখন এটি বিগ কার্নেল লক (বিকেএল) নিয়েছিল , সুতরাং অন্য কোনও কিছুই একই সময়ে কার্যকর করতে পারেনি। এটি একটি মাল্টিপ্রসেসর মেশিনে খুব খারাপ, তাই বিকেএল থেকে মুক্তি পাওয়ার জন্য একটি বড় চেষ্টা করা হয়েছিল। প্রথম, unlocked_ioctlপরিচয় করিয়ে দেওয়া হয়েছিল। এটি প্রতিটি চালক লেখককে পরিবর্তে কোন লকটি ব্যবহার করতে হবে তা চয়ন করতে দেয়। এটি কঠিন হতে পারে, সুতরাং পরিবর্তনের একটি সময়কাল ছিল যার মধ্যে পুরানো ড্রাইভাররা এখনও কাজ করে (ব্যবহার করে ioctl) তবে নতুন ড্রাইভারগুলি উন্নত ইন্টারফেস ( unlocked_ioctl) ব্যবহার করতে পারে । শেষ পর্যন্ত সমস্ত ড্রাইভার রূপান্তরিত হয়েছিল এবং ioctlসরানো যেতে পারে।

compat_ioctlএটি একই সাথে যুক্ত হওয়া সত্ত্বেও প্রকৃতপক্ষে সম্পর্কিত নয়। এর উদ্দেশ্য হ'ল 32-বিট ব্যবহারকারীল্যান্ড প্রোগ্রামগুলিকে ioctl64-বিট কার্নেলে কল করার অনুমতি দেওয়া । সর্বশেষ যুক্তিটির অর্থ ioctlড্রাইভারের উপর নির্ভর করে, তাই ড্রাইভার-স্বাধীন রূপান্তর করার কোনও উপায় নেই।


1
আমি সর্বশেষতম আইওসিটিএল উত্সটি দেখছিলাম এবং দেখেছিলাম যে সাইকেলটি কয়েকটি চেক করে এবং তারপরে এখানে লাফ দেয় । আপনি কি জানেন যে আমি কোথায় আইওএসটিএল সিস্টেম সম্পর্কে আরও তথ্য সংগ্রহ করতে পারি? চরিত্রের ফাইলগুলিতে আইওটিটিএল কমান্ডগুলি কীভাবে উপযুক্ত ড্রাইভারের দিকে যায় তা সম্পর্কে আমি আগ্রহী। এর মাধ্যমেই কি unlocked_ioctlঘটে? কোনও ফাংশন পয়েন্টার ফাইল প্রতি ব্যবহৃত হয় (এই ক্ষেত্রে ক struct file) মনে হয় আমি সম্ভবত কাছাকাছি থাকতে পারি। unlocked_ioctlড্রাইভার আরম্ভের পরে অক্ষর ফাইলগুলির জন্য নিবন্ধিত কি mknod?
sherrellbc

1
@sherrellbc ডিভাইস ড্রাইভার ফাইল যেমন পদ্ধতি হ্যান্ডলিং খাতাপত্র unlocked_ioctlএকটি struct file_opsযখন এটা শুরু হয়, এবং তারা থেকে জনবহুল হয় struct file_opsকখন ফাইলটি খোলা হয় ফাইল বস্তুর মধ্যে। mknodএতে কোনও ভূমিকা নেই।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

আমি দেখি. আমি ভাবছিলাম যে কোনও ডিভাইস ড্রাইভারকে mknodসংশ্লিষ্ট ফাইল অপারেশনগুলি নিজের কাছে (মাধ্যমে unlocked_ioctl) পুনঃনির্দেশ করার আগে প্রথমে একটি অক্ষর ডিভাইসের মাধ্যমে তার ইন্টারফেসটি প্রকাশ করতে হবে ।
sherrellbc

4

কিছু ক্ষেত্রে আছে যখন (অন্তর্ভুক্ত / লিনাক্স / fs.h) স্ট্রাক্ট ফাইল_অপশন পদ্ধতি ioctl () এর প্রতিস্থাপনটি কার্নেল ২.6.৩6 এ compat_ioctl () ব্যবহার করে না (উদাহরণস্বরূপ কিছু ডিভাইস ড্রাইভারের জন্য) এবং আনলকড_আইওকটিএল () ব্যবহার করা আবশ্যক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.