लिनक्स डिव्हाईस ड्रायव्हर मराठीतून :भाग ५:डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.


नमस्कार मित्रानो, मागील भागात आपण बेसिक हेंलो वल्ड चा प्रोग्राम पाहिलात,इतक्या सोप्या पद्धतीने डिव्हाईस ड्रायव्हर लिहायला तुम्हाला नक्कीच मजा आली असेलच.

या भागात आपण थोडे पुढे जाऊन वेगवेगळे बेसिक प्रोग्राम्स शिकणार आहोत.

समजा तुम्हाला तुमच्या डिव्हाईस ड्रायव्हरला काही पँरामिटर द्यायचे असतील तर ते कसे द्यायचे ते आपण या अंकात पाहूया.

पँरामिटर पासिंग प्रोग्रम :

प्रथम आपण आपल्या मोड्युलला फक्त एक पँरामिटर कसे पाठवायचे ते पाहूया.

पुढे आपणस रन करण्यासाठी लागणारा प्रोग्राम दिलेला आहे.

#include<linux/init.h>#include#includeMODULE_LICENSE(“GPL”);int paramTest;module_param(paramTest, int,S_IRUSR|S_IWUSR);static int param_init(void)

{

printk(KERN_ALERT “Showing the parameter demo”);

printk(KERN_ALERT “VALUE OF PARAMTEST IS: %d”,paramTest);

return 0;

}

static void param_exit(void)

{

printk(KERN_ALERT “Exiting the parameter demo”);

}

module_init(param_init);

module_exit(param_exit);

[Ref: Linux For You magazine]

वरील प्रोग्रॅम मध्ये मोड्युल पँरामिटर शी निगडीत फंक्शन्स चा लाभ घेण्यासाठी moduleparam हि फाईल हेडर मध्ये इन्क्लुड केलेली आहे.

module_param(paraameter name, data type ,permission);

हा फॉरमेट कर्नेल ला पँरामिटरचे नाव ,त्याचा डाटा टाईप आणि त्यास दिल्या जाणाऱ्या परमिशन दर्शविते.

परमिशन चे प्रकार पडतात: S_IWUSR,S_IRUSR,S_IXUSR,S_IRGRP,S_WGRP

  • यात S_I हे हेडर सर्वाना कॉमन आहे.
  • R =रीड वाचणे ,W =राईट लिहिणे ,X= एक्झीक्युट करणे.
  • USR=युजर ,GRP=ग्रुप
  • यात OR म्हणजे | ऑर ऑपरेशन करून एका पेक्षा जास्त परमिशन सेट करता येतात.

आपण आपला प्रोग्राम टेक्स्ट एडिटर मधून लिहला असता तो पुढीलप्रमाणे दिसतो.

पँरामिटर पासिंग प्रोग्रम

पँरामिटर पासिंग प्रोग्रम

हा प्रोग्राम रन करण्यासाठी पुढील पायऱ्या आहेत.

[आपण मागील भागातील मेक फाईल कशी करावी या भागाचा आधार घेऊ शकता]

आपल्या मेक फाईल मध्ये hello.o च्या जागी आपल्या वरील फाईल चे नाव [parameter.o] देणे आणि फाईल सेव्ह करणे.

मेक फाईल मधील बदल

मेक फाईल मधील बदल

नंतर make हि कमांड वापरून फाईल कंपाईल करणे.

आता हे मोड्युल कर्नेल मध्ये टाकण्यासाठी :sudo insmod parameter.ko paramTest=2

हि कमांड वापरणे यात आपण paramTest यास हि संख्या पँरामिटर म्हणून पाठवली.

आता आपले आउटपुट पाहण्यासाठी dmesg कमांड वापरणे.

तेंव्हा आपणास “Value of paramTest=2 “असे  आउटपुट मिळेल.

आउटपुट विंडो

आउटपुट विंडो

पँरामिटरचा अँरे :

आता एका पेक्षा जास्त पँरामिटर पास करण्यासाठी पँरामिटरचा अँरे पाठवावा लागतो.

त्यासाठी पुढील प्रोग्रम पहा:

#include<linux/init.h>

#include<linux/module.h>

#include<linux/moduleparam.h>

MODULE_LICENSE(“GPL”);

int paramArray[3];

module_param_array(paramArray, int,NULL, S_IWUSR|S_IRUSR);

static int array_init(void)

{

printk(“Into the parameter Array demo”);

printk(“Array elements are :%d\t%d\t%d”,paramArray[0],paramArray[1], paramArray[2]);

return 0;

}

static void array_exit(void)

{

printk(“Exiting the array parameter demo”);

}

module_init(array_init);

module_exit(array_exit);

यात int चा ३ इतकी साईझ असलेला अँरे वापरला आहे.

अँरे हे पँरामिटर म्हणून वापरण्यासाठी module_param() च्या जागी module_param_array() हे फंक्शन वापरले आहे.

यात इतर पँरामिटर सोबत counter असतो हा किती पँरामिटर पास केले याची नोंद ठेवतो आपलं प्रोग्राम मध्ये ती सुविधा वापरली नाही आहे म्हणून आपण तो असा ठेवला आहे.

