ডিফল্ট শিরোনামের তুলনায় ইউজারস্পেস কোডটি সংকলন করতে রিয়েল টাইম কার্নেল শিরোনাম ব্যবহার করা


11

গ্রাহকের প্রয়োজনীয়তা অনুযায়ী, আমি ডিফল্ট কার্নেল দিয়ে CentOS 5.6 ইনস্টল করেছি। এই কার্নেলটি ইনস্টল করার সাথে সাথে টাইম। হোল্ড ফাইলটি অন্তর্ভুক্ত #define CLOCK_MONOTONIC

এখন, কার্নেল-ডেভেল সহ একটি রিয়েল-টাইম কার্নেল ইনস্টল করা হয়েছিল এবং আমাদের কোডটি ব্যবহার করতে চাই CLOCK_MONOTONIC_RAW। এটি কার্নেলের হেডার ফাইলগুলির অংশ হিসাবে উপস্থিত রয়েছে, তবে আমি যখন আমাদের কোডটি সংকলন করি তখন এটি স্ট্যান্ডার্ড ইউজারস্পেসের সাথে এটি সন্ধান করে না।

আমার প্রশ্ন হ'ল, time.hরিয়েল-টাইম কার্নেলের সাথে ডিফল্টরূপে পাওয়া যায়াকে অন্তর্ভুক্ত / প্রতিস্থাপনের সঠিক পদ্ধতিটি কী ? আমার গবেষণা থেকে দেখে মনে হচ্ছে সিমলিঙ্কগুলি খারাপ, সুতরাং এটি কীভাবে পরিচালনা করা উচিত? পদ্ধতি বা প্রক্রিয়া কী? CentOS 6.0 বা 5.7 এ আপগ্রেড করা গ্রাহকের প্রয়োজনীয়তা অনুযায়ী কোনও বিকল্প নয়।


আপনি কি এই মডিউলটি ডিফল্ট CentOS কার্নেলের মধ্যে onোকানোর পরিকল্পনা করছেন?
বাহামাত

উত্তর:


1

হেডার ফাইলগুলি কোথা থেকে আসে সে সম্পর্কে একটি মূল পার্থক্য রয়েছে:

  • <time.h>glibc (যেমন glibc-headersপ্যাকেজ) দ্বারা সরবরাহ করা হয়
  • <linux/time.h> লিনাক্স কার্নেল শিরোনাম দ্বারা সরবরাহ করা হয়।

কার্নেল এবং এর শিরোনামের প্যাকেজগুলি পরিবর্তন করা কোনও প্রভাব ফেলবে না <time.h>। শুধুমাত্র গ্লিবিসি পরিবর্তন করা তা করবে।

আপনার খুঁজে পাওয়া উচিত যে গ্লিবসি'র <time.h>অন্তর্ভুক্ত <bits/time.h>যা উদাহরণস্বরূপ সমাধান /usr/include/x86_64-linux-gnu/bits/time.hকরে এবং সংজ্ঞা দেয় CLOCK_MONOTONIC_RAW। যদি এটি না হয় এবং আপনি এটি আপগ্রেড করতে না পারেন, তবে আপনাকে এই জাতীয় কোড সহ অবলম্বন করতে হবে:

#include <time.h>
#ifndef CLOCK_MONOTONIC_RAW
# define CLOCK_MONOTONIC_RAW 4
#endif

0

আপনার শুধু দরকার #include <linux/time.h>


প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ. আমি লিনাক্স / টাইম.h অবস্থানটি যাচাই করেছি এবং এটিতে "RAW" এর কোনও উল্লেখ নেই। আমি একটি আপডেট হওয়া রিয়েল-টাইম কার্নেলটি চালাচ্ছি, তবে কেবল নতুন কার্নেলের শিরোনামগুলিকে কীভাবে ইউজারস্পেস শিরোলেখ ফাইলগুলিতে "RAW" রেফারেন্স আছে তা কীভাবে স্থানান্তর করতে হবে তা আমার বুঝতে হবে। আমি কি কোন ধারণা তৈরি করছি বা আমার পদ্ধতির সঠিক? সাহায্যের জন্য আবার আপনাকে ধন্যবাদ।
ক্যাবানবয়

ক্যাবানাবয়, আপনি কোথায় খুঁজছেন বা ফাইলটি কোথা থেকে এসেছে তা আমি নিশ্চিত নই, তবে লিনাক্স / টাইম। হ'ল অবশ্যই ক্লক_মোনটোনিক_আরএ সংজ্ঞা দেওয়া উচিত। আপনি রিয়েল-টাইম কার্নেল চালাচ্ছেন কিনা তাও গুরুত্বপূর্ণ নয়; শিরোনাম একই।
psusi

3
@ ক্যাবানাবয়, অপেক্ষা করুন ... আপনি একটি পুরানো ওএস চালাচ্ছেন যা অবশ্যই যুক্ত হওয়ার পরে ২.6.২৮ এর চেয়ে বেশি বয়সী কার্নেলের সাথে পাঠানো হয়েছিল। কীভাবে আপনি নতুন কার্নেল ইনস্টল করেছেন? যদি আপনি এটি উত্স থেকে নিজেই তৈরি করেন তবে আপনার প্রয়োজন make install_headers। যদি আপনি একটি আপডেট করা কার্নেল প্যাকেজ পেয়ে থাকেন তবে আপনার সংশ্লিষ্ট কার্নেল_হেডার প্যাকেজটি আপডেট করতে হবে।
psusi

0

হেডার আপনার বন্টন ইনস্টলসমূহ হয় না কার্নেলের মধ্যে বেশী, তারা sanitzed হয় / "userspaced" সংস্করণ। আপনাকে কার্নেলের উত্সগুলিতে অন্তর্ভুক্ত / লিনাক্স অন্তর্ভুক্ত শিরোনামগুলির একটি অনুলিপি পেতে হবে এবং সেট আপ করতে হবে যাতে তারা / usr / অন্তর্ভুক্ত / লিনাক্সের (জিসিসির জন্য -I পতাকাটি ফ্রব করতে হবে) পছন্দ হিসাবে ব্যবহার করা হয়। এবং কিছু ভুল হয় না তা পরীক্ষা করে দেখুন।


0

আমি নিশ্চিত করব যে আমি নতুন কার্নেলটি নিয়ে আসা শিরোলেখগুলির বিরুদ্ধে তৈরি করছি। CLOCK_MONOTONIC_RAWমধ্যে সংজ্ঞায়িত করা উচিত linux/time.h। প্রথমে আপনি কোন শিরোনাম ব্যবহার করছেন তা অনুসন্ধান করুন এবং এটি ফাইলটিতে কীভাবে সংজ্ঞায়িত করা হয়েছে তা পরীক্ষা করুন। কী ঘটে তা দেখতে আপনি এটি আপনার কোডে (কেবলমাত্র চেক হিসাবে) সংজ্ঞায়িত করতে পারেন।

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