पँरामिटरचा अँरे पासिंगचा प्रोग्राम

पँरामिटरचा अँरे पासिंगचा प्रोग्राम

आपण sudo insmod parameterArray.ko paramArray=1,2,3 असे पँरामिटर अँरे सोबत

मोड्युल लोड करतो.

तेंव्हा आपणस dmesg केल्यावर या तीन संख्या आउटपुट स्क्रीनवर दिसतील.

 

पँरामिटर अँरे पासिंग प्रोग्रम आउटपुट विंडो
पँरामिटर अँरे पासिंग प्रोग्रम आउटपुट विंडो

प्रोसेस संबन्धित प्रोग्रम.

आपल्या संगणकात अनेक प्रोसेस चालू असतात आपल्याला पुढील प्रोग्राम लिहताना कोणती प्रोसेस चालू आहे कोणती प्रोसेस बंद आहे याची माहिती प्रोसेस आय डी हि माहिती सिस्टीम कडून घावी लागते अशा वेळी आपणास पुढील प्रोसेस संबंधित प्रोग्राम नक्कीच उपयोगात येईल.

#include<linux/init.h>

#include<linux/module.h>

#include<linux/sched.h>

MODULE_LICENSE(“GPL”);

static int test_init(void)

{

struct task_struct *task;

for_each_process(task)

{

printk(“process Name :%s\t PID:%d\t Process State:%ld\n”,task->comm,task->pid, task->state);

}

return 0;

}

static void test_exit(void)

{

printk(KERN_INFO “Clearing up.\n”);

}

module_init(test_init);

module_exit(test_exit);

 

 

 

 

 

 

 

 

 

 

 

लिनक्स मध्ये प्रत्येक प्रोसेसला काही गोष्टी जोडल्या गेलेल्या असतात जसे कि प्रोसेसचा आय डी नंबर,प्रोसेस ची चालू स्थिती फ्लँग इत्यादी.

प्रोसेस संबधित प्रोग्रम लिहिताना आपणस sched.h हि फाईल हेडर मध्ये इन्क्लुड करावी लागते.

आपणस task_struct या स्ट्रक्चर चा पोईंटर करून याच्या आधारे आपण भरपूर माहिती मिळवू शकतो.

प्रोसेसची माहिती मिळवणारा प्रोग्रम.

प्रोसेसची माहिती मिळवणारा प्रोग्रम.

आपण वरील प्रोग्राम मध्ये आपल्या सिस्टीम मधील प्रोसेसचा आय डी नंबर,प्रोसेस ची चालू स्थिती फ्लँग इत्यादी माहिती पाहू.

यात task नावाचा पोईंटर तयार करण्यात आलेला असून आपण आपल्या सिस्टीम मधील प्रोसेस या स्ट्रक्चर पोईंटरचा वापर करून डिस्प्ले करणार आहोत.

हा प्रोग्राम रन केल्यानंतर आपणास प्रोसेस ची लिस्ट दिसेल.

अशा रीतीने आपण आपल्या सिस्टीम मधील प्रोसेस बद्दल पूर्णपणे माहिती घेवू शकता.आपणस आउटपुट विंडो खालीलप्रमाणे दिसेल.

आउटपुट :सिस्टीममधील प्रोसेस

आउटपुट :सिस्टीममधील प्रोसेस

या प्रोसेस आय डी आपण इंटरनेटवर सर्च कारण आपणस हव्या त्या प्रोसेस बद्दल अधिक माहिती घेवू शकतो.तसेच कोणती प्रोसेस कोणते अप्लिकेशन चालू आहे त्याची स्टेट काय हि सुद्धा माहिती मिळते.

हि माहिती आपण प्रोग्राम डेव्हलपमेंट करताना काही बाबी व काही प्रोसेस चालू आहेत का नाहीत या गोष्टी चेक करण्यासाठी वरील प्रोग्राम चा फायदा होतो.हे बेसिक प्रोग्राम पुढील प्रश्नांची उकल शोधण्याचे साधन आहे.या प्रोग्राम चा आपलास दिलेले टूल आहे असा वापर करावा.

अशा रीतीने आपण पँरामिटर पासिंग आणि प्रोसेसशी निगडीत प्रोग्राम कसे रन करावे ते पाहिलेत.

आपण कँरेक्टर डिव्हाईस ड्रायव्हरची माहिती पुढे घेणार आहोत तर हे डिव्हाईस ड्रायव्हर म्हणजे काय ते कसे काम करतात त्यांचे प्रकार कोणते हे प्रश्न तुम्हाला पडले असतीलच तर भेटूया पुढील अंकात याच प्रश्नांची उत्तरे शोधण्यासाठी…. 

आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)

तुमचा अभिप्राय नोंदवा

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / बदल )

Twitter picture

You are commenting using your Twitter account. Log Out / बदल )

Facebook photo

You are commenting using your Facebook account. Log Out / बदल )

Google+ photo

You are commenting using your Google+ account. Log Out / बदल )

Connecting to %s