स प ण लन स ड ह ईस य हर मर ठ त न.
|
|
- Tobias Per-Olof Berglund
- för 5 år sedan
- Visningar:
Transkript
1 BOLMJ Publications स प ण लन स ड ह ईस य हर मर ठ त न. स य भ ष त म ग य क सह. लन स इ ट ल शन प स न ड ह ईस य हर ल ह य पय त सव म हत स य भ ष त आ ण ड ह ईस य हर क स ट व मच सख ल म हत म य आउटप ट छ य च सह.. ल खक:मह श स भ ज ज धव M.S. Software Systems,BITS Pilani. ID:
2 अन म णक : वभ ग प न न बर लन स मर ठ त न :भ ग १: लन सच ओळख आ ण उब ट इ ट ल शन. २ लन स मर ठ त न :भ ग २: लन सच ज न आ ण श न ट म नलच ओळख. ७ लन स मर ठ त न :भ ग ३: कन ल आ ण ड ह ईस य हर च ओळख. १२ लन स ड ह ईस य हर मर ठ त न :भ ग ४: ड ह ईस य हरच ह ल व ड २२ म. लन स ड ह ईस य हर मर ठ त न :भ ग ५: ड ह ईस य हरच प र मटर २९ प स ग म, स स स ब धत म. लन स ड ह ईस य हर मर ठ त न :भ ग ६ :क र टर ड ह ईस य हर २९ ब सक लन स ड ह ईस य हर मर ठ त न :भ ग ७ :क र टर ड ह ईस य हर ३३ फ ईल ऑपर श स लन स ड ह ईस य हर मर ठ त न :भ ग ८:प. स. आय. ड ह ईस य हर ४० ब सक. लन स ड ह ईस य हर मर ठ त न :भ ग ९:य. एस. ब. ड ह ईस य हर ४७ ब सक क स ट. लन स ड ह ईस य हर मर ठ त न :भ ग १०: य. एस. ब. ड ह ईस ५९ य हर फ ईल ऑपर श स. लन स ड ह ईस य हर मर ठ त न :भ ग ११: स प ण य. एस. ब. ड ह ईस ६८ य हर म. लन स ड ह ईस य हर मर ठ त न :भ ग १२: ड ह ईस य हर ल क: ८१ स म फ स, य ट स ल क, पन ल क. लन स ड ह ईस य हर मर ठ त न :भ ग १३: ड ल ड ह ईस य हर ८३ ब सक. लन स ड ह ईस य हर मर ठ त न :भ ग १४: ड ह ईस य हर ड बगर ९० ब सक. स दभ ९१ : मह श ज धव : mahesh7197@gmail.com : Page 1
3 लन स मर ठ त न :भ ग १: लन सच ओळख आ ण उब ट इ ट ल शन. आपण सव जण व ड ज ऑपर ट ग स ट मश एकदम प रचय च आह त, व ड ज बर बरच आणख एक ऑपर ट ग स ट म उदय स आल ह त तच न व य न स य च ऑपर ट ग स ट म च प ढ लनस [Linus Torvalds]य न लन स ऑपर ट ग स ट म म य प तर क ल, लन स रल ज झ ल त 5 ऑ ट बर 1991 ल आ ण त अ तशय स झ ल आजह स ह स प स न त लह न ड ह ईस म य आप य नकळत आपण लन स व पर त असत.आज आप य प रचय च उब ट,र ड ह ट,फ ड र इ य द ऑपर ट ग स ट म च ब स ह लन स ह च आह. लन स क य नट च जगभर त ल ड हलपर य य स स क ड म य नवनव न च ज क न लन स च क ड सम करत असत त. तर लन स ऑपर ट ग स ट म आ ण य च इ टर स शक य स ठ आपण स क य य यल हव... व ड ज व परल आह न त ह??...मग ब स!!...म आह त म य बर बर,आपण मळ न ज ऊय य लन स य सफर वर...मग तय र आह त न लन स शक यल... [ लन स य घर त प हच य स ठ प ढ ल ल क वर टचक म र. लन स मर ठ त न आपण य अ क त लन स ऑपर ट ग स ट म कश इ ट ल कर यच त प हण र आह त. आपण व ड ज व परण र अस ल तर उब ट ह व ड ज त लन स व स करण य ल क स ठ म त आह य त य जर इ टरफ स व ड ज स रख आह पण य च ब स लन स आह... य लन स च अज न एक मज हणज तच स स क ड ओप न आह आ ण आपण पण य त आपल क ह तर कड क न क ह भर घ ल शकत..आ ण आपल प शल ऑपर ट ग स ट म : मह श ज धव : mahesh7197@gmail.com : Page 2
4 तय र क शकत... हणज म य स र य कड ख र ल क न पव ण च...तस ह फ र स प न ह..आ ण य त क य वर अवघड पण न ह फ त शक यच तय र प हज... चल मग...आपण आपल स ट म व ड ज म य ब ट कर मग त ए स प अस व व ड ज ७. स ट म च ल झ य वर प ढ ल उब ट य ल कवर ज. आपण आपल आह त ऑपर ट ग स ट म ठ व न य च बर बर उब ट पण इ ट ल क शकत य म ळ आपल ड ट पण ज ण र न ह आ ण आह य स ट म वर आपण लन स ए ज य क शकत... य म ळ अ जब त घ ब नक.. बनध त य कर... य स ठ उब ट म य व ड ज इ ट लर दल ल आह ज न म ल इ ट ल शन स रख आप य ऑपर ट ग स ट म स बत नव न लन स इ ट ल क न द त. य स ठ उब ट य स ईटवर व ड ज इ ट लर वर टचक म र. य न तर आपण स ह व त हज न प ब स मध न सल ट क न ग ट इ ट लर वर टचक म र. : मह श ज धव : mahesh7197@gmail.com : Page 3
5 हज न प ब स य त LST ह ट बल हज न असत य ल उब ट कड न ल ग ट ईम सप ट दल ज त.] न तर न ट ज ऊन Not now, take me to the download ल टचक म र व..[तस त ह दलद र अस ल तर उब ट ऑग न यझ शन ल द णग पण द ऊ शकत ].न तर आपणस प प अप म स ज य ईल त स ह कर व रन कर. मग उब ट इ त ल ह य स स रव त ह ईल. य दर य न आपणस य जर न म प सवड स ह कर व ल ग ल.आ ण उब ट स ठ कत ज ग य यच ह बन स ग व ल ग ल. य स ठ म हत ख ल ल व ड त भर व. य व ड वर क क कर क झ ल आप आप उब ट इ ट ल ह ईल आप य स ट म वर... ३-४ व ळ स ट म र ट ट ह ईल आ ण न तर त ल ग इन व ड ल य ऊन थ ब ल. मग प सवड द ऊन स ट म उब ट म य घ स..एक मध र आव ज य ईल आ ण आपण लन स म य प हचल अस ल...इतक स प आह सगळ.. : मह श ज धव : mahesh7197@gmail.com : Page 4
6 आत उब ट आ ण व ड ज म य आलट नप लट न फर य य ट स: स ट म र ट ट क य वर आपणस प ढ ल म ण उब ट क व ड ज अस द न पय य दसत ल. आपणस य द ह मध ल एक पय य नवड न क ण य ह ऑपर ट ग स ट म म य परत ज त य ईल. जस व ड ज ल ख ल य ब ज स ट क ब र असत तस उब ट य वर य ब ज स ट क ब र असत. य ट क ब र य उज य ब ज स आपणस स ट म र ट ट क व शट ड ऊन कर य च पय य उपल द असत त. व ड ज य य क व ड म य व ड ज म ठ,लह न क व ब द कर य स ठ व ड य उज य ब ज स पय य असत त पण उब ट म य त व ड य ड य ब ज स असत त. उब ट व ड य ड य ब ज स अ लक शन वषयक पय य असत त.वर ल क प य त ल बटन ह व ड ज य ट ट म न स रख क म करत य त आपणस ह व त अ लक शन श ध न आपण त उघड शकत. हळ हळ व पर य स स व त क य वर आपणस उब ट एकदम जम नह ज ईल...आ ण आ ण न क च मज य ईल क ह तर ट ऑपर ट ग व पर त अस य च फ ल तर न व व द.. : मह श ज धव : mahesh7197@gmail.com : Page 5
7 लन स य क ह मह व य ल स: 1] :य ल क वर लन सच स स दल ल असत. य य वरत लन स च ट बल हज न दल ल अस ल त पण ड ऊनल ड क स न आप य स ट म वर स ह क शकत.[उद :3.8.3 ह आ त च ट बल हज न आह त दर व ळ अपड ट ह त असत.] २] : ह लन स च ऑ फ शयल म ल ग ल ट आह.य त आपण भ ग घ व शकत. आ ण हव त आध य म स मध न श ध शकत. य भ ग त क ह श क आ य स व क ठ अड य स न क वच र MJ आह च त म य मदत ल... म झ ह य ग कस व टल ह पण न क स ग... : मह श ज धव : mahesh7197@gmail.com : Page 6
8 लन स मर ठ त न :भ ग २: लन सच ज न आ ण श न ट म नलच ओळख. लन स य नव न आव त न य जर इ टरफ स च स वध आल असल तर लन स च स रव त प स नच ओळख आ ण सव त मह व च फचर हणज ट म नल व ड.य व ड व र आपण स पण स ट म क ल क शकत. आप य व ड ज म य जस ड स कम ड व ड असत तस च उब ट म य ह ट म नल व ड असत. य ल खम ल अ तग त म आपणस लन सच य क व पर कस कर यच य वर भर द ण र आह त. लन स इ टन स ह स य व स य भ ष त आपण स कस समज व न द त य ईल य च म कट न य न कर त आह. म ग ल भ ग त आपण उब ट इ ट ल कस कर यच त प हल आ त आपण उब ट म य आपल स ट म ब ट कर. ट म नल व ड ल च कर य स ठ उब ट य ड य क प य त असल य उब ट सच बटन वर क क कर.आ ण Terminal अस ट ईप कर व मग आपणस ख ल ट म नल व ड दस ल त सल ट क न आपण ट म नल उघड शकत. आपण एक च व ळ अन क ट म न स उघड न य य क वर अगद नर नर ळ क म क शकत ह ट म न स व ड च आणख एक व श ट! आणख एक ग ट हणज लन स च क णत ह ऑपर ट ग स टम य तच य जर इ टरफ स व गळ अस शकत पण श ल /ट म नल श यत स मच असत. य म ळ एकद क ट म नल म य शरल क मग त क णत पण लन स च ऑपर ट ग स टम असत त स रख च भ सत. : मह श ज धव : mahesh7197@gmail.com : Page 7
9 स टम म य क ह इन ट ल शन कर यच अस य स व इतर क ह च ज स कर यच अस य स आपण स स टमच अ ड म न टर अस व ल गत य स ठ आपणस ट म नलवर ट अक ट तय र क न य व र ल ग इन कर व ल गत ह ब सक ट प प हल आपण शक य. ट अक ऊ ट तय र करण. १) थम ट म नल व ड ओप न कर. २) व ड म य आपण य न व न ल ग इन क ल अस ल त न व दस ल. ३)न तर sudo passwd root ह कम ड व पर. ४) य न तर आप य स ट मच प सवड वच र य म ण द नद ट क. ५)न तर su root ह कम ड व पर. ६)आ ण ट य अक टस ठ नव प सवड (ex:root) अस द ण. ७)मग आपण ट य अक टवर ल ग इन झ ल ल असत. ८)त आपण स एनटर बटन द ब य वर स रव त ल ज थ आपल य जर न म ह त त थ ट ह न व आल ल दस ल. ९)प ढ य व ळ ल परत ट म य ज यच अस य स फ त su root आ ण प सवड दल क आपण ट म य ल ग एन ह त. अ धक म हत स ठ ख ल ल छ य चत पह. आत आपण स ज झ ल आह त ट म नल च प ण त व पर कर य स ठ... : मह श ज धव : mahesh7197@gmail.com : Page 8
10 ट म नल य कम स : ख ल ल श ल कम स लन स व य न स स ठ स मच आह त. ls : ह कम ड च ल डर टर मध ल फ ईल आ ण फ डर द खवत. pwd :कम ड च ल डर टर क णत य डर टर च ल क शन द खवत. ps : ह कम ड स गणक त ल च ल स स द खवत. cat : ह कम ड च ल फ ईल मध ल क ट ट द खवत. cp : ह कम ड फ ईल क प स ठ व परत त य त cp ज न फ ईल नव न फ ईल अस व परत त. mv : ह कम ड फ ईल च न व बदल य स ठ व परत त. mv ज न न व नव न न व. rm: ह कम ड फ ईल डल ट क व रम हल स ठ व परत त. echo : ह कम ड अ य म ट प ठव य स ठ व परत त. grep :एख य फ ईल मध न व श ट श द असण र ओळ श धण. grep श द फ ईलच न व sort :एख द फ ईल व च न य त ल ड ट ओळ न ल वल ज त आ ण त परत फ ईल म य लहल ज त. mkdir :नव न डर टर तय र करण. exit :ट म नल ब द करण. [Ref:Unix Made Easy:Tata McGrow-hill:Muster] हच अल एड टर: ट म नल म य म ल ह य स ठ हच अल एड टर हणज च VI ए डटर व परत त. य च च स ध रत हज न VIM ह पण लन स न दल ल आह फ त य त क ड नर नर य कलर क ड म य दसत ब क VIM ह अ तग त vi एड टरच व पर त असत. : मह श ज धव : mahesh7197@gmail.com : Page 9
11 vi एड टर ह एकतर कम ड म ड म य क व इ स ट म ड म य च लत हणज एक तर क ड लह शकत न ह तर क ड म य बदल क शकत पण द ह एक च व ळ न ह. कम ड म ड म य एड टर र ड ओ ल म ड म य च लत. थम vi फ ईल च न व अश कम ड द ऊन आपण फ ईल एड टर म ड म य उघड शकत. न तर i बटन द ब न मग आपण य एड टर म य लह शकत. लह न झ यवर Esc बटन द ब य वर एड टर र ड ओ ल म ड म य ज त. कस ल हलव य स ठ h, j,k,l ह बटण व परत त. एड टर य फ ईल मध न एख द श द श ध यच अस य स /श द अस श धल ज त.आ ण प ढच श द प ह य स ठ परत n बटन द ब न न ट ज त य त. एड टर मध न ब ह र पड य स ठ Ctrl+Q बटन द व व आ ण न तर q! कम ड व पर व. आ ण फ ईल स ह क न ब ह र पड य स ठ wq! ह कम ड व पर व. एख द ओळ डल ट कर य स ठ dd ह कम ड व पर व. एख द ओळ जर च क न डल ट झ ल अस ल तर तल परत आण य स ठ u कम ड व पर व. एख द अ र डल ट कर य स ठ कम ड म ड म य ज ऊन य अ र वर कस लन ऊन x बटन द ब व. एख य श द य प ढ न च ल क रच अस य स य श द वर ज ऊन a ह बटन द ब व मग य प ढ ल अ र वर कस ल श ट ह त. एख य व श ट ओळ ल ज य स ठ :ओळ न बर [:११२]आ ण ए टर ह कम ड व परत त. एख द अ र र ल स कर य स ठ य अ र वर ज ऊन r बटन द ब व आ ण न तर नव न अ र द ब व त अ र र ल स ह ईल. आपण य अ क त आपणस म ग स ठ ल गण य ब सक कम ड प ह य, य च व पर आपण स vi एड टर म य म ल हत न न क ह ईल. : मह श ज धव : mahesh7197@gmail.com : Page 10
12 य शव य ब य च कम ड आह त पण आपण जत य ल गत ल तत य च कम ड शकल आह त. अ धक कम ड ज ण न घ य स ठ प ढ ल ल क वर टचक म र. ट स: ट म नल म य आध व परल ल कम ड परत प ह य स ठ व व पर य स ठ अप-एर - क व पर व. तस च एख य फ ईल च न व ट ईप कर य ऐवज य फ ईलच स रव त च क ह अ य र ट ईप क न tab बटन द ब व मग फ ईल च प ढच न व आप आप य ईल. अश त ह न आपण ट म नल कम ड आ ण vi एड टर य कम स प ह य,प ढ य अ क त आपण: कन ल आ ण ड ह ईस य हर च ओळख क न घ ण र आह त. : मह श ज धव : mahesh7197@gmail.com : Page 11
13 लन स मर ठ त न :भ ग ३: कन ल आ ण ड ह ईस य हरच ओळख. नम क र,य भ ग त आपण लन स कन ल आ ण ड ह ईस य हर य च ओळख क न घ ण र आह त, य च आपण स ड ह ईस य हर म तय र करत न फ र फ यद ह ईल. कन ल ह लन स ऑपर ट ग स ट मच ग भ आह. लन स क य नट सतत य कन ल ल स ध रत असत त व कन ल च नवनव न हज न रल ज करत असत त. लन सच कन ल ह c आ ण assembly य द न भ ष त ल हल आह. कन ल ह कन ल प स म य रन ह त असत. कन ल ह स टम च ह ड व अर आ ण य जर च अ लक श स य य त ल मडलव अर च क म करत. कन लच अस ल क ड ह ह ड व अर वर अवल ब न असत ब क स क ड ह फ र म ठ आह त ह ड व अर वर अवल ब न नसत. कन ल ह य जर कड न ड ट घ ऊन त स सर, म मर इतर ड ह ईस य य श क य नक शन करत असत. लन स कन ल लन स शक य च खर मज य त ज ह आपण स ट म इ टरन स शकत. लन स य जस जस आत घ सत ज त तसतश क ल सट व ढत आ ण ततक च त शकण र म चक र ह त. आपण य अ क त लन स य ग य त न क क य दडल ल आह त प ह य. : मह श ज धव : mahesh7197@gmail.com : Page 12
14 लन स कन ल : य न स स ट म ह अन क स स एकच व ळ ह त ळत असत य च ब स हणज ऑपर ट ग स ट म च कन ल,कन ल ह ऑपर ट ग स ट मच प वर, म मर, स स य मह व य ग ट स भ ळण र म ठ ब स क ड असत.कन ल ऑपर ट ग स ट म म य ख ल ल म ण व गव ग य भ मक बज वत. स स म न जम ट:अन क स स तय र करण, य स सरल प ठव न श य ल न स र च लवण आ ण न तर स स ब द करण ह कन लच स स म न जम टच क म. म मर म न जम ट : स स ल म मर मळव न द ण क म झ यवर त म कळ करण आ ण उपल द म मर च हच अल अ सव प न नय जन करण. फ ईल स ट म: लन स च ब स हणज य च फ ईल स ट म. लन स म य सगळ क ह फ ईल अस च म नल ज त हणज अगद फ डर हणज पण फ ईल च असत आ ण स ट म ल ज डल ल क णत ह ड ह ईस ह ह ऑपर ट ग स ट म स ठ फ ईलच असत... ह आह न म त ग ट.. लन स कन ल य फ ईल स ट मच चरल ल यर ह ड व अर य वर तय र करत. [अश अन क फ ईल स ट म आह त लन स म य,उद :FATफ ईल स ट म] ड ह ईस क ल: स ट म ल ल वल य य क ड ह ईस क म क न घ य स ठ क ह ठर वक क ड र न क ल ज त. य ल ड ह ईस य हर हणत त कन ल म य स ट म च ब सक ड ह ईस य हर इन ब ट असत त.उद : क-ब ड च ड ह ईस य हर. न टव क ग:न टव क ग च प क स तय र करण प ठवण आल ल प क स ओळखण आ ण य च व पर करण य स र य न टव क ग य ग ट कन ल ह त ळत. [Ref:Linux device driver :orelly:hartman] कन ल प स आ ण य जर प स: य जर प स:य जरच म,shell क व इतर अ लक श स ह य जर प स च भ ग आह त.य अ लक श स न स ह ड व अर बर बर म हत च द व णघ व ण क य च असत पण त ड यर ट क शकत न ह त य स ठ य न कन ल च मदत घ व ल गत. कन ल प स:कन ल ह ह ड व अर बर बर ड यर ट स भ षण कर त असत त.य त ड ह ईस य हर आ ण य च फ श स, स ट म क स ह य जरल ह ड व अर श स ब धत क म कर य स मदत : मह श ज धव : mahesh7197@gmail.com : Page 13
15 करत त. य व र र ड, र ईट ऑपर श स करत य त त.य म ड म य य जर ल प ण अ धक र असत त. ड ह ईस य हरह अ लक श स आ ण ह ड व अर य य त ल द व हण न क म करत. य जर प स [अ लक श स] कन ल प स [ ड ह ईस य हर] १ ह ड व अर २ ड ह ईस य हर हणज क य? आप य स टमल ड ह ईस ज ड य वर त ड ह ईस कस क म कर व य स ठ स टमम य य ड ह ईसस ठ च त ड ह ईस कस क म कर व ह ठरव य स ठ क ह क ड ल हल ल असत य स ड ह ईस य हर हणत त.जस आपण आप य स टमल क ह नव न ड ह ईस ज डल क आप य ल य ड ह ईस च य हर इ ट ल कर व ल गत य न तरच त ड ह ईस क म कर यल स रव त करत. क ह य हर स टम म य च असत त आपण ड ह ईस ज ड य वर त ल ड ह ऊन क म क ल गत त. जस आपण प न ई ह आप य क य टर ल ज डल क आपल क य टर य स ठ च य हर आप आप इ ट लकरत मग आपल प न ई ह च ल ल गत. लन सच एक म त फचर हणज ऑपर ट ग स ट म च ल असत न आपण ड ह ईस य हर ल ड क व अन ल ड क शकत य स ठ स ट म र ट ट कर यच गरज न ह.य च लन स य स वध म ळ लन स स ह स म य व परत त. ड ह ईस य हर य मल कन ल य भ ष त म य स अस ह हणत त. य क म य ल ह य ल दल य ड ह ईस स ब धत क मक ज प हत. ड ह ईस य हरच क र टर य हर [ब ईट ड ट सफर], ल क य हर[ ट र ज ड ह ईस],न टवक य हर[प क स ड ट सफर] अस क र पडत त. : मह श ज धव : mahesh7197@gmail.com : Page 14
16 आप य ट म नल व ड म य ज ऊन ls /usr/src/linux/drivers/ ह कम ड द य स आपण स आप य लन स स ट म मध ल ड ह ईस य हर प ह यल मळत ल. म य स कम स: म य स ह.ko [कन ल ऑ ज ट ]फ ईल य प त असत त.ख ल ल कम स ट म नलवर व प न आपण आपण स हव त म य ल कन ल म य घ ल क व कन ल मध न क ढ शकत. lsmod : ह कम ड आप य स गणक त ल म य स हणज च ड ह ईस य हर च ल ट द खवत. [न द :प ढ ल कम ड म य आपण स कम ड बर बर फ ईल च न व य व ल गत ]. insmod म य ल फ ईल : ह कम ड व प न आपण आपणस हव त म य ल कन ल म य घ ल शकत. modprobe म य ल फ ईल : ह कम ड व पर य स,आपणस हव त म य ल व य म य लश नगड त अस म य स आप आप कन ल म य ज त त. rmmod म य ल फ ईल : ह कम ड व प न आपण आपणस हव त म य ल कन ल मध न ब ह र क ढ शकत. अश त ह न आपण य भ ग त कन ल आ ण ड ह ईस य हर य च ओळख क न घ तल आह.आपणस ड ह ईस य हर म लहण च ल कर य आध ह ब सक म हत समजण फ र मह व च आह. प ढ ल अ क त आपण ड ह ईस य हरच ह ल व ड म कस लह यच त प हण र आह त. : मह श ज धव : mahesh7197@gmail.com : Page 15
17 लन स ड ह ईस य हर मर ठ त न :भ ग ४: ड ह ईस य हरच ह ल व ड म. आपण क णत ह नव न म ग भ ष शकत न स रव त ह ल व ड म य ब सक म प स न करत.य भ ग तह आपण लन स ड ह ईस य हरच ह ल व ड म म ल हण र आह त. य भ ग त आपण म गल ल गण य सव ब सक ग ट शकण र आह त य म ळ ह भ ग फ र मह व च आह.प ढच म करत न ब य च व ळ आपणस य भ ग च र फर स दल ल आह. ड ह ईस य हर म ह ल य र स रख क म करत य च अथ अस क अ लक शन य य त ल फ श स रन करत.ह म c य भ ष त ल हल ज त पण य य त C म य व परत तस main() ह फ शन नसत.ह म कन ल व र ल क आ ण ल क क ल ज त य स ठ य स क प ईल करण गरज च असत. लन स ड ह ईस य हर म य क टर आ ण ड टर असत त.म य ल ल ड क य वर क टर क ल क ल ज त. आ ण rmmod व र म य ल क ढ न ट क य स ड टर क ल क ल ज त य हर म य म य ल init,exit फ श स ह क म प हत त. लन स ड ह ईस य हर म लह य स स रव त कर य अग दर आपण प ढ ल ग ट व स ट ग करण मह व च आह. आप य लन स क य टरमध ल ट म नल व ड ओप न कर. ट अक ट न ल ग इन कर [su root]. [ ट अक ट कस तय र कर व ह ज ण न घ य स ठ य थ टचक म र.] न तर whoami [म क ण ] ह कम ड व प न आपण ट अक ट मध च आह त क य च ख क न घ ण. न तर आपण ह म म य एक फ डर तय र कर व ज थ म ट अर करत य त ल. आ ण य फ डर म य ज व.[cd /home/mj/]म MJ न व च फ डर तय र क न य त क म करण र आह. आपण क ण य फ डर म य आह ह ज ण न घ य स ठ pwd ह कम ड व पर व हणज आपल च ल डर टर क णत त समज ल. : मह श ज धव : mahesh7197@gmail.com : Page 16
18 आपण vi एड टर व प न आपल म लहण र आह त तर vi hello.c ह कम ड द य वर अग दर जर hello.c फ ईल अस ल तर त ओप न ह ईल अ यथ नव न hello.c फ ईल तय र ह ईल.आ ण आपण हच अल एड टर य [vi] म य ज ऊ. vi म य म लह य स ठ आध i बटन द ब व तरच vi एड टर इ सट म डम य य त आ ण आपण vi एड टरम य लह शकत. य न तर ख ल ल म प ट कर व क व ट ईप कर व. क व ड यर ट लन स य ट ट एड टर म य ज ऊन क ड क प प ट क न त फ ईल.c ए सट शन द ऊन स ह कर. ह ल व ड म: #include<linux/init.h> #include<linux/module.h> MODULE_LICENSE("GPL"); static int hello_init(void) printk(kern_alert "Hello world"); return 0; static void hello_exit(void) printk(kern_alert "Goodby"); module_init(hello_init); module_exit(hello_exit); आपण वर ल म य क डच प ट करण ओळ न पह त ज ऊय. म य स रव त ल क ह ह डर फ ईल इ ल ड कर य ल गत त. य इ ल ड फ ई सच आप य स गणक त ल ल क शन प ह य स ठ /root/inclue/linux य ल क शन वर ज आपल स ड ट एच [.h]फ ई स च स ठ मळ ल. 1) init.h ह फ ईल init ह स स ट ट कर य स ठ इ ल ड क ल ज त. जवळप स सव च म म य ह फ ईल इ ल ड कर व ल गत.य ह डर फ ईलम य स ट म ब ट आ ण म य स कन ल म य ट क य स ठ व क ढ य स ठ य च उपय ग ह त.init आ ण exit ह फ श स य च फ ईल म य डफ ईन क ल आह त. : मह श ज धव : mahesh7197@gmail.com : Page 17
19 2) आपण जर ड ह ईस य हर लह त अस तर module.h फ ईल इ ल ड करण ब धनक र आह.य फ ईल म य म य सश नगड त फ श स उपल द असत त. 3) MODULE_LICENSE ह ओळ आपण GPL ह ल यस स व परण र आह त स गत. GPL च अथ न प लक ल यस स [GNU Public License]अस ह त. 4) ज ह म य ल कन ल म य ल ड ह त त ह hello_init ह फ शन क म करत.य फ शनल इ नशल यझ फ शन हणत त.जर ह फ शन फ ल झ ल तर त एरर क ड रटन करत हण न ह फ शन कध च void नसत. 5) printk फ शन :जस आपण c म ग म य printf व परत ह त तस लन स कन ल म ग म य prink()ह ट ग स ठ फ शन व परत त.य फ शनम ळ ग ड ट ह कन ल य ल ग बफर म य स ठवल ज त. prink म य अज न एक स वध असत त हणज म स जच मह व ठरवण य स ठ म स ज य स रव त ल क ह ट ग ल वत त. printk फ शन म य व गव ग य आठ loglevel असत त. य kernel.h य फ ईल म य कन ल म य इन ब ट असत त. printk फ शन य आठ ल ग ल हल ख ल ल म ण : KERN_EMERG : ह ल हल म स ज ज ह इमज स अस ल त ह व परत त.उद : स स ब द ह ण. KERN_ALERT: ल व ध न घ य स ठ. KERN_ERR :च क दश व य स ठ KERN_CRIT: ट कल सर यस ह ड व अर व स टव अर ल म स ग य स ठ. KERN_WARNING :ध य च स द श द य स ठ. KERN_NOTICE:स ध न ट स म स ज स ग य स ठ. KERN_INFO:म हत स ग य स ठ. KERN_DEBUG:ड ब ग ग करत न म स ज प ह य स ठ. वर ल म म य आपण Hello world ह म स ज ल ग करण र आह त. 6) य न तर रटन फ शन व र आपण फ शन क ल करत न आल य एररच क ड रटन क ल ज त. : मह श ज धव : mahesh7197@gmail.com : Page 18
20 7) म य ल कन ल मध न क ढ न ट क य स ठ hello_exit ह फ शन व परत त.ह फ शन रन झ य न तर GoodBy ह म स ज ल गम य र क ड ह त. 8) module_init ह फ शन कन ल ल म य स इ नशल ईझ झ यवर क णक णत फ शन रन कर यच त स गत त. 9) module_exit ह फ शन कन ल ल म य स क ढ न ट क य वर क णक णत फ शन रन कर यच त स गत त म एड टर म य ट इप क न झ य न तर Ctrl+Q बटन क व Esc द ब न आपण ए डटर मध न ब ह र पड व. म स ह क न ब ह र पड य स ठ wq! ह कम ड व पर व. आत आपल प हल म तय र झ ल आह त परत एकद प ह य स ठ आपण.c फ ईल ट ट एड टर मध न ओप न क न च क क शकत क व cat hello.c ह कम ड द ऊन फ ईल र ड ओ ल म ड म य बर बर आह क त प ह शकत. म क फ ईल: वर ल क ड रन कर य अग दर त म क फ ईल व प न क प ईल कर व ल गत. य स ठ आपल म य फ डर म डग आह यच फ डर म य Makefileन व च फ ईल तय र करण अ यथ त ह ल त म य फ ईल च प ण प त य व ल ग ल. : मह श ज धव : mahesh7197@gmail.com : Page 19
21 [न द:य त ल Makefile ह श द क स स स ट ह आह य म ळ M ह क प टल ल टस म य हव.] obj-m सम र क णक णत म य स ब ड कर यच आह त य च न व य व त. य न तर.o,.koस र य फ ईल क प ईल झ य वर आप आप तय र ह त ल. [न द:य म य आपण आप य फ ईल च न व.c य ए सट शन च व पर न करत.o [ऑ ज ट] य ए सट शन च व पर करण र आह त] ख ल ल क ड Makefileम य प ट कर व. obj-m +=hello.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean क डच म हत : shell uname r : ह कम ड आप य स ट म वर कन ल च क णत हज न आह त श धत.प ढ ल ओळ ह दश वत क, ल ड ह ण र म य ल ह कन ल च भ ग आह आ ण ल ड झ य न तर त कन लच भ ग बन ल. म प ढ ल म ण रन करण : ट म नल व ड म य ज ऊन आपल म क फ ईल अस ल य फ डर म य ज ण. make कम ड व प न आपल क ड आपण क प ईल कर व क ड क प ईल झ ल तरच ब क सप ट ग फ ई स तय र ह त ल अ यथ एरस च म स ज मळ ल. य च बर बर क ण य ओळ ल च क झ ल आह य ओळ च न बर पण मळ ल. आपण परत vi hello.c क न क ड म य ज ऊन आव यक च ज स कर व त. sudo insmod hello.ko: ह कम ड व पर य वर आपल म य ल कन ल म य इ ल ड ह त. : मह श ज धव : mahesh7197@gmail.com : Page 20
22 आत त झ ल क न ह ह च क कर य स ठ कन ल ल ग मध ल म स ज प ह य स ठ dmesg ह कम ड व पर. आपण स Hello World ह म स ज दस ल हणज इ न शयल यझ शन फ शन स रळ त च लत अस ल. lsmod ह कम ड व प न आपल म य ल ह ल ट म य आह न त च क करण. न तर आपल म य ल क ढ न ट क य स ठ sudo rmmod hello.ko ह कम ड व पर आ ण dmesg कम ड व प न म स ज च क करण. [न द : आपण एक म य ल एकद च इ सट क शकत द स य द त इ सट कर यच अस य स आध च म य ल क ढ न मग परत स ध रत म य ल इ सट कर व. ] अश क र आज आपण कन ल च ब सक म कस कर व ह शकल त. म आप य ल स प ज व हण न म क ल ल म फ ई स ज डल य आह त.ख ल ल hello.c आ ण Makefile य च.txt ह ए सट शन क ढ न य फ ई स आपण जश य तश व प शकत.[ह ए सट शन फ ईल ल गल ज ड य स ठ म ल वल ल आह.] आपल वत च ड ह ईस य हर कस व टल आप य ल..झक स न.. आत य च म म य स ध रण करत करत आपण प ढच म शकण र आह त.मग तय र रह... [Ref: Linux For You magazine] : मह श ज धव : mahesh7197@gmail.com : Page 21
23 लन स ड ह ईस य हर मर ठ त न :भ ग ६: ड ह ईस य हरच प र मटर प स ग म, स स स ब धत म. म ग ल भ ग त आपण ब सक ह ल व ड च म प हल त,इत य स य प त न ड ह ईस य हर लह यल त ह ल न क च मज आल अस ल.य भ ग त आपण थ ड प ढ ज ऊन व गव गळ ब सक स शकण र आह त. समज त ह ल त म य ड ह ईस य हरल क ह प र मटर य यच असत ल तर त कस य यच त आपण य अ क त प ह य. थम आपण आप य म य लल फ त एक प र मटर कस प ठव यच त प ह य. #include<linux/init.h> #include<linux/module.h> #include<linux/moduleparam.h> MODULE_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 : मह श ज धव : mahesh7197@gmail.com : Page 22
24 य त S_I ह ह डर सव न क मन आह. R =र ड व चण,W =र ईट ल हण,X= ए झ य ट करण. USR=य जर,GRP= प य त OR हणज ऑर ऑपर शन क न एक प ज त पर मशन स ट करत य त त. ह म रन कर य स ठ प ढ ल प य य आह त. आप य म क फ ईल म य hello.o य ज ग आप य वर ल फ ईल च न व [parameter.o] द ण.आ ण फ ईल स ह करण. न तर make ह कम ड व प न फ ईल क प ईल करण. आत ह म य ल कन ल म य ट क य स ठ :sudo insmod parameter.ko paramtest=2 : मह श ज धव : mahesh7197@gmail.com : Page 23
25 ह कम ड व परण य त आपण 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 च ३ इतक स ईझ असल ल अ र व परल आह. : मह श ज धव : mahesh7197@gmail.com : Page 24
26 अ र ह प र मटर हण न व पर य स ठ module_param() य ज ग module_param_array() ह फ शन व परल आह. य त इतर प र मटर स बत counter असत ह कत प र मटर प स क ल य च न द ठ वत आपल म म य त स वध व परल न ह आह हण न आपण त ० अस ठ वल आह. आपण sudo insmod parameterarray.ko paramarray=1,2,3 अस प र मटर अ र स बत म य ल ल ड करत. त ह आपणस dmesg क य वर य त न स य आउटप ट नवर दसत ल. : मह श ज धव : mahesh7197@gmail.com : Page 25
27 स स स ब धत म. आप य स गणक त अन क स स च ल असत त आप य ल प ढ ल म लहत न क णत स स च ल आह क णत स स ब द आह य च म हत स स आय ड ह म हत स ट म कड न घ व ल गत अश व ळ आपण स प ढ ल स स स ब धत म न क च उपय ग त य ईल. #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 य चर च प टर क न य य आध र आपण भरप र म हत मळव शकत. आपण वर ल म म य आप य स ट म मध ल स सच आय ड न बर, स स च च ल थत ल ग इ य द म हत प ह. : मह श ज धव : mahesh7197@gmail.com : Page 26
28 य त task न व च प टर तय र कर य त आल ल अस न आपण आप य स ट म मध ल स स य चर प टरच व पर क न ड ल करण र आह त. ह म रन क य न तर आपण स स स च ल ट दस ल. अश र त न आपण आप य स ट म मध ल स स ब ल प ण पण म हत घ व शकत. : मह श ज धव : mahesh7197@gmail.com : Page 27
29 य स स आय ड आपण इ टरन टवर सच क रण आपणस ह य य स स ब ल अ धक म हत घ व शकत.तस च क णत स स क णत अ लक शन च ल आह य च ट ट क य ह स म हत मळत. अश र त न आपण प र म टर प स ग आ ण स स श नगड त म कस रन कर व त प हल त.प ढ ल भ ग त आपण क र टर ड ह ईस य हरच म हत घ व य. : मह श ज धव : mahesh7197@gmail.com : Page 28
30 लन स ड ह ईस य हर मर ठ त न :भ ग ७ :क र टर ड ह ईस य हर ब सक आपण ब सक ड ह ईस य हर कस लह यच ह प हल त,आत ख स क र टर ड ह ईस य हर कस लह यच त य अ क त प ह य. आपण म ग ल लन स कन ल य भ ग त ह पण शकल आह त क लन स म य ड ह ईस स एक फ ईल य प त असत.य ड ह ईस फ ईलच न व ह आप य स ट मवर ल अ लक शन आ ण ड ह ईस फ ईल य य त ल द व हण न क म करत.आ ण ड ह ईस फ ईल आ ण ड ह ईस य य म य स भ षण कर य स ठ य ड ह ईसच न बर मह व च असत. ड ह ईस फ ईलच न बर ह द न न बर य ज ड न बनल ल असत :म जर न बर आ ण म यनर न बर. <major,minor>.आप य स टमम य अन क य हर एख द म जर न बर [क मन] व प शकत पण य च म यनर न बर व गळ अस ल.कन ल म यनर न बर च व पर न क क णत ड ह ईस कन ट क ल आह त समज न घ य स ठ करत. आप य स ट म मध ल क र टर ड ह ईस य हर प ह य स ठ प ढ ल कम ड ट म नल व ड द ऊन प ह शकत. $ ls l /dev/ grep ^c ls l /dev :य कम ड न आपण सव ड ह ईस प ह शकत. : मह श ज धव : mahesh7197@gmail.com : Page 29
31 त आपण स प ढ ल म ण दस ल: य त brw : ह ल क ड ह ईस य हर तर crw क र टर ड ह ईस य हर दश वत त. dev_t ह रएबल य म य द ह न बर स ठवल ल असत त. [१२ ब ट म जर +२० ब ट म यनर=३२ ब ट ड ह] MKDEV( int major,int minor) ह कम ड व परल क ड ह ईस dev तय र ह त. आपल ड ह ईस फ ईल ह ड ह ईस य हरल ज ड य स ठ प ढ ल द न प य य आह त. १.आप य ड ह ईसच <major,minor> न बर द ऊन र ज टर करण. २. ड ह ईस फ ईल य ऑपर श स आ ण ड ह ईस य हर च फ श स ज डण. ड ह ईसच न बर मळव य स ठ <linux/fs.h> मध ल प ढ ल API फ र मह व च आह त. int register_chardev_region(dev_t first,unsigned int count, char *name); int alloc_chardev_region(dev_t *dev,unsigned int firstminor,unsigned int count,char *name); void unregister_chardev_region(dev_t first,unsigned int count); : मह श ज धव : mahesh7197@gmail.com : Page 30
32 प हल API ह cnt इतक न बर असल ल ड ह ईस र ज टर करत. जर ह फ श स यव थतपण च ल तर त ० ह रटन करत आ ण जर क ह ल म आल तर नग ट ह स य रटन ह त. द सर API ह आप आप म कळ म जर न बर श ध न ड ह ईस र ज टर करत.त प हल म यनर न बर ह श यत ० ह च असत. तसर API ह आपल स आपल ड ह ईस न बर व प न झ य वर म कळ कर य स ठ व परत त.ह API ल न अप फ शन म य व पर व. [REF:Linux Device Driver Book] ड ह ईस न बर दश वण र म: #include <linux/module.h> #include <linux/version.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> static dev_t first; //globle variable for the device no int init ofd_init(void) /*const*/ printk(kern_info "NAMSAKAR:ofd reg"); if (alloc_chrdev_region(&first, 0, 3, "Mahesh") <0) return -1; printk(kern_info "<Major,Minor>: <%d,%d> \n", MAJOR(first),MINOR(first)); return 0; static void exit ofd_exit(void)/*destructor*/ unregister_chrdev_region(first, 3); printk(kern_info "by Gn:ofd unreg"); module_init(ofd_init); module_exit(ofd_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("MJ"); MODULE_DESCRIPTION("OUR FIRST character DRIVER"); ह म रन क य न तर mahesh न व च ड ह ईस य हर तय र ह ऊन य च म यनर आ ण म जर न बर आपण स दस ल. : मह श ज धव : mahesh7197@gmail.com : Page 31
33 वर ल आउटप ट व ड म य आपण आप य ड ह ईस च म जर न बर आ ण म यनर न बर ड ल झ ल ल प हल त ह आपण आप य ममध ल printkफ शन व प न आउटप ट व ड म य द खवल आह त. वर ल च त आपण आपल ड ह ईस स टम म य र ज टर झ ल आह क न ह ह /proc/device म य ज ऊन प हल य थ आपण mahesh न व च ड ह ईस तय र झ ल ल दस ल.न तर आपण /devम य ज ऊन प ह य स आपण स ड ह ईस फ ईल तय र झ ल न ह ह कळ ल मग आपण mknodच व पर क न न ड तय र क ल व य त आप य ड ह ईस स ठ फ ईल तय र झ ल ल दस ल. ह च क म आपण ऑट म टक पण क शकत त आपण प ढ ल भ ग त प हण र आह त. : मह श ज धव : mahesh7197@gmail.com : Page 32
34 लन स ड ह ईस य हर मर ठ त न :भ ग ८ :क र टर ड ह ईस य हर फ ईल ऑपर श स. क र टर ड ह ईस य हर ह य च फ ईल ल ज डल ग ल ल असत आपल सव क म त फ ई स य म यम त न प ण करत. फ ईल ऑपर श स य चर म य पण फ ईल च सव फ श स ड ल अर क न आपण त फ ईल ओपन क ज, र ड,र ईट क शकत. य क फ शन म य स य आपण य फ शन च ट क न न व द ऊ. य म ळ कर टर ड ह ईस य हर च ब सक म ख ल ल म ण ह ईल. #include <linux/module.h> #include <linux/version.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/device.h> #include <linux/cdev.h> static dev_t first; //globle variable for the device no static struct cdev c_dev; //globle var for char struct static struct class *cl; //globle var for device class static int my_open(struct inode *i, struct file *f) printk(kern_info "Driver :open()\n"); return 0; static int my_close(struct inode *i, struct file *f) printk(kern_info "Driver:close()\n"); return 0; static ssize_t my_read(struct file *f,char user *buf,size_t len,loff_t *off) printk(kern_info "Driver:read()\n"); return 0; static int my_write(struct file *f,const char user *buf,size_t len,loff_t *off) printk(kern_info "Driver:write()\n"); return len; static struct file_operations pugs_fops=.owner = THIS_MODULE,.open = my_open,.release =my_close,.read =my_read,.write =my_write ; : मह श ज धव : mahesh7197@gmail.com : Page 33
35 static int init ofcd_init(void) /*const*/ printk(kern_info "NAMSAKAR:ofd reg"); if (alloc_chrdev_region(&first, 0, 3, "Mahesh") < 0) return -1; if ((cl = class_create(this_module, "chardrv")) == NULL) unregister_chrdev_region(first, 1); return -1; if (device_create(cl, NULL,first, NULL, "mynull") == NULL) class_destroy(cl); unregister_chrdev_region(first, 1); return -1; cdev_init(&c_dev, &pugs_fops); if (cdev_add(&c_dev, first, 1)== -1) device_destroy(cl,first); class_destroy(cl); unregister_chrdev_region(first,1); return -1; return 0; static void exit ofcd_exit(void)/*destructor*/ cdev_del(&c_dev); device_destroy(cl, first); class_destroy(cl); unregister_chrdev_region(first,1); printk(kern_info "by Gn:ofd unreg"); module_init(ofcd_init); module_exit(ofcd_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("MJ"); MODULE_DESCRIPTION("OUR FIRST character DRIVER:automatic"); [REF:Linux for you magazine] : मह श ज धव : mahesh7197@gmail.com : Page 34
36 क णत.h फ ईल कध इ ल ड कर व : #include <linux/init.h> : ब सक इ न शयल यझ शन #include <linux/module.h> :क णत ह म य स लहत न #include <linux/version.h> : लन स हज नच ड ट मळव य स ठ. #include <linux/kernel.h> : prinitk() ह फ शन व परत य य स ठ. #include <linux/fs.h> :फ ई स य नगड त ऑपर श स कर य स ठ #include <linux/device.h> : ड ह ईस श नगड त ऑपर शन करत न. #include <linux/cdev.h> :म जर व म यनर न बरसह कर टर ड ह ईस तय र कर य स ठ. #include <linux/slab.h> :kmalloc() ह फ शन व पर य स ठ. #include <linux/errno.h> :एरस च क ड य फ ईल म य असत. #include <linux/types.h> :size_t,dev_t य स रख ड ट ट ईप सप ट स ठ. #include <linux/fcntl.h> :o_accmode स ठ #include <asm/system.h> :cli(), _flags व पर य स ठ #include <asm/uaccess.h> :copy_from /to _users य स रख फ श स व परत न. module.h मध ल फ श सच म हत : MODULE_ALIAS(_alias) य जर प स म य म य लच न व व म हत द य स ठ. MODULE_LICENSE(_license) म य ल क णत ल यस स व परण र आह य च न व. MODULE_AUTHOR() म य लच ल खक. MODULE_DESCRIPTION() म य ल य क म वषयक थ ड य त म हत MODULE_PARAM() म य ल ल ड करत न प स क ल ज ण र प र मटर MODULE_VERSION() व पर य ज ण य म य ल च हज न आपण modinfo म य लच न व.ko अश कम ड दल असत वर ल सव म य ल श नगड त म हत आपणस मळत. फ ईल ऑपर श स य क ह मह व य ग ट : वर ल क ड म य ओपन आ ण ल ज फ शन int रटन करत त,० हणज यश व पण प र पडल आ ण नग ट ह हणज क ह तर ल म आह.पण र ड आ ण र ईट ह फ श स क ह प झ ट ह न बर रटन करत त त हणज कत ब ईट ड ट र ड क व र ईट झ ल हण नच य फ श स च रटन ट ईप ssize_t आह. : मह श ज धव : mahesh7197@gmail.com : Page 35
37 तस च आणख एक म त ग ट आह...read() ह फ शन len ब ई स इतक ड ट buf य बफर म य ल हत आ ण कत ब ई स ल हल त त स य रटन ह य हण न प ठवत. हणज च र ड फ शन ह य जर प स फक बफर म य ड ट ल हत क रण त य जरल व चत व व परत य व...आह न ग मत र ड फ श स बफर म य र ईट करत... क ह मह व च क डच भ ग: loff_t (*llseek) (struct file *, loff_t, int); य त llseek ह म थड फ ईल च च ल र ड र ईट प झशन बदलत, loff_t हणज ल ग ऑफस ट. ssize_t (*read) (struct file *, char user *, size_t, loff_t *); ह फ शन ड ह ईस कड न ड ट घ त न व परत त जर य ठक ण क ह च ड ट नस ल तर त EINVAL हणज च इ ह ल ड अ य म ट हण न एरर दश वत. int (*open) (struct inode *, struct file *); ड ह ईस ओपन करण ह ड ह ईस फ ईल वर क ल ज ण र प हल य. struct module *owner ह आप य म य ल ल प ट करत आ ण जर आपल म य ल क मत अस ल तर त क ढ न ट क य स तब ध करत. बय चद य स THIS_MODULE ह न व र हत य च ड फन शन <linux/module.h> म य असत. ओपन म थड : ओपन म थड प ढ ल क म करत : ड ह ईस तय र आह क न ह त प हण आ ण य नगड त क ह एरस आह त क त प हण. जर ड ह ईस थमच ओपन ह ट अह ल तर य च इ न शयल यझ शन करण. f_op प टर अपड ट करण. : मह श ज धव : mahesh7197@gmail.com : Page 36
38 file->private_data म य ठ व य त य ण य ड ट चर स ठ र ख व ज ग क न य त त ठ वण. रल ज म थड: रल ज म थड प ढ ल क म करत : ओपन म थडन file->private_data म य ठ वल ल ज ग क ढ न घ ण. ड ह ईस ब द करण. र ड आ ण र ईट म थड: ssize_t read(struct file *filp, char user *buff, size_t count, loff_t *offp); ssize_t write(struct file *filp, const char user *buff,size_t count, loff_t *offp); य त flip ह फ ईलच प टर असत. count हणज सफर करण य ड ट च स ईझ. buff हणज य जरच बफर य त र ड आ ण र ईट करत न ड ट ठ वल ज त. offp [ल ग ऑफस ट ट ईप प टर] य जर व पर त असण य फ ईलच प झशन दश वत. रटन ह य ssize_t हणज च signed size type. ह अ धक प ट ह य स ठ प ढ ल आक त पह : : मह श ज धव : mahesh7197@gmail.com : Page 37
39 [Ref:Linux Device Driver Book] र ड आ ण र ईट म थड स ठ नयम: जर रटन स य ह फ शन मध ल count य अ क इतक अस ल तर ततक ब ई स प ठवल ज त त. ज त रटन स य ह प झ ट ह अस ल आ ण count प कम अस ल तर ततक च ड ट प ठवल ज त जर रटन स य ह श य अस ल तर फ ईल स पल अस म नल ज त. नग ट ह रटन स य हणज एरर य च न बर <linux/errno.h>य फ ईल म य असत य त EINTR [interrupt system call],-efault [bad address]य च सम व श ह त. : मह श ज धव : mahesh7197@gmail.com : Page 38
40 ड ह ईस य हरच ब सक स र श. य य जर फ श स कन ल फ श स म य ल ल ड करण. [load] insmod module_init() ड ह ईस उघडण. [open] fopen file_operations:open ड ह ईस मध न व चण.[close] fread file_operations:read ड ह ईस म य लहण.[read] fwrite file_operations:write ड ह ईस ब द करण.[write] fclose file_operations:release म य ल क ढ न ट कण.[remove] rmmod module_exit() [Ref:FreeSoftwareMagazine] : मह श ज धव : mahesh7197@gmail.com : Page 39
41 लन स ड ह ईस य हर मर ठ त न :भ ग ८ :प. स. आय. ड ह ईस य हर ब सक. आप य स गणक त फ स क ड,ल न क ड स रख ड ह ईस ज ड य स ठ [PCI] प. स. आय. बस च व पर ह त ह ड ट बस स उथ बस न तर न थ ज व र स प य [ स सर] ल ज डल ज त. अश त ह न आपण ड कट पवर हड ओ प हत असत न क व स ह र वर ड ट प ठवत असत न आप य नकळत आपण प. स. आय. बस व परत च असत. य च ड ट सफर प ड फ रच ज त असत.PCIe च ड ट सफर र ट २५० एम ब प र ल न आ ण ज त तज त ८ ज ब पय त आह. प स आय हणज प रफ रल क प न ट इ टरकन ट. य च PCI,PCI Express,PCI Extender,Mini PCI अस अन क क र आह त. प. स. आय. ड ह ईस च ल क र ट २५ क व ३३ Hz पय त असत. आपण आप य य भ ग त प. स. आय. ड ह ईस य हर कस असत य च म हत घ व य. प. स. आय. ड ह ईस ह आप य ह डर आय ड, ड ह ईस आय ड आ ण ल स क ड य व र ओळखल ज त.आप य स टमम य क णक णत प. स. आय. ड ह ईस आह त ह प ह य स ठ प ढ ल कम ड व पर व. lspci य त आपणस ज प हल न बर दसत त आह प. स. आय. बस न बर नत र प. स. आय. ड ह ईस न बर आ ण श वटच न बर फ शन दश वत. : मह श ज धव : mahesh7197@gmail.com : Page 40
42 lspci t य कम डन आपणस आपल प. स. आय. ड ह ईस ह चर म य दसत ल. य य ड ह ईस य हर स ठ ब ग च गरज नसत.य त pci_dev ह ड ट चर व परत त. प.स.आय. ड ह ईस म य त न अ स य रजन असत त. 1) क फगर शन प स, 2) इनप स आउटप ट प ट 3) ड ह ईस म मर. क फगर शन प स एकव ळ ल एक च ल ट वर क म क शकत आ ण इनप स आउटप ट प ट, ड ह ईस म मर ल क शन ह एक च प.स.आय. बस मध ल सव ड ह ईस श अर करत त. : मह श ज धव : mahesh7197@gmail.com : Page 41
43 क फगर शन प स मध ल र ज टर वर क म कर य स ठ कन ल च व श ट फ श स क म करत त. य क प स आय ल ट म य ४ इ टर ट प स असत त.य त ल क णत ह एक पन एक व ळ स.प.य. व र व परल ज ऊ शकत. स ट म ब ट ह त न प स आय ड ह ईस च फम व अर ह ड व अर इ न शयल ईझ क न य क रजन व गव ग य अ सल ज डल ज त,आ ण य अ सल च ल रजन ज डल आह त क फगर शन प समध न व चल ज ऊ शकत हण न ड ह ईस य हरल ड ह ईस व पर य स ठ श यत ब गच गरज भ सत न ह. [न द :य एस ब ड ह ईस य हरल ड ह ईस व पर य स ठ ब गच ल गत.] ज ह प.स.आय. ड ह ईस ल प वर द य वर ह ड व अर प ण त च ल नसत फ त क फगर शन नगड त क म ल र प स द त.फम व अर प स आय क लर मध ल र ज ट र मध ल ड ट ल र ड र ईट क न क फगर शन अ स पय त प हचत.ब ट ह त न फम व अर सव प स आय ड ह ईस बर बर य क अ स रजन ल ज ग मळव न द त आ ण त ह च ड ह ईस य हर ह ड ह ईसच म मर रजन आ ण आय ओ रजन य च ज डण प हत, प स आय क फगर शन र ज ट र ह ख ल ल म ण असत त: : मह श ज धव : mahesh7197@gmail.com : Page 42
44 [REF:Essential linux Device Driver-Alan Cox-Pearson] इनप ट आउटप ट रजन म य र ज टर असत त तर म मर रजन म य ड ट, ह डओ क ड म य इनप ट आउटप ट प स म य क ल र ज टर आ ण म मर रजन म बफर ल ज डल ल असत. ड यर ट म मर अ स स :[DMA] ड ह ईसल म मर स.प.य. न व परत ड यर ट ज डण य स ड यर ट म मर अ स स हणत त.य म ळ स सरच व पर न करत आपण म मर मध ल ड ट हलव शकत.स उथ ज मध ल ड.एम.ए क लर क व ख प.स.आय. बस स बसच त ब घ व न ड यर ट म मर सफर क शकत. स ट म मध ल ड ट एल.स.ड. न वर प ठव य स ठ य जर आपल प सलच ड ट ड एम ए असल य म बफर म य लहत आ ण एल.स.ड क लर ह च ड ट व ळ व ळ कल ट क न न वर द खवत. स ट म मध ल य म मर प सल ड.एम.ए बफर हणत त. म य ल ड ह ईस ट बल: pci_device_id ह ड ट चर य जरल व पर य स द ऊन ह ट लग स वध द त य त तस च म य ल ल ड करण य स टमल ह ह समजत क क ण य ह ड व अरल क णत म य ल क म करत. MODULE_DEVICE_TABLE(pci, i810_ids); वर ल फ शन ल कल ह रएबल तय र क न त pci_device_id ड ट चर ल प ट करत तस च य म य ल श नगड त म य स श धल ज त त व modules.pcimap म य ट कल ज त त. य न तर नव न ड ह ईस ह ट लग क य वर ह ट लग स टम modules.pcimap य च व पर क न अन प य हर ल ड करत. : मह श ज धव : mahesh7197@gmail.com : Page 43
45 ब सक प.स.आय. ड ह ईस य हर : थम ड ह ईस तय र कर व ल ग ल य स ठ ख ल ल क ड व पर व. ब सक प.स.आय. ड ह ईस य हर क ड: #include <linux/pci.h> आपण स ल गण र फ श स प.स.आय. ड ट एच य फ ईल मध न घ तल ज त त. #define MY_VENDOR_ID 0xABCD #define MY_DEVICE_ID_NET 0xEF01 य हर सप ट करत असण र ड ह ईस च न द य थ क ल ज त थम ड ह ईस तय र कर व ल ग ल य स ठ ख ल ल क ड व पर व struct pci_device_id network_driver_pci_table[] devinitdata = MY_VENDOR_ID, /* Interface chip manufacturer ID */ MY_DEVICE_ID_NET, /* Device ID for the network */ PCI_ANY_ID, /* Subvendor ID wild card */ PCI_ANY_ID, /* Subdevice ID wild card */ 0, 0, /* class and classmask are unspecified */ network_driver_private_data, 0, ; वर ल क ड म य प स आय य हरश नगड त ड ट दल ज त. struct pci_driver network_pci_driver =.name = "ntwrk", /* Unique name */.probe = net_driver_probe,.remove = devexit_p(net_driver_remove),.id_table = network_driver_pci_table, /* suspend() and resume() optional methods*/ ; य थ आप य ड ह ईस य हर च ब सक फ श स डफ ईन क ल ज त त.य त ड ह ईस य हर च न व ज डण आ ण क ढण य स ब धत फ शन आ ण आय ड ट बल य च सम व श ह त. static int init network_driver_init(void) pci_register_driver(&network_pci_driver); return 0; य थ आपण य हर इ न शयल ईझ क ल आह.य त प स आय य हर र ज टर क ल. Static void exit network_driver_exit(void) pci_unregister_driver(&network_pci_driver); य थ आपण य हर कड न ट क य वर अन र ज टर फ शन डफ ईन क ल आह. module_init(network_driver_init); module_exit(network_driver_exit); MODULE_DEVICE_TABLE(pci, network_driver_pci_table); : मह श ज धव : mahesh7197@gmail.com : Page 44
46 ब ग फ शनम य प ढ ल क म क ल ज त त.: प स आय ड ह ईस एन बल करण. रस स च म हत श धण :इनप ट आउटप ट बस अ स,इ ट र व ट. य हर श नगड त ड ट चर न म न दल ज त. वत ल र ज टर करण. प स आय ड ह ईस य हरच क ह मह व च क डच प ट : #include <linux/pci.h> struct pci_dev; struct pci_driver; struct pci_device_id; int pci_register_driver(struct pci_driver *drv); int pci_module_init(struct pci_driver *drv); void pci_unregister_driver(struct pci_driver *drv); int pci_enable_device(struct pci_dev *dev); int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val); int pci_read_config_word(struct pci_dev *dev, int where, u16 *val); int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val); int pci_write_config_byte (struct pci_dev *dev, int where, u8 *val); int pci_write_config_word (struct pci_dev *dev, int where, u16 *val); int pci_write_config_dword (struct pci_dev *dev, int where, u32 *val); pci_resource_start() pci_resource_len() pci_resource_end() ह ह डर प स आय स ब धत र ज टर आ ण आय ड स ठ सप ट करत. य चरम य कन ल मध ल प स आय ड ह ईस दश वत ह चर प स आय ड ह ईस य हर दश वत. आप य य हरल सप ट करण र प स आय ड ह ईस च म हत द त प स आय ड ह ईस ह प स आय क अर ल र ज टर करत. म य ल इ न शय ट करत. य हर अन ल ड करत आ ण य हरल ज डल ल प स आय ड ह ईस कड न ट कत. ब फ शन म य ह फ शन व परत त. ड ह ईस च ल ह ऊन इ ट व इनप ट,आउटप ट रजन न म न दल ज त. क फगर शन प स मध ल ड ट वर क म कर य स ठ ह फ श स व परत त. ह फ श स अ तग त pci_bus ह बसश नगड त फ श स व परत त.फ श स मध ल श द च अथ : ८ ब ट ड ट सफर = byte १६ ब ट ड ट सफर = word ३२ ब ट ड ट सफर = dword प स आय क फगर शन प समध न व च य स ठ = read प स आय क फगर शन प स म य लह य स ठ = write क फगर शन प स य स रव त प स नच ऑफस ट = where एरर क ड रटन करण र स य = val प स आय ड ह ईस प टर = dev ह फ श स इनप ट आउटप ट व म मर रजन वर क म करत त. प ढ ल फ श स अन म अश म हत मळवत त: : मह श ज धव : mahesh7197@gmail.com : Page 45
47 pci_resource_flags() ब स अ स,ल थ, श वटच अ स,क ल ल ग य भ ग त आपण प स आय ड ह ईस स ठ ब सक य हर कस लह व त प हल त. प स आय च ऑपर टर स ट म म य च लण र क ड प ढ ल ल क शन ल मळ ल: drivers/net/, drivers/scsi/, drivers/video/ लन स स ट म म य प स आय ड ह ईस य हरच म हत मळव य स ठ ल क शन : Documentation/pci.txt प स आय ह इ टरफ स मदर ब ड ल कन ट ड असत य म ळ आपणस य व र आपन स फ स क ड न टवक क ड य स र य ड ह ईसस ठ य हर ल हत य त. प ढ ल भ ग त आपण य एस ब स ठ ड ह ईस य हर लहण र आह त. : मह श ज धव : mahesh7197@gmail.com : Page 46
48 लन स ड ह ईस य हर मर ठ त न :भ ग ९:य. एस. ब. ड ह ईस य हर ब सक क स ट. आपण प न ई ह, म उस, क ब ड,ह ड फ न इ य द अन क ड ह ईस आप य स गणक स ज ड य स ठ य.एस ब प ट व परत.य प ट व र आपण आप य स सर श स भ षण कर त असत.ह अन क ड ह ईस य.एस.ब.[य न हस ल स रयल बस] य बसच व पर क न सर यल प त न ड ट सफर करत त. [य.एस.ब. २.० आ ण ३.० ब ल ज ऊन घ य स ठ य थ टचक म र ] म ग ल भ ग त आपण कर टर आ ण प स आय स ठ च ड ह ईस य हर प हल त य भ ग त आपण क ह तर म त शकण र आह त एकदम ल ई ह ड ह ईस य हर... य.एस.ब ड ह ईस य हरच रचन : य.एस.ब ह ट क लर ह म ख असत आ ण त य क य.एस.ब ड ह ईसल क ह ड ट स ड कर य स आह क त वच रत. क णत ह य.एस.ब ड ह ईस ह ह ट क लरल वच र य शव य ड ट सफर क शकत न ह. स ट म म य य एस ब ह ट स ठ य एस ब ह ट क लर य हर तर य एस ब ड ह ईस स ठ य एस ब ल इ ट य हर असत. य एस ब क अर ह य द घ न ह ल गण र ट नस आ ण चर प रवत. य एस ब क अर ह य हर स ट मच क अर वभ ग आह. कन लच ह पर ड khubd ह सव प ट वर ल ठ ऊन क ण य प ट वर क य बदल झ ल ल आह त य च म हत घ त असत. य जर प स मध न य एस ब ड ह ईस ल अ स स कर य स ठ य एस ब फ ईल स ट म usbfs ह व परत त. य जर /dev,/sys मध न ह य एस ब ड ह ईस ब ल क ह म हत घ व शकत. य स बध स प ण म हत दश वण र ख ल ल आक त पह व. : मह श ज धव : mahesh7197@gmail.com : Page 47
49 य.एस.ब बस च क ह फ चस : हड ओ आ ण ऑड ओ ड ट प ठव य स ठ ड ह ईस क ह फ स ब ड व थ म गव शकत.तस च य एस ब ट क ल म य ज क मन जनरल ड ह ईस असत त य स ठ क ह ख स य हर लह यच गरज नसत उद : क ब ड,म उस,न टवक ड ह ईस क ह ख स ड ह ईस स ठ आपणस ख स य हर लह व ल गत. लन स स ट म ह द न क र य य एस ब य हर ल सप ट करत. एक ज स टम म य असत [य एस ब ड ह ईस य हर] द सर ज ड ह ईस म य असत [य एस ब ग ज टस य हर] आत आप य य ग स ठ एक प न ई ह य आ ण त आप य स गणक ल ज ड. आप य स ट मल ज डल ल य एस ब ड ह ईस ऑपर ट ग स टमल कळल क न ह त प ह य स ठ lsusb कम ड ट म नस म य व पर व.आत त ह ल प न ई हच ए झ ल ल दस ल. : मह श ज धव : mahesh7197@gmail.com : Page 48
50 आप य प न ई ह स ब धत सव म हत प ह य स ठ lsusb v ह कम ड व पर व.य त आप य प न ई ह च उ प दक य च न व य च आय ड ड ट च न व आ ण य च आय ड अश म हत मळ ल.म य प न ई ह च ह डर आय ड आ ण ड ट आय ड 0x0781,0x5567 अस मळ ल.य च व पर आपण य हर लह य स करण र आह त. [न द :य म हत त D= ड ह ईस,C=क फगर शन,I=इ टरफ स E =ए डप ट य च स दभ प ढ य ण रच आह.] : मह श ज धव : mahesh7197@gmail.com : Page 49
51 आत आपण आपल प हल ब सक य एस ब य हर लह य : #include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> static int pen_probe(struct usb_interface *interface, const struct usb_device_id *id) printk (KERN_INFO "Pen drive(%04x:%04x) plugged\n", id->idvendor, id- >idproduct); return 0; static void pen_disconnect(struct usb_interface *interface) printk(kern_info "PEN drive removed \n"); static struct usb_device_id pen_table[]= USB_DEVICE(0x0781,0x5567), ; MODULE_DEVICE_TABLE (usb, pen_table); static struct usb_driver pen_driver =.name = "pen_driver",.id_table = pen_table,.probe = pen_probe,.disconnect = pen_disconnect, ; static int init pen_init(void) return usb_register(&pen_driver); static void exit pen_exit(void) usb_deregister(&pen_driver); module_init(pen_init); module_exit(pen_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR ("MJ"); MODULE_DESCRIPTION("USB PEN REGISTRATION DRIVER"); य च चर कर टर ड ह ईस य हर स रख च आह य त ड ह ईस फ ईल मध न र ज टर क व अन र ज टर न करत आपण ह ड व अर व परण र आह त. य स ठ usb_register आ ण usb_deregister ह य एस ब च API व परल ल आह त. : मह श ज धव : mahesh7197@gmail.com : Page 50
52 य त ब आ ण ड सकन ट स बत स प ड आ ण र य म ह फ श स पण गरज पड य स व प शकत य म ळ ज ह नक अस ल त ह आपल ड ह ईस स प ड म ड म य ज ईल आ ण परत हव अस ल त ह र य म ह ईल. ड ह ईस ऑट म टक डट ट ह य स ठ ड ह ईस ट बल तय र क न य त आप य ड ह ईसच आय ड प स क ल आह त य म ळ आपल ड ह ईस ज डल क ह य हर आप आप च ल ह ईल.य एस ब ड ह ईस स ठ य ट बल म य प हल प र म टर ह usb ह प स कर व ल गत. य न तर आपण आप य ड ह ईस आय ड ट बलच न व प स क शकत. प न ई ह लग क य वर ब फ शन च ल ह इल आ ण प न ई ह क ढ न ट क य वर ड कन ट फ शन रन ह ईल. ह म रन कर य स ठ थम य मस ठ म क फ ईल तय र कर व. न तर make कम ड व प न क प ईल क न.ko फ ईल तय र करण. lsmod व प न आपल नव न म य ल ल ड करण. पण य आध आप य स ट म म य आध प स नच असल ल य एस ब च म य ल [usbstorage] कड न ट क व ल ग ल य स ठ rmmod usb-storage ह कम ड व प न त म य ल स ट म मध न क ढ न ट क व. आत आपल प न ई ह कन ट कर व. आ ण dmesg कम ड रन कर व. न तर प न ई ह क ढ न ट क व आ ण परत dmesg कम ड रन कर व. : मह श ज धव : mahesh7197@gmail.com : Page 51
53 आपणस आपल ब आ ण ड सकन ट ह द ह फ श स रन ह ऊन आउटप ट आल ल दस ल.आत आपणस खर म त क म करण र य हर तय र क य च मज न क च आल अस ल. : मह श ज धव : mahesh7197@gmail.com : Page 52
54 य.एस.ब ड ह ईस य हरच रचन : वर ल च त य एस ब य हर ह कन ल च स टम आ ण ह ड व अर म य असत. य एस ब क अर ह य एस ब य हरल ह ड व अर व पर य स ठ ए स स द त. य एस ब चर ब ल आपणस म हत प ढ ल ल क वर मळ ल: : मह श ज धव : mahesh7197@gmail.com : Page 53
55 य एस ब य हर ह स प ण य एस ब ड ह ईस ल ज डल न ज त फ त य एस ब इ टरफ सल ज डल ज त त. य एस ब ऐ डप ट आत[IN endpoint] क व ब ह र [out endpoint] ड ट सफर कर यस ठ व परत त. ह ड ट सफर एक च दश न प ईप म फ त ह त. य एस ब ऐ डप टच च र क र पडत त: क ल: ड ह ईस क फगर क रण स ठ व ड ह ईसच म हत मळव य स ठ तस च कम ड प ठव न ड ह ईसच ट स प ह य स ठ.श यत ड ह ईसम य endpoint 0 ह ह क म प र पडत.ह एकम व ए डप ट आह ज द ह दश न ड ट प ठवत. इ ट:ह ऐ डप ट थ ड च ड ट क ह ठर वक अ तर न प ठव य स ह त ह म य न ड ट प ठव न म उस कब ड स रख ड ह ईस क ल कर य तव व परत त. ब क:ह ऐ डप ट फ रच ज त ड ट सफर कर य स ठ व परत त. ज त ड ट क ण य ह ड ट च ल ट न ह त व गरज पड य स ज त व ळ घ ऊन ड ट प ठव य स ठ ह ऐ डप ट व परत त. टर,न टवक क ड य स ठ ह ऐ डप ट व परत त. आयस नस:ह ऐ डप ट ऑड ओ हड ओ ड ह ईस म य ज त ड ट प ठव य स ठ ह त य त ड ट ल ट च पव न करत सतत ड ट च व ह च ल ठ वल ज त. इ ट व आयस नस ऐ डप ट ह क ह ठर वक व ळ ल ड ट प ठव य स ठ सतत स ट क ल ज त त य एस ब ऐ डप ट ह struct usb_host_endpoint य चर म य ठ वल ज त त व य ऐ डप ट च म हत struct usb_endpoint_descriptor म य स ठवल ज त. य त ल क ह मह व च फ चस : bendpointaddress :ह ड ट इनप ट असण र क आउटप ट ह स गत य व न ड ट स टम ल ज ण र क ड ह ईस ल ज ण र त समजत. bmattributes :य व र ऐ डप ट ह क ल,ब क,इ ट, आयस नस य प क क णत आह त समजत. wmaxpacketsize :य म ळ ऐ डप ट व र ज त त ज त कत स ईझ ह त ळल ज ऊ शकत त समजत. : मह श ज धव : mahesh7197@gmail.com : Page 54
56 binterval :य म ळ इ ट र व ट च व ळ समजत. ऐ डप टह एक तपण इ टरफ सम य ग ड ळल ल असत त. ड ह ईस एक च व ळ अन क इ टरफ स व प शकत त य एस ब इ टरफ सल आप य न हम य स ट ग सह आणख ह क ह स ट ज अस शकत त थम इ टरफ स ह थ मक स ट स व परत त क ह व ळ द स य प त न क ल कर य स ठ अ टरन ट ह सट ग व परत. य च म हत usb_interface य चरम य ठ वल ज त. ह इ टरफ स क फगर शन य प त ग ड ळल ल असत त. स र श न क फगर शन हणज ड ह ईसच फ ईल,इ टरफ स ह ड ह ईसच फ श स,ए ड प ट हणज ड ट सफर करण र प ईप. ड ह ईसल एक क व अन क क फगर शन असत त. क फगर शनम य एक क व अन क इ टरफ स असत त. इ टरफ सम य एक क व अन क स ट ज असत त. इ टरफ सम य एक क व अन क ए डप ट असत त. : मह श ज धव : mahesh7197@gmail.com : Page 55
57 य एस ब ड ह ईस न बर: प हल य एस ब ड ह ईस ह टहब असत य स य एस ब क अर न एक न बर दल ल आह य न तर य त त प ट न बर य प ट ल ड ह ईस ज डल आह त प ट. य न तर क फगर शन न बर आ ण न तर इ टरफ स न बर उद त प ढ ल म ण दश वत त : 2-1:1.0 य एस ब अ स :[USB Urbs] कन ल ह य एस ब ड ह ईस स बत य एस ब र व ट ल क य व र स भ षण करत. य एस ब अ स ह ए ड प ट स बत ड ट प ठव य स ठ आ ण घ य स ठ व परत त. य आर ब प ढ ल म ण क म करत त: य एस ब ड ह ईस य हर य आर ब तय र करत त. य एस ब ड ह ईसल ए डप ट न मल ज त. य आर ब ह ड ह ईस य हरच व पर क न य एस ब क अर म य न द क ल ज त य न तर य एस ब क अर य च न द य एस ब ह ट क लर य हर म य करत य एस ब ह ट क लर ह स स क न य एस ब ड ट सफर करत. ज ह य आर ब प ण ह त य एस ब ह ट क लर ह य एस ब ड ह ईस य हरल य च न द प ठवत. : मह श ज धव : mahesh7197@gmail.com : Page 56
58 य एस ब इ फ म शन य हर: #include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> static struct usb_device *device; static int pen_probe(struct usb_interface *interface, const struct usb_device_id *id) struct usb_host_interface *iface_desc; struct usb_endpoint_descriptor *endpoint; int i; iface_desc = interface->cur_altsetting; printk (KERN_INFO "Pen i/f %d now probed:(%04x:%04x)\n",iface_desc- >desc.binterfacenumber, id->idvendor, id->idproduct); printk(kern_info "ID->bNumEndpoints: %02X\n",iface_desc- >desc.bnumendpoints); printk(kern_info "ID->bInterfaceclass: %02X\n", iface_desc- >desc.binterfaceclass); for(i=0; i < iface_desc->desc.bnumendpoints; i++) endpoint = &iface_desc->endpoint[i].desc; printk(kern_info "ED[%d]->bEndpointAddress: 0x%02X\n",i, endpoint->bendpointaddress); printk(kern_info "ED[%d]->bmAttributes: 0x%02X\n", i, endpoint- >bmattributes); printk(kern_info "ED[%d]->wMaxPacketSize: 0x%04X (%d)\n",i, endpoint->wmaxpacketsize, endpoint-> wmaxpacketsize); device = interface_to_usbdev(interface); return 0; static void pen_disconnect(struct usb_interface *interface) printk(kern_info "Pen i/f %d now disconnected \n",interface- >cur_altsetting->desc.binterfacenumber); static struct usb_device_id pen_table[]= USB_DEVICE(0x0781,0x5567), ; MODULE_DEVICE_TABLE (usb, pen_table); : मह श ज धव : mahesh7197@gmail.com : Page 57
59 static struct usb_driver pen_driver =.name = "pen_driver",.id_table = pen_table,.probe = pen_probe,.disconnect = pen_disconnect, ; static int init pen_init(void) return usb_register(&pen_driver); static void exit pen_exit(void) usb_deregister(&pen_driver); module_init(pen_init); module_exit(pen_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR ("MJ"); MODULE_DESCRIPTION("USB PEN Info DRIVER"); वर ल म म य struct usb_interface ह ह ड ल व न आपण स हव त म हत घ तल आह ब आ ण ड स कन ट ह स त इ टरफ सस ठ रन ह त त आ ण त च य च प हल प र म टर असत त. आ ण क ट नर ड ह ईस ह ड ल हण न interface_to_usbdev ह फ शन व परत त. ह म रन क य वर आपणस आप य ड ह ईस स ब धत सव डट ल म हत उपल द ह ईल. : मह श ज धव : mahesh7197@gmail.com : Page 58
60 लन स ड ह ईस य हर मर ठ त न :भ ग १०: य. एस. ब. ड ह ईस य हर फ ईल ऑपर श स. य. एस. ब. ड ह ईस य हरह प स आय ड ह ईस य हर स रख च ल हल ज त. ब फ शन न ० रटन क ल हणज आपल ड ह ईस यश व पण र ज टर झ ल आ ण आ ण एरर क ड रटन क ल हणज ड ह ईस र ज टर झ ल न ह.म य ल ड ह ईस ट बल ह आपल ड ह ईस ऑट म टक डट ट व ल ड ह य स व परत त य त module.usbmap,madule.pcimap य य एस ब आ ण प स आय स ठ तय र ह ण य म प फ ई स आह त. ड ट सफर : आप य प न ई ह मध न ड ट सफर कर य स ठ य हर म डफ य क य. प न ई ह म य र ड आ ण र ईट ऑपर शन कर य स ठ pen_read आ ण pen_write ह द न फ श स व परल ल आह त.य त ड ट सफर कर य स ठ usb_bulk_msg()ह ब क ड ट सफर स म थड ब क ए ड प ट च व पर क न ड ट सफर कर ल. प ढ ल क ड आपणस च ल ब सक र ड र ईट फ चस प रवण र क टम य हर कस तय र कर यच त दश व ल. य एस ब म य ड ट सफर य द न प त आह त,एक प त य आर ब व परत द स य प त त य जरल य आर ब व पर य च गरज भ सत न ह क रण य आर ब आप आप फ श स य अ तग त स ट क ल ज त. आत आपण य आर ब कस व पर व त प हण र आह त. य आर ब च व पर क न: य आर ब तय र क न अल क ट करण : य त थम य आर ब तय र क न अल क ट क ल ज त. struct urb *usb_alloc_urb(int iso_packets, int mem_flags); य फ शन म य iso_packets ह प र म टर कत आयस स नस प क स प ठव यच य च स य द त. : मह श ज धव : mahesh7197@gmail.com : Page 59
61 जर आपण ड ट सफर स ठ आयस स नस म थड व परत नस तर ह ह ह य ० ह द त त. mem_flags ह ल ग kmalloc फ शन ल प ठवत त तस च ल ग आह य आर ब स मट करण. int usb_submit_urb(struct urb *urb, int mem_flags); य त आपणस ज य आर ब आप य ड ह ईस ल प ठव यच आह य च प टर व ल ग प ठवल ज त. प ढ ल त न प क एक ल ग प स क ल ज त. GFP_ATOMIC=क लर ह य आर ब ल क ह ल करत अस ल, current->state ह TASK_RUNNING ट ट नस ल त ह. GFP_NOIO = ल क आय ओ प च म य अस ल आ ण ट र ज ड ह ईस य एरर ह ल ग य भ ग त. GFP_KERNEL = अ यथ ब य डफ ट. य आर ब र करण. int usb_kill_urb(struct urb *urb); int usb_unlink_urb(struct urb *urb); usb_kill_urb य त य आर ब ब द ह ऊन ड ह ईस ड स कन ट ह त. usb_unlink_urb य त य एस ब क अर ल य आर ब ब द कर य स ठ स चन प ठवल ज त. य आर ब करण. आपल क म झ य वर य आर ब ह य एस ब क अर ल आपल क म झ ल आह अस स गत void usb_free_urb(struct urb *urb); य त आपणस ज य आर ब म कळ कर यच आह य च प टर प स क ल ज त. बफर तय र करण. usb_buffer_alloc(dev->udev, count, GFP_KERNEL, &urb->transfer_dma); : मह श ज धव : mahesh7197@gmail.com : Page 60
62 य फ शन च व पर क न आपण ड एम ए [ड यर ट म मर अ स स ]स ठ बफर तय र क शकत. य व र ड ट फ ट प ठवल ज त. ड ट सफर : void usb_fill_int_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete, void *context, int interval); void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete, void *context); void usb_fill_control_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, unsigned char *setup_packet, void *transfer_buffer, int buffer_ length, usb_complete_t complete, void *context); य आर ब चर च व पर क न य एस ब क अर म य य आर ब स मट कर य स ठ. इ ट,ब क,क ल य न स र फ शन सल ट कर व. य आर ब च व पर न करत स ध ड ट सफर. int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int timeout); int usb_control_msg(struct usb_device *dev, unsigned int pipe, u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size, int timeout); ब क म स ज फ शन क ल म स ज फ शन. वर ल फ श स ह वत य आर ब स ब ध ऑपर शन करत त.य जर ल व परत य ण र स प ड ट सफर फ शन वर दल आह त.ज अ तग त ब क ग ट च क ळज वत घ त. struct usb_device *usb_dev : य ल ड ट प ठव यच आह त ड ह ईस unsigned int pipe :स ड क व रस ह ए ड प ट उद : usb_sndbulkpipe, usb_rcvbulkpipe. : मह श ज धव : mahesh7197@gmail.com : Page 61
63 void *data :प ठव य क व घ त य ज ण य ड ट च प टर int len :ड ट बफरच ल थ int *actual_length : न क कत ड ट प ठवण र आह य च स य. int timeout :व ट प ह य च व ळ. u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size : य य एस ब म स ज य क ल म स जस ठ य ह य आह त आपण आप य ममध ल र ड फ शन प ह य. static ssize_t pen_read(struct file *f,char user *buf, size_t cnt, loff_t *ppos) int retval; int read_cnt; retval = usb_bulk_msg(device,usb_rcvbulkpipe(device,bulk_ep_in),bulk_buf, MAX_PKT_SIZE, &read_cnt,5000); if(retval) printk(kern_err "Bulk message returned %d \n", retval); return retval; if (copy_to_user(buf, bulk_buf, MIN(cnt, read_cnt))) return -EFAULT; return MIN(cnt, read_cnt); य त usb_bulk_msg फ शन ल य एस ब ड ट ब क म थडन र स ह कर य स ठ प र म टर प ठवल आह त. जर रटन ह य प झ ट ह अस ल तर रटन ह य इतक म स ज व चल ग ल अस ल. त य जर ल उपल ध क न द य स ठ copy_to_user य फ शन च व पर क न त य जर य बफर म य ल हल ज त. तस च र ईट फ शन म य थम य जर य बफर मध ल ड ट copy_from_user य फ शन च व पर क न ब क बफर म य घ तल ज त आ ण usb_bulk_msg फ शन ल sndbulkpipe व प न ड ट ड ह ईस म य लहल ज त. : मह श ज धव : mahesh7197@gmail.com : Page 62
64 #include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> #define MIN(a,b) (((a) <= (b))? (a) : (b)) #define BULK_EP_OUT 0x01 #define BULK_EP_IN 0x82 #define MAX_PKT_SIZE 512 static struct usb_device *device; static struct usb_class_driver class; static unsigned char bulk_buf[max_pkt_size]; static int pen_open(struct inode *i, struct file *f) return 0; static int pen_close(struct inode *i,struct file *f) return 0; static ssize_t pen_read(struct file *f,char user *buf, size_t cnt, loff_t *ppos) int retval; int read_cnt; retval = usb_bulk_msg(device,usb_rcvbulkpipe(device,bulk_ep_in),bulk_buf, MAX_PKT_SIZE, &read_cnt,5000); if(retval) printk(kern_err "Bulk message returned %d \n", retval); return retval; if (copy_to_user(buf, bulk_buf, MIN(cnt, read_cnt))) return -EFAULT; return MIN(cnt, read_cnt); : मह श ज धव : mahesh7197@gmail.com : Page 63
65 static ssize_t pen_write(struct file *f, const char user *buf, size_t cnt,loff_t *ppos) int retval; int wrote_cnt =MIN(cnt,MAX_PKT_SIZE); if(copy_from_user(bulk_buf, buf, MIN(cnt,MAX_PKT_SIZE))) return -EFAULT; /*write data in to bulk endpoint */ retval =usb_bulk_msg(device,usb_sndbulkpipe(device, BULK_EP_OUT),bulk_buf,MIN(cnt,MAX_PKT_SIZE), &wrote_cnt,5000);; if(retval) printk(kern_err "Bulk message returned %d\n", retval); return retval; return wrote_cnt; static struct file_operations fops =.open = pen_open,.release =pen_close,.read =pen_read,.write =pen_write, ; static int pen_probe(struct usb_interface *interface, const struct usb_device_id *id) int retval; device = interface_to_usbdev (interface); class.name = "usb/pen%d"; class.fops = &fops; if ((retval =usb_register_dev(interface, &class )) < 0) err("not abe to get a minor for this device"); else printk(kern_info "Minor obtained : %d \n", interface->minor); return retval; static void pen_disconnect(struct usb_interface *interface) usb_deregister_dev(interface, &class); : मह श ज धव : mahesh7197@gmail.com : Page 64
66 static struct usb_device_id pen_table[]= USB_DEVICE(0x0781,0x5567), ; MODULE_DEVICE_TABLE (usb, pen_table); static struct usb_driver pen_driver =.name = "pen_driver",.id_table = pen_table,.probe = pen_probe,.disconnect = pen_disconnect, ; static int init pen_init(void) int result; if(( result = usb_register (&pen_driver))) err("usb_register failed.err no %d", result); return result; static void exit pen_exit(void) usb_deregister(&pen_driver); module_init(pen_init); module_exit(pen_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR ("MJ"); MODULE_DESCRIPTION("USB PEN Device DRIVER"); ह म रन क य वर आ ण प न ई ह लग क य स /dev/pen0ह तय र झ ल अस ल. आपण /dev/pen0 य वर क ह स ध र ड र ईट ऑपर शन क शकत आ ण प न ई ह क ढ न ट क य स /dev/pen0 नघ न ज ईल. : मह श ज धव : mahesh7197@gmail.com : Page 65
67 [ न द: म रन कर य आध usb-storeage ई हर रम ह क ल प हज. ] य एस ब ड ह ईस य हरच क ह मह व च क डच प ट : #include <linux/pci.h> ह ह डर य एस ब स ब धत सव म हत व फ श स स ठ सप ट करत. struct usb_driver; य चरम य य एस ब ड ह ईस दश वत struct pci_driver; ह चर प स आय ड ह ईस य हर दश वत. struct usb_device_id; आप य य हरल सप ट करण र य एस ब ड ह ईस च म हत द त int usb_register(struct usb_driver *d); य एस ब ड ह ईस ह य एस ब क अर ल struct usb_class_driver; struct urb; struct urb *usb_alloc_urb(int iso_packets, int mem_flags); void usb_free_urb(struct urb *urb); र ज टर करत. म जर न बर व प न क य नक शन करण र य एस ब ड ह ईस स ठ य एस ब ड ट प ठव य स ठ च चर य एस ब,य आर ब चर तय र कर य स ठ क व क ढ न ट क य स ठ : मह श ज धव : mahesh7197@gmail.com : Page 66
68 int usb_submit_urb(struct urb *urb, int य एस ब ड ट स मशन च ल क व ब द mem_flags); int usb_kill_urb(struct urb *urb); कर य स ठ int usb_unlink_urb(struct urb *urb); usb_[rcv snd][ctrl int bulk isoc]pipe() प ईप तय र करण. usb_buffer_alloc() usb_buffer_free() usb_gadget_register_driver() ड यर ट म मर सफर स ठ बफर तय र करण. क म झ य वर बफर म कळ करण. ग ज ट ड ह ईस र ज टर करण. ग ज ट य हर: ए ब ड ड स ट म ज ह स गणक ल ज डल ज त, य व ळ लन स ह द ह वर रन ह त असत. त ह स गणक ह ह ट हण न क म करत तर ए ब ड ड ड ह ईस ह ग ज ट य हर वर क म करत. य त प ढ ल भ ग य त त. ग ज ट ड ह ईस[ ट र ज,न टवक ] ह ह ट कड न आल य र व ट ल उ तर द त त. जस प न ई ह वत ल आपण ट र ज ल स च आह य च म हत ह ट स गणक ल द त. drivers/usb/gadget/zero.c य ठक ण आपणस ग ज ट य हर ब सक चर क ड मळ ल. अ धक म हत स ठ : लन स स ट म म य य एस ब क ल टन क ड : o य एस ब ड य म ट: drivers/usb/usb-skeleton.c o Documentation/usb/ इ टरन ट स स ल क: o o : मह श ज धव : mahesh7197@gmail.com : Page 67
69 लन स ड ह ईस य हर मर ठ त न :भ ग ११:स प ण य. एस. ब. ड ह ईस य हर म. लन स म य क ह य हर च क ड ह थ मक स य त ब ध न ठ वल आह त य च व पर आपण आपल क ड लह य स क शकत हणज च ज ह आपण नव न य एस ब ड ह ईस स ठ य हर लहण र अस त ह आपण श य प स न च ल न करत ड यर ट ह क ड र फर स ध न य त स ध रण क न आपण आपल ड ह ईस य हर लह शकत. अश य हर ल क ल टन य हर हणत त.त य एस ब क ल टन, मबफर क ल टन अस व गव गळ क ल टन य हर आप य लन स य य हर फ डर म य आपण स आढळ न य त त. य भ ग त आपण य एस ब क ल टन य हर प हण र आह त य त आपण य क ओळ च अथ प ह य आ ण प ण य हर समज व न घ व य. [न द:य आध पण य एस ब ड ह ईस य हरच आध च भ ग व चण गरज च आह ] तर आप य स ट म म य ह य हर drivers/usb/usb-skeleton.c य ल क शन ल आढळत आपण य य हर च २.२ ह ह ज न प ह य. य त म म जस आह तस ठ व न य क ओळ च अथ मर ठ त स प क न स गतल आह य च व पर आपणस क ड म य च ज स कर य स ठ ह इल.व आपणस प ण म समजल ज ईल. #include <linux/kernel.h> //कन ल ह डर printk स रख फ शन रन ह य स ठ #include <linux/errno.h> //एररच क ड य त असत #include <linux/init.h> // स स इ न शयल यझ शन #include <linux/slab.h> //kmalloc फ शन च लव य स ठ #include <linux/module.h> // ड ह ईस य हर लह य स ठ,म य सश नगड त ऑपर श स #include <linux/kref.h> //URB च र फर स क कर य स ठ #include <linux/uaccess.h> //user to/from ह फ शन व पर य स ठ #include <linux/usb.h> //य एस ब श नगड त फ श स #include <linux/mutex.h>// य य अल स म फ र ल क स ट कर य स ठ //आपण य ड ह ईस स ठ य हर ल हण र आह त य ड ह ईस च ड ट न बर आ ण ह डर न बर //ख ल डफ ईन क ल ज त. /* Define these values to match your devices */ #define USB_SKEL_VENDOR_ID 0xfff0 #define USB_SKEL_PRODUCT_ID 0xfff0 : मह श ज धव : mahesh7197@gmail.com : Page 68
70 // ड ह ईस ट बल म य आपल ड ह ईस र ज टर क ल ज त ज ण क न ज ह य ह डर आय ड //आ ण ड ट आय ड च ड ह ईस स ट मल ज डल ज ईल त ह आपल य हर आप आप डट ट ह ऊन ल ड ह इल. /* table of devices that work with this driver */ static const struct usb_device_id skel_table[] = USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID), /* Terminating entry */ ; MODULE_DEVICE_TABLE(usb, skel_table); //य थ आपण आप य ट बलच न व आ ण य एस ब ह प र म टर द त. /* Get a minor range for your devices from the usb maintainer */ #define USB_SKEL_MINOR_BASE 192 //य जर य र फर स स ठ म यनर न बर. /* our private defines. if this grows any larger, use your own.h file */ #define MAX_TRANSFER (PAGE_SIZE - 512) // ज त त ज त कत ड ट प ठवल ज ईल. /* MAX_TRANSFER is chosen so that the VM is not stressed by allocations > PAGE_SIZE and the number of packets in a page is an integer 512 is the largest possible packet on EHCI */ #define WRITES_IN_FLIGHT 8 /* arbitrarily chosen */ //ह ड ह ईस य हर चर आह,य त य हर य सव पट डफ ईन क य आह त. /* Structure to hold all of our device specific stuff */ struct usb_skel struct usb_device *udev; /* the usb device for this device */ struct usb_interface *interface; /* the interface for this device */ struct semaphore limit_sem; /* limiting the number of writes in progress */ struct usb_anchor submitted; /* in case we need to retract our submissions */ struct urb *bulk_in_urb; /* the urb to read data with */ unsigned char *bulk_in_buffer; /* the buffer to receive data */ size_t bulk_in_size; /* the size of the receive buffer */ size_t bulk_in_filled; /* number of bytes in the buffer */ size_t bulk_in_copied; /* already copied to user space */ u8 bulk_in_endpointaddr; /* the address of the bulk in endpoint */ u8 bulk_out_endpointaddr; /* the address of the bulk out endpoint */ int errors; /* the last request tanked */ bool ongoing_read; /* a read is going on */ bool processed_urb; /* indicates we haven't processed the urb */ spinlock_t err_lock; /* lock for errors */ struct kref kref; struct mutex io_mutex; /* synchronize I/O with disconnect */ struct completion bulk_in_completion; /* to wait for an ongoing read */ ; #define to_skel_dev(d) container_of(d, struct usb_skel, kref) static struct usb_driver skel_driver; static void skel_draw_down(struct usb_skel *dev); : मह श ज धव : mahesh7197@gmail.com : Page 69
71 //प ढ ल फ शन ह य हर क ढ न ट क य वर सव ग ट ल न कर य स ठ व परत त. static void skel_delete(struct kref *kref) struct usb_skel *dev = to_skel_dev(kref); usb_free_urb(dev->bulk_in_urb); //य आर ब म कळ क ल ज त. usb_put_dev(dev->udev); // ड ह ईस क टर एक न कम करत. kfree(dev->bulk_in_buffer); //बरफ क ल ज त. kfree(dev); // ड ह ईस ह त. //ह फ शन ड ह ईस ओपन झ य वर रन ह त. static int skel_open(struct inode *inode, struct file *file) struct usb_skel *dev; // ड ह ईस प टर struct usb_interface *interface; //इ टरफ स प टर int subminor; int retval = 0; subminor = iminor(inode); श धण. interface = usb_find_interface(&skel_driver, subminor);//य एस ब मध ल इ टरफ स if (!interface) pr_err("%s - error, can't find device for minor %d\n", func, subminor); retval = -ENODEV; goto exit; dev = usb_get_intfdata(interface); //इ टरफ स च ड ट ट अर करण. if (!dev) retval = -ENODEV; goto exit; /* increment our usage count for the device */ kref_get(&dev->kref); // ड ह ईस च कत व ळ व परल य च न द करण. /* lock the device to allow correctly handling errors * in resumption */ mutex_lock(&dev->io_mutex); // य ट स ल क ल वण. retval = usb_autopm_get_interface(interface); // ड ह ईसच ओट स प ड ड म ड च ल करण. if (retval) goto out_err; /* save our object in the file's private structure */ file->private_data = dev; //फ ईल य य ह ट ड ट म य इ टरफ सच म हत भरण. mutex_unlock(&dev->io_mutex);//ल क क ढ न घ ण. exit: : मह श ज धव : mahesh7197@gmail.com : Page 70
72 return retval; // ड ह ईस म कळ करण. static int skel_release(struct inode *inode, struct file *file) struct usb_skel *dev; dev = file->private_data; // य ह ट ड ट स ह करण. if (dev == NULL) return -ENODEV; करण. /* allow the device to be autosuspended */ mutex_lock(&dev->io_mutex); //ल क करण. if (dev->interface) usb_autopm_put_interface(dev->interface); // ड ह ईसच ओट स प ड ड म ड च ल mutex_unlock(&dev->io_mutex); //ल क क ढ न घ ण. /* decrement the count on our device */ kref_put(&dev->kref, skel_delete); // ड ह ईसच न बर एक न कम करण. return 0; //य फ शन च व पर आप य म म य आल य च क व चण,सव एरर फ ग रस ट करण आ ण ड ह ईस ओपन क य न तर म मर व छ करण. static int skel_flush(struct file *file, fl_owner_t id) struct usb_skel *dev; int res; dev = file->private_data; if (dev == NULL) return -ENODEV; /* wait for io to stop */ mutex_lock(&dev->io_mutex); // य ट स ल क करण. skel_draw_down(dev); /* read out errors, leave subsequent opens a clean slate */ spin_lock_irq(&dev->err_lock); // पन ल क स ट करण. res = dev->errors? (dev->errors == -EPIPE? -EPIPE : -EIO) : 0; dev->errors = 0; //च क व च न घ ण. spin_unlock_irq(&dev->err_lock); // पन ल क क ढ न ट कण. mutex_unlock(&dev->io_mutex); // य ट स अलल क करण. return res; //आपल ड ट यव थतपण व चल ग ल आह क न ह य च पडत ळण. static void skel_read_bulk_callback(struct urb *urb) struct usb_skel *dev; dev = urb->context; : मह श ज धव : mahesh7197@gmail.com : Page 71
73 spin_lock(&dev->err_lock); /* sync/async unlink faults aren't errors */ if (urb->status) if (!(urb->status == -ENOENT urb->status == -ECONNRESET urb->status == -ESHUTDOWN)) dev_err(&dev->interface->dev, "%s - nonzero write bulk status received: %d\n", func, urb->status); dev->errors = urb->status; //च क झ ल आह. else dev->bulk_in_filled = urb->actual_length; //ड ट यव थतपण प हचल आह. dev->ongoing_read = 0; spin_unlock(&dev->err_lock); complete(&dev->bulk_in_completion); //क ल ट स स झ ल आह. //ड ट व च य स ठ तय र ह ण., य आर ब स ट ग करण. static int skel_do_read_io(struct usb_skel *dev, size_t count) int rv; /* prepare a read */ //य आर ब म य ड ट भ न घ ण. usb_fill_bulk_urb(dev->bulk_in_urb, dev->udev, usb_rcvbulkpipe(dev->udev, dev->bulk_in_endpointaddr), dev->bulk_in_buffer, min(dev->bulk_in_size, count), skel_read_bulk_callback, dev); /* tell everybody to leave the URB alone */ spin_lock_irq(&dev->err_lock); dev->ongoing_read = 1; spin_unlock_irq(&dev->err_lock); /* do it */ //य आर ब स मत करण.ब क ए ड प टल ड ट प ठवण. rv = usb_submit_urb(dev->bulk_in_urb, GFP_KERNEL); if (rv < 0) dev_err(&dev->interface->dev, "%s - failed submitting read urb, error %d\n", func, rv); dev->bulk_in_filled = 0; rv = (rv == -ENOMEM)? rv : -EIO; spin_lock_irq(&dev->err_lock); dev->ongoing_read = 0; spin_unlock_irq(&dev->err_lock); return rv; : मह श ज धव : mahesh7197@gmail.com : Page 72
74 //ड ट व चण. static ssize_t skel_read(struct file *file, char *buffer, size_t count, loff_t *ppos) struct usb_skel *dev; int rv; bool ongoing_io; dev = file->private_data; /* if we cannot read at all, return EOF */ if (!dev->bulk_in_urb!count) return 0; /* no concurrent readers */ rv = mutex_lock_interruptible(&dev->io_mutex); if (rv < 0) return rv; if (!dev->interface) /* disconnect() was called */ rv = -ENODEV; goto exit; /* if IO is under way, we must not touch things */ retry: spin_lock_irq(&dev->err_lock); ongoing_io = dev->ongoing_read; //इनप ट आउटप ट स स प ण ह ऊ द ण. spin_unlock_irq(&dev->err_lock); if (ongoing_io) /* nonblocking IO shall not wait */ if (file->f_flags & O_NONBLOCK) rv = -EAGAIN; goto exit; /* * IO may take forever * hence wait in an interruptible state */ rv = wait_for_completion_interruptible(&dev->bulk_in_completion); if (rv < 0) goto exit; /* * by waiting we also semiprocessed the urb * we must finish now */ dev->bulk_in_copied = 0; dev->processed_urb = 1; if (!dev->processed_urb) /* * the URB hasn't been processed * do it now */ wait_for_completion(&dev->bulk_in_completion); dev->bulk_in_copied = 0; dev->processed_urb = 1; : मह श ज धव : mahesh7197@gmail.com : Page 73
75 /* errors must be reported */ rv = dev->errors; if (rv < 0) /* any error is reported once */ dev->errors = 0; /* to preserve notifications about reset */ rv = (rv == -EPIPE)? rv : -EIO; /* no data to deliver */ dev->bulk_in_filled = 0; /* report it */ goto exit; /* * if the buffer is filled we may satisfy the read * else we need to start IO */ if (dev->bulk_in_filled) /* we had read data */ size_t available = dev->bulk_in_filled - dev->bulk_in_copied; size_t chunk = min(available, count); if (!available) /* * all data has been used * actual IO needs to be done */ rv = skel_do_read_io(dev, count); //ड ट व चण. if (rv < 0) goto exit; else goto retry; /* * data is available * chunk tells us how much shall be copied */ if (copy_to_user(buffer, dev->bulk_in_buffer + dev->bulk_in_copied, chunk)) //ड ट य जर म मर बरफ म य स ठवण. rv = -EFAULT; else rv = chunk; dev->bulk_in_copied += chunk; /* * if we are asked for more than we have, * we start IO but don't wait */ if (available < count) skel_do_read_io(dev, count - chunk); else /* no data in the buffer */ rv = skel_do_read_io(dev, count); if (rv < 0) goto exit; else if (!(file->f_flags & O_NONBLOCK)) goto retry; : मह श ज धव : mahesh7197@gmail.com : Page 74
76 exit: rv = -EAGAIN; mutex_unlock(&dev->io_mutex); return rv; //आपल ड ट यव थतपण ल हल ग ल आह क न ह य च पडत ळण. static void skel_write_bulk_callback(struct urb *urb) struct usb_skel *dev; dev = urb->context; //एरर आल आह क न ह त च क करण. /* sync/async unlink faults aren't errors */ if (urb->status) if (!(urb->status == -ENOENT urb->status == -ECONNRESET urb->status == -ESHUTDOWN)) dev_err(&dev->interface->dev, "%s - nonzero write bulk status received: %d\n", func, urb->status); spin_lock(&dev->err_lock); dev->errors = urb->status; spin_unlock(&dev->err_lock); //क म झ य वर DMA बफर क न द ण. /* free up our allocated buffer */ usb_free_coherent(urb->dev, urb->transfer_buffer_length, urb->transfer_buffer, urb->transfer_dma); up(&dev->limit_sem); \\ड ट ल हण. static ssize_t skel_write(struct file *file, const char *user_buffer, size_t count, loff_t *ppos) struct usb_skel *dev; int retval = 0; struct urb *urb = NULL; char *buf = NULL; size_t writesize = min(count, (size_t)max_transfer);//ड ट च स य आ ण ज त त ज त ड ट सफर कर य च मत य प क लह न स य नवडण. dev = file->private_data; /* verify that we actually have some data to write */ if (count == 0) //ड ट आह क न ह त प हण. goto exit; /* * limit the number of URBs in flight to stop a user from using up all * RAM */ if (!(file->f_flags & O_NONBLOCK)) if (down_interruptible(&dev->limit_sem)) retval = -ERESTARTSYS; : मह श ज धव : mahesh7197@gmail.com : Page 75
77 goto exit; else if (down_trylock(&dev->limit_sem)) retval = -EAGAIN; goto exit; spin_lock_irq(&dev->err_lock); retval = dev->errors; if (retval < 0) /* any error is reported once */ dev->errors = 0; /* to preserve notifications about reset */ retval = (retval == -EPIPE)? retval : -EIO; spin_unlock_irq(&dev->err_lock); if (retval < 0) goto error; /* create a urb, and a buffer for it, and copy the data to the urb */ urb = usb_alloc_urb(0, GFP_KERNEL);//य आर ब तय र करण आ ण य स म मर द ण. if (!urb) retval = -ENOMEM; goto error; buf = usb_alloc_coherent(dev->udev, writesize, GFP_KERNEL, &urb->transfer_dma); //DMA व प न ड ट सफर करण. if (!buf) retval = -ENOMEM; goto error; //ड ट य जर बफर कड न ड ह ईस य हर बफर म य ल हण. if (copy_from_user(buf, user_buffer, writesize)) retval = -EFAULT; goto error; /* this lock makes sure we don't submit URBs to gone devices */ mutex_lock(&dev->io_mutex); if (!dev->interface) /* disconnect() was called */ mutex_unlock(&dev->io_mutex); retval = -ENODEV; goto error; //य आह ब स ट करण. /* initialize the urb properly */ usb_fill_bulk_urb(urb, dev->udev, usb_sndbulkpipe(dev->udev, dev->bulk_out_endpointaddr), buf, writesize, skel_write_bulk_callback, dev); urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP; usb_anchor_urb(urb, &dev->submitted); //ब क ए ड प टल ड ट प ठवण, /* send the data out the bulk port */ retval = usb_submit_urb(urb, GFP_KERNEL); mutex_unlock(&dev->io_mutex); if (retval) dev_err(&dev->interface->dev, : मह श ज धव : mahesh7197@gmail.com : Page 76
78 "%s - failed submitting write urb, error %d\n", func, retval); goto error_unanchor; /* * release our reference to this urb, the USB core will eventually free * it entirely */ usb_free_urb(urb); //य आर ब म कळ करण. return writesize; error_unanchor: usb_unanchor_urb(urb); error: if (urb) usb_free_coherent(dev->udev, writesize, buf, urb->transfer_dma); usb_free_urb(urb);//एरर आ य स बफर व य आर ब ल न करण. up(&dev->limit_sem); exit: return retval; // ड ह ईसच सव फ ईल ऑपर शन य थ डफ ईन क ल आह त. वर दल ल सव फ श स य थ ड ल अर क ल आह त. static const struct file_operations skel_fops =.owner = THIS_MODULE,.read = skel_read,.write = skel_write,.open = skel_open,.release = skel_release,.flush = skel_flush,.llseek = noop_llseek, ; /* * usb class driver info in order to get a minor number from the usb core, * and to have the device registered with the driver core */ //य एस ब ल स ड फन शन- क ल टन च न व आ ण फ ईल ऑपर शन च प इ टर डफ ईन क ल आह. static struct usb_class_driver skel_class =.name = "skel%d",.fops = &skel_fops,.minor_base = USB_SKEL_MINOR_BASE, ; // ब फ शन ड फन शन static int skel_probe(struct usb_interface *interface, const struct usb_device_id *id) struct usb_skel *dev; struct usb_host_interface *iface_desc; struct usb_endpoint_descriptor *endpoint; size_t buffer_size; int i; int retval = -ENOMEM; : मह श ज धव : mahesh7197@gmail.com : Page 77
79 /* allocate memory for our device state and initialize it */ dev = kzalloc(sizeof(*dev), GFP_KERNEL); if (!dev) dev_err(&interface->dev, "Out of memory\n"); goto error; kref_init(&dev->kref); sema_init(&dev->limit_sem, WRITES_IN_FLIGHT); mutex_init(&dev->io_mutex); spin_lock_init(&dev->err_lock); init_usb_anchor(&dev->submitted); init_completion(&dev->bulk_in_completion); dev->udev = usb_get_dev(interface_to_usbdev(interface)); dev->interface = interface; /* set up the endpoint information */ /* use only the first bulk-in and bulk-out endpoints */ //इन आ ण आउट ए ड प ट स ध ण र फ शन iface_desc = interface->cur_altsetting; for (i = 0; i < iface_desc->desc.bnumendpoints; ++i) endpoint = &iface_desc->endpoint[i].desc; if (!dev->bulk_in_endpointaddr && usb_endpoint_is_bulk_in(endpoint)) /* we found a bulk in endpoint */ buffer_size = usb_endpoint_maxp(endpoint); dev->bulk_in_size = buffer_size; dev->bulk_in_endpointaddr = endpoint->bendpointaddress; dev->bulk_in_buffer = kmalloc(buffer_size, GFP_KERNEL); if (!dev->bulk_in_buffer) dev_err(&interface->dev, "Could not allocate bulk_in_buffer\n"); goto error; dev->bulk_in_urb = usb_alloc_urb(0, GFP_KERNEL); if (!dev->bulk_in_urb) dev_err(&interface->dev, "Could not allocate bulk_in_urb\n"); goto error; if (!dev->bulk_out_endpointaddr && usb_endpoint_is_bulk_out(endpoint)) /* we found a bulk out endpoint */ dev->bulk_out_endpointaddr = endpoint->bendpointaddress; if (!(dev->bulk_in_endpointaddr && dev->bulk_out_endpointaddr)) dev_err(&interface->dev, "Could not find both bulk-in and bulk-out endpoints\n"); goto error; /* save our data pointer in this interface device */ usb_set_intfdata(interface, dev); /* we can register the device now, as it is ready */ retval = usb_register_dev(interface, &skel_class); if (retval) : मह श ज धव : mahesh7197@gmail.com : Page 78
80 /* something prevented us from registering this driver */ dev_err(&interface->dev, "Not able to get a minor for this device.\n"); usb_set_intfdata(interface, NULL); goto error; error: /* let the user know what node this device is now attached to */ dev_info(&interface->dev, "USB Skeleton device now attached to USBSkel-%d", interface->minor); return 0; if (dev) /* this frees allocated memory */ kref_put(&dev->kref, skel_delete); return retval; //प न ई ह क ढ न ट क य वर रन ह ण र फ शन //य त ड ह ईस ड र ज टर क न म मर क ल ज त. static void skel_disconnect(struct usb_interface *interface) struct usb_skel *dev; int minor = interface->minor; dev = usb_get_intfdata(interface); usb_set_intfdata(interface, NULL); /* give back our minor */ usb_deregister_dev(interface, &skel_class); /* prevent more I/O from starting */ mutex_lock(&dev->io_mutex); dev->interface = NULL; mutex_unlock(&dev->io_mutex); usb_kill_anchored_urbs(&dev->submitted); /* decrement our usage count */ kref_put(&dev->kref, skel_delete); dev_info(&interface->dev, "USB Skeleton #%d now disconnected", minor); //ट यमर क उ टर फ शन static void skel_draw_down(struct usb_skel *dev) int time; time = usb_wait_anchor_empty_timeout(&dev->submitted, 1000); if (!time) usb_kill_anchored_urbs(&dev->submitted); usb_kill_urb(dev->bulk_in_urb); // ड ह ईस थ य व ळ न तर ब द क ल ज त व ड ह ईस व परल ज त नसत न य च प वर व चवल ज त. static int skel_suspend(struct usb_interface *intf, pm_message_t message) struct usb_skel *dev = usb_get_intfdata(intf); : मह श ज धव : mahesh7197@gmail.com : Page 79
81 if (!dev) return 0; skel_draw_down(dev); return 0; // ड ह ईस ल ग ल त ह त परत र य म करण. static int skel_resume(struct usb_interface *intf) return 0; // ड ह ईस र स ट कर य आध य च ट ट स ह क न ठ वण र फ शन. static int skel_pre_reset(struct usb_interface *intf) struct usb_skel *dev = usb_get_intfdata(intf); mutex_lock(&dev->io_mutex); skel_draw_down(dev); return 0; // ड ह ईस र स ट ह ऊन परत आ य वर य स य च प व च ट ट द य स दभ त ह फ शन व परल ज त. static int skel_post_reset(struct usb_interface *intf) struct usb_skel *dev = usb_get_intfdata(intf); /* we are sure no URBs are active - no locking needed */ dev->errors = -EPIPE; mutex_unlock(&dev->io_mutex); return 0; //य एस ब ड ह ईस य हर ड फन शन static struct usb_driver skel_driver =.name = "skeleton",.probe = skel_probe,.disconnect = skel_disconnect,.suspend = skel_suspend,.resume = skel_resume,.pre_reset = skel_pre_reset,.post_reset = skel_post_reset,.id_table = skel_table,.supports_autosuspend = 1, ; module_usb_driver(skel_driver); MODULE_LICENSE("GPL"); : मह श ज धव : mahesh7197@gmail.com : Page 80
82 लन स ड ह ईस य हर मर ठ त न :भ ग १२ : ड ह ईस य हर ल क: स म फ स, य ट स ल क, पन ल क. आप य स गणक त एक च व ळ अन क स स च ल असत त,ब य चद अन क ड एक च म मर वर क म करत असत त अश व ळ जर य च म न जर यव थतपण झ ल न ह तर य ड म य ग त ह ऊन आपल स ट म ह ग क व श ह ऊ शकत.एख द म मर इतर क ण ह व परत न ह ह प ह न व परण व वत त म मर व पर त असत न त ल क क न ठ वण य स ल क ग क व य य अल ए ल जन हणत त. ल क ग च द न म ख क र पडत त:स म फ स आ ण पन ल क. सम फ स :ह ल क एकच व ळ फ त एक ल च एख द रस स व प द त य स ल प ग ल क अस ह हणत त. आपण ज ह ल क करण र आह त त ह down() ह कम ड द ण आपल ड ट वर न क म क न घ ण आ ण क म झ य वर up() ह कम ड व प न स म फ र ल क मध न ब ह र पडण.आ ण प ढ ल क ण ल त रस स ख ल क न द ण. एख य स सल एख द रस स हव अस ल आ ण त रस स जर द स य स स न ल क क ल अस ल तर तर त स स वत ल ल प म ड म य ट कत आ ण ज ह हव असल ल रस स म कळ ह ईल त ह त स स ल प मध न ज ग ह त आ ण स म फ र व प न य रस स च क ल वत य त य त घ त. य स म फ र च प शल ट ईप हणज य ट स:ह ब यनर म ड[०/१] म य क म करत अस न य त द नच ट ट [ल क /अनल क] मध ल ऑपर शन च लत त. हणज च ह एक व ळ फ त एक च ट क ल क क शकत पण स म फ र ह एकव ळ अन क ट क ह डल क शकत त. थम ह य ट स इ न शयल ईझ कर व ल गत. static DECLARE_MUTEX(my_lock); न तर त down कम ड व प न ल क क न घ ण. ड ऊन ह फ शन स म फ रच ह य एक न कम करत. down(&my_lock); य न तर आपल रस स वर ल क म क न घ ण. : मह श ज धव : mahesh7197@gmail.com : Page 81
83 न तर up कम ड व प न ल क रल ज करण. up(&my_lock); पन ल क: सम फ स ह एक च व ळ एख य रस स वर क म करण य स स प स न रस स च बच व करत त तर पन ल क ह ल प ग ल क न ह त तर त आप य ट कल स शन म मर ल इतर म कड न ह ण य ह त प प स न बच वत त.जर एख य फ शन ल जर ल क मळत नस ल तर त तथ च व ट प हत बस न र हत. य त स सर च NOP न ऑपर शन ह कम ड रन ह त र हत. य व ळ स स सर ब क क म म रत न ह हण न पन ल कच व ळ कम तकम ठ व व.य म ळ पन ल क करत न च बर च ब ल ट ळत य त त. कन ल म य बर चद पन ल क ह च व परल असत.जस क इ ट ह डलर स र य म म य ह म त परफ म स द त. य त जर द स य फ शन न ल क मळवल ल अस ल तर क ड एक ल प म य ज त य त त सतत ल क म कळ झ ल क न ह त प हत र हत य स पन हणत त. य ल कच म ट स सर स ट मम य फ र उपय ग ह त. पन ल क च फ श स <linux/spinlock.h>य फ ईल म य डफ ईन क ल ल असत त. पन ल क ड ल अर प ढ ल म ण करत त. struct spinlock my_lock; spin_lock_init(&my_spin_lock); पन ल क ह प ढ ल फ श स व प न घ तल ज त. spin_lock(&my_lock); आ ण प ढ ल फ शन व प न क ढ न घ तल ज त. spin_unlock(&my_lock); द स य स स म य रन ह ण य इ ट प स न आप य ड ट च बच व कर य स ठ आपण पन ल क व प शकत. : मह श ज धव : mahesh7197@gmail.com : Page 82
84 लन स ड ह ईस य हर मर ठ त न :भ ग १३: ड ल ड ह ईस य हर ब सक. ह डओ ड ह ईस ह ड ल वर द खव य स ठ ह य अल आउटप ट ड ट तय र करत त. लन स ह डओ स ट म ह म बफर ल यस तय र क न द ऊन ह ड व अर च ज स वर डप ड बल नसण र स ट म स वध तय र क न द त. हड ओ फ स क ड च ह ड व अर ह व गव ग य क रच असत. य म ल आपणस व गव गळ क ड ग कर व ल ग शकत ह ल म ट ळ य स ठ लन स म य म बफर च ल यर तय र क ल ज त. य च व पर क न अ लक शनम य क णत ह बदल न करत अ लक श स व गव ग य ह ड व अर वर च ल शकत.आपण व पर त असल ल क ह व ब ऊजर, हड ओ ल यस अश अ लक श स ड यर ट मबफर व प न फ स ह ड व अरश ड ट सफर ऑपर शन करत त. म बफर क स ट: ख ल ल च त द खव य म ण म ह ल यर क मन म बफर ए. प. आय. च व पर क न व गव य हड ओ क ड बर बर ड ट सफर करत त.य व न आपण स म बफर च फ यद क य आह त समजल अस लच.x-windows स रख क ह अ लक श स APIच व पर न करत ड यर ट ह ड व अर श स भ षण स ध शकत त. : मह श ज धव : mahesh7197@gmail.com : Page 83
85 आप य ट म नस व ड म य आपण fbset ह कम ड दल असत त आप य मबफर य हर म फ त ड ल च स ट ज आपण स पह वय स मळत ल.य त रझ य शन, व स,ट य म ग, ह ट कल स क,ह र झ टल स क य च स व तर म हत मळ ल. म बफर API: म बफर API च व पर करत न क ह म य ड ट चर म हत असण गरज च आह त प ढ ल म ण : 1) struct fb_var_screeninfo.:य चर म य ड ल न च क ह बदलत य ण य ग ट ठ वल य असत त उद : रझ य शन,म ज न ह स ट ज मर बदल शकत. 2) struct fb_fix_screeninfo :य ड ट चर म य हड ओ ह ड व अर च फ स म हत ठ वल ल असत जस क मबफर म मर च स ईझ, ट ट ग च अ स. 3) fb_cmap :ह चर म बफरच कलर म प ठरवत.य जर य म फ त र ड, ल, न [RGB]य कलस य स य ठरव शकत. तस च य त सपर स स ट कर य च ह स वध आह. मबफर य हर: आपण आप य ड ल बर बर मबफर य हर न स भ षण करण र आह त य त आपण म बफर म मर ल क शन बर बर इ टरअ ट करण हणज ड ल वर दसण य क ट ट म य बदल घडवण क रण य च मबफर म म र त ल ड ट ह आपण स नवर दसत असत. : मह श ज धव : mahesh7197@gmail.com : Page 84
86 ड ट चस : struct fb_info :ह मबफर ड ह ईस य हर मध ल म ख ड ट चर आह.ह चर include/linux/fb.h य थ डफ ईन क ल ल असत. struct fb_info /*... */ struct fb_var_screeninfo var; /* Variable screen information. struct fb_fix_screeninfo fix; /* Fixed screen information. /*... */ struct fb_cmap cmap; /* Color map. /*... */ struct fb_ops *fbops; /* Driver operations. /*... */ char iomem *screen_base; /* Frame buffer's virtual address */ unsigned long screen_size; /* Frame buffer's size */ /*... */ /* From here on everything is device dependent */ void *par; /* Private area */ ; वर ल चर म य आपण शकल ल न फ स इ फ, न ह रएबल इ फ,कलर म प ह ड ट चर डफ ईन क ल आह त तस च फ ईल ऑपर शन स ठ व पर य त य ण र fb_ops ह चर स आह. क न बफर च स ईझ आ ण ब स अ स डफ ईन क ल आह त. य त आप य ड ह ईसश नगड त असल ल ड ट ह par य प टरम य ठ वल ल असत. framebuffer_alloc() ह म थड व प न fb_info स ठ म मर अल क ट क ल ज त. : मह श ज धव : mahesh7197@gmail.com : Page 85
87 fb_ops ह चर: fb_ops ह चर ह म बरफ य हरस ठ ए प ट द त त.प हल क ह फ शन ह य हर फ शन रन ह य स ज र असत त तर क ह ऑ शनल असत त ह फ शन फ सश स ब धत असत त.fb_ops य च चर प ढ ल म ण आह. struct fb_ops struct module *owner; /* य हर ओपन करण */ int (*fb_open)(struct fb_info *info, int user); /* य हर क ज करण */ int (*fb_release)(struct fb_info *info, int user); /* ह रएबल न इ फ व प न ड ह ईसच प र म टर यव थ त आह त क न ह त त च क करण.*/ int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info); /* हड ओ क लर च र ज ट र स ट करण */ int (*fb_set_par)(struct fb_info *info); /* कलर र ज टर प र म टर स ट करण. */ int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, unsigned blue, unsigned transp, struct fb_info *info); /* ड ल ल क करण */ int (*fb_blank)(int blank, struct fb_info *info); /* प ढ ल म थड य फ स क ड च व पर करत त. */ /* र टअ गल च क न ए रय ह प स लन भ न घ त. */ void (*fb_fillrect)(struct fb_info *info,const struct fb_fillrect *rect); /* च क न च क ह भ ग एक भ ग कड न द सर कड क प कर य स ठ */ void (*fb_copyarea)(struct fb_info *info,const struct fb_copyarea *region); /* ड ल वर च क ढ य स ठ */ void (*fb_imageblit)(struct fb_info *info,const struct fb_image *image); /* ड ल र ट ट कर य स ठ */ void (*fb_rotate)(struct fb_info *info, int angle); /* ड ह ईसश स ब धत आय ओ सल ट इ टरफ स कम ड */ int (*fb_ioctl)(struct fb_info *info, unsigned int cmd, unsigned long arg); /*... */ : मह श ज धव : mahesh7197@gmail.com : Page 86
88 प र म टर च क आ ण स ट करण : fb_check_var() : ह म थड ड ह ईस वर ब सक च क ऑपर शन करत त रझ य शन ब ट पर प स ल य ह य च क करत RGB फ म ट स ट करत. fb_set_par(): ह म थड एल स ड क लर य र ज टर य स ट ग स ट करत.य त म ज न स ट ग य त.तस च size_reg म य र झ य शन स ट ग,आ ण DMA_REGम य ड.एम.ए. स ट क ल ज त, य च व पर ड यर ट म मर ए स स स ठ ह त. कलर म ड: स ड [psudo] कलर आ ण [true]कलर ह द न कर च कलर म ड आह त. प स ल ह य प कलर ह य ल इ ड स क ल असत आपण आप य म बफर म मर च ज ग व चव शकत. य स ठ आपणस आपल ह ड व अर कलर स ट [palette]ल सप ट द ण र हव. एल स ड म य १६ ब ट / प स ल आ ण RGB565 फ म ट व परत त य च अथ fb_check_var() फ शन ब ट ऑफस ट ह य र ड, न, य स ठ अन म ११,५,० अस घ त त. [०-५ (५): य,५-११(६): न,११-१६[५]:र ड] fb_set_par() फ श स अ फ ल ड ग च व पर क न प स ल ह य आ ण ब क उ ड ह म स करत.RGB न एनक ड गस ठ व परल ल ब ट ल थ [५+६+५=१६] य स कलर ड थ हणत त.य च व पर क न मबफर य हर आप य क य टर मध ल ब ट ल ग इम ज ड ल वर द खवत त. न ल क ग: fb_blank() ह फ शन ड ल ल क ग आ ण अन ल क गल सप ट करत. ह स वध प वर म न जम ट स ठ व परल ज त. आपल ड ल १० म नट स ठ ल क ठ व य स ठ setterm -blank 10 ह कम ड व पर व. ह कम ड CTRL_REG म य ल क ग स ठ च ह य स ट क न fb_blank() ह फ शन क ल करत.आ ण ड ल ल क करत. : मह श ज धव : mahesh7197@gmail.com : Page 87
89 ए स ल र ट ड म थड: ए स ल र ट ड म थड य म थड हड ओ आ ण फ स च म ठ म ठ ऑपर श स कर य स ठ व परत त. स टम म य ड ल वर ल ड ग, च ग,ब ट म प म ह करण य स र य ग ट कर य स ठ फ स ह ड व अर असण गरज च आह.fb_ops य चर म य आपण ए स ल र ट ड म थड च ल ट प हल आह च. य म य फ स क ड च प शल स वध आ ण स ध रण च व पर क न अ धक च गल च नवर प हत य त. fb_imageblit() म थड ड ल वर इम ज तय र करत जर आप य स ट म म य फ स क ड नस ल तर फ म बफर य हर cfb_imageblit() ह य च म थड स ध फ शन रन करत. ह फ शन पण त च क म करत पण ह फ स ह ड व अर च प वर व पर त न ह.आप य नवर ब ट इम ज आणत न ह फ शन व परल ज त. fb_copyarea() ह फ शन नच क ह भ ग एक भ ग कड न द सर कड क प कर य स व परल ज त. fb_fillrect()ह फ शन क नच क ह भ ग प स ल र ष न भ र वल ज त. मबफर कड न ड यर ट म मर ए स स : DMA इ जन स ट म म मर व न मच ड ट घ व न स सर म फ त स स क न त फ स ड ट नवर द खवल ज त. ड ल य र श र ट वर DMA च र ट अवल ब न असत. मबफर क हर ट DMA अ स स र ख न ठ व य स ठ myfb_probe()फ शन म य dma_alloc_coherent()म थड व परल ज त. myfb_set_par() म थडन DMA च अ स क लर य DMA_REG य र ज ट र म य ल हल ज त. : मह श ज धव : mahesh7197@gmail.com : Page 88
90 ज ह य हर myfb_enable_controller() फ शन व प न DMA च ल करत त ह क लर ड यर ट म मर अ स स च व पर क न प स ल ड ट मबफर कड न घ ऊन ड ल वर द खवत. क ट आ ण ईटन स : एल स ड क लर CONTRAST_REG र ज टर च व पर क न क ट क ल करत. स सर जनरल पप ज इ प ट आउटप ट ल ईन च व पर क न ईटन स क ल करत. backlight_device_register() य र ज टर च व पर क न ब क ल ईट क ल करत य त. ड ल य हरवर प ढ अ य स कर य स ठ प ढ ल ल कल भ ट य.: लन स मबफर ज ट च ल क: o आप य लन स स टम मध ल मबफर य हर च ल क शन: o drivers/video/*fb.c मबफर क ल टन य हर: o drivers/video/*fb.c ड ल य हर स र श: कन ल इ टरफ स स ठ ल गण र ड ल ड ह ईस य हर च फ श स प ढ ल म ण : register_framebuffer() unregister_framebuffer() framebuffer_alloc() framebuffer_release() fb_alloc_cmap() fb_dealloc_cmap() dma_alloc_coherent() dma_free_coherent() मबफर ड ह ईस र ज टर करण. मबफर ड ह ईस म कळ करण. fb_info चर म ठ म मर अल क ट करण. अल क ट क ल ल म मर म कळ करण. कलर म प अल क ट करण. कलर म प म कळ करण DMA च म प ग क न म मर अल क ट करण. DMA बफर च म मर म कळ करण. : मह श ज धव : mahesh7197@gmail.com : Page 89
91 लन स ड ह ईस य हर मर ठ त न :भ ग १४: ड ह ईस य हर ड बगर ट स. आपण आपल ड ह ईस य हर ल ड करत न क व व परत न स ट म श,एरर व ड क व क ह तर च क च उ तर मळत अस य स ड हलपस ल त स डव व ल गत. आप य ल आल ल प ल म क ठ न आल य च अ य स कर य स ठ ड बगर व परत त. पण म य अन भव न स र सव त च गल ड ब ग ग ट नक हणज printk फ शन.printk च क ळज प व क व पर आपणस ब य च ग ट च म हत दव शकत.. आपण म लहत न य क आउटप ट व स ट ज printk च व पर क न द श त क शकत व य ह ल च व पर क न न क क ठ न ल म आल त श ध शकत. तस च क म झ य वर अश स ग स ठ व परल ल printk कम स द ऊन लपव शकत. ड ब ग ग स ठ प ढ ल ट स उपल द आह त. ड ट ड ल ड बगर:ddd फकल ड ल ड बगर :gdb कन ल फकल ड ल ड बगर :kgdb वर ल ट स च व पर क न आपण अ धक च ग य क र ड ब ग ग क शकत पण ह ट स व पर य आध त क फगर कर य च गरज असत. ह ट स शक य च उ तम प त ह ज आप य स ट मवर ह ट स इ त ल कर यच आ ण गरज ल ग ल त ह ड ब ग ग ट ट कर यच. अश र त न आपण य भ ग पय त ब सक लन स ड ह ईस य हर ब ल य सव ब सक ग ट शकल आह त. ह प तक आप य ल लन स ड ह ईस य हर य ब सक ग ट स य आ ण स य भ ष त समज न घ य स न क च उपय ग पडल अस ल य त श क च न ह. आपणस ह प तक कस व टल य ब ल ऐक यल मल न क च आवड ल तस च आपणस क ह स ध रण स चव य य असत ल तर न क कळव. : मह श ज धव : mahesh7197@gmail.com : Page 90
92 स दभ : र फर स प तक : Jonathan Corbet,Alessandro Rubini and Greg Kroah-Hartman. Linux Device Drivers,3rd Edition, :O Relly publications, July Sreekrishanan Vekanteswaran. Essential Linux Device Drivers :Pearson Edition,2009. Jon Masters and Richard Blum. Professional Linux programming :Wiley India Edition,2007. John Muster. UNIX made easy,3rd Edition: New Delhi: Tata McGraw-Hill Edition,2002. म सक : Linux For You Magazine. Free Software Magazine म ग ग ईड: Detlef Fliegl.Programming Guide for Linux Device Drivers. इ टरन ट ग ईड: ग गल, व कप डय, लन सश नगड त अन क व बस ईट, लन स क य नट...Finally..we can conclude the book with following line.. open source is the only right way to do software and best tool for doing the job Linus Torvalds : मह श ज धव : mahesh7197@gmail.com : Page 91
93 मर ठ आव त ल खक:मह श स भ ज ज धव ल ग : स पक : ID : mahesh7197@gmail.com BOLMJ मर ठ क शन आव त न आ ण त न आप य स ठ आप य भ ष त स प ण लन स ड ह ईस य हर मर ठ त न. लन स स रव त प स न त मर पय त. ड ह ईस य हर य क स ट स य भ ष त. मच सख ल म हत सव ट ससह म हत. सव म आउटप टच छ य च. Knowledge across the world should be Open to all, Free of cost, Easy to adopt and should available in our mother tongue. --BOLMJ
Mycket formellt, mottagaren har en speciell titel som ska användas i stället för namnet नमस क र
- Öppning Svenska Hindi Bäste herr ordförande, म नन य र ष ट र पत ज, Mycket formellt, mottagaren har en speciell titel som ska användas i stället för namnet Bäste herrn, Formellt, manlig mottagare, namnet
Läs meroa'khèkj 'kqdy ds dko; esa lkekftd psruk
oa'khèkj 'kqdy ds dko; esa lkekftd psruk M å vkhkk 'kqdyk vfllvsav çksqslj] Çgnh fohkkx],lå Mhå,lå,uå fmxzh d yst] y[kuå] mùkj çns'k] Hkkjr अवध स ट व श धर श ल क ण स ओत- त म नवत व द क व ह उ ह न स म जक ज
Läs merAffärer Brev. Brev - Adress
- Adress Mr. J. Rhodes Rhodes & Rhodes Corp. 212 Silverback Drive California Springs, CA 92926 Amerikanskt adressformat: Företagsnamn Stadens namn + statens namn + statens förkortning + postnummer मह.
Läs merçkf/kdkj ls çdkf'kr PUBLISHED BY AUTHORITY WEEKLY
jftlvªh la- th&3@mh,y ¼,u½ 04@0009@2003 05 Hkkjr ljdkj REGD. No. G-3/DL (N)-04/0009/2003 05 GOVERNMENT OF INDIA la- 3] çkf/kdkj ls çdkf'kr PUBLISHED BY AUTHORITY lkirkfgd WEEKLY fnyyh] vizsy 13&vizSy 19]
Läs merम झ... क ब र म आपक बत न म ख श
- Inledning Dear Sir, Formellt, manlig mottagare, namnet okänt Dear Madam, Formellt, kvinnlig mottagare, namnet okänt Dear Sir / Madam, Formellt, både mottagarens namn och kön är okända Dear Sirs, Formellt,
Läs merAffärer Brev. Brev - Adress
- Adress Portugisiska Mr. J. Rhodes Rhodes & Rhodes Corp. 212 Silverback Drive California Springs CA 92926 Hindi Amerikanskt adressformat: Företagsnamn Stadens namn + statens namn + statens förkortning
Läs merPersonligt Lyckönskningar
- Giftermål Gratulerar. Jag/Vi önskar er båda all lycka i världen. Används att gratulera ett nygift par Vi vill gratulera och framföra hjärtliga lyckönskningar till er båda på er bröllopsdag. Används att
Läs merPersonligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६
- Adress Mr. N. Summerbee Tyres of Manhattan 335 Main Street New York NY 92926 एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६ Standard engelskt adressformat:, företagets namn, gatunummer
Läs merPersonligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६
- Adress Mr. N. Summerbee Tyres of Manhattan 335 Main Street New York NY 92926 एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६ Standard engelskt adressformat:, företagets namn, gatunummer
Läs merPersonligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६. Mr. N. Summerbee 335 Main Street New York NY 92926
- Adress Mr. N. Summerbee 335 Main Street New York NY 92926 एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६ Standard engelskt adressformat:, företagets namn, gatunummer + gatunamn, namn
Läs merPersonligt Lyckönskningar
- Giftermål Congratulations. Wishing the both of you all the happiness in the world. Används att gratulera ett nygift par Congratulations and warm wishes to both of you on your wedding day. Används att
Läs merPersonligt Brev. Brev - Adress. Nederländska
- Adress Hans van der Meer, Stationslaan 87, 1011 Amsterdam एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६ Standard engelskt adressformat:, företagets namn, gatunummer + gatunamn, namn
Läs merPersonligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६
- Adress Cardinelli Domenico & Vittorio via delle Rose, 18 Petrignano 06125 Perugia एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६ Standard engelskt adressformat:, företagets namn,
Läs merAffärer Brev. Brev - Adress
- Adress Grekiska Mr. J. Rhodes Rhodes & Rhodes Corp. 212 Silverback Drive California Springs CA 92926 Hindi Amerikanskt adressformat: Företagsnamn Stadens namn + statens namn + statens förkortning + postnummer
Läs merMr. Adam Smith Smith's Plastics 8 Crossfield Road Selly Oak Birmingham West Midlands B29 1WQ
- Adress मह. ज. र ड स र ड स ऐ ड र ड स क र प. २१२ स ल वरब क ड र ईव क ल फ र न य स प र ग स स.ए. ९२९२६ Amerikanskt adressformat: Företagsnamn Stadens namn + statens namn + statens förkortning + postnummer
Läs merम थन क म त स ल ख स म त भ र म ज म नधन
म थन क म त स ल ख स म त क थम र य तर क नब ध तय गत " म हल ओ क श क व प क स ह " न सफलत क नए क त म न बन ए य सफलत र य न त व, स ल ख सद य व सभ द श पद धक रय क स गठन क त सम प त सदभ वन क प रण म ह सत ईस द श स इ य स
Läs merS.No. Details Hearing date Time slot Sh. Mukesh
S.No. Details Hearing date Time slot Sh. Mukesh 1 /o. A-24, ajiv Nagar New Delhi 110 086 2 Sh. ajiv Kumar H. No. 311, V.P.O. Pooth Kalan, Delhi 110 041 3 4 Sh. ajivir S/o Sh. Nandlal Yadav Village Paprawat,
Läs merPersonligt Lyckönskningar Lyckönskningar - Giftermål Japanska おめでとうございます 末永くお幸せに Används att gratulera ett nygift par おめでとうございます どうぞお幸せに Används att g
- Giftermål おめでとうございます 末永くお幸せに Används att gratulera ett nygift par おめでとうございます どうぞお幸せに Används att gratulera ett nygift par त म ह र श द क अवसर पर बध ई ह. म र आश र व द ह क त म सद स ख रह. स म गल भव 結婚おめでとう!
Läs merAcademic Year
3.3 श क और श क क ववरण (म खय स हत) - अगल प ज म दए गए उ चत क ड क भर Academic Year 2018-19 Variable Name Teacher 1 Teacher 2 Teacher 3 Teacher 4 Teacher 5 1. Teacher Code ( श क क ड) 2. Name (न म) 3. Gender
Läs merFrom Yeravda Mandir i From Yeravda Mandir
From Yeravda Mandir From Yeravda Mandir i From Yeravda Mandir From Yeravda Mandir ii From Yeravda Mandir Ashram Observances M. K. Gandhi Translated from the Original Gujarati by Valji Govindji Desai YOGeBooks:
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser
Läs merSTS1100. Register your product and get support at Quick. Start
Register your product and get support at www.philips.com/welcome STS1100 Quick Start STS1100_00_QSG_15Jul10.indd 1 2010-07-15 11:23:26 AM EN CS DA DE EL ES FI FR HI IT MS (MY) NL The Philips Table Top
Läs merHär räddar folket sitt språk
Nepali dominerar tydligt i tidningskioskerna. Här räddar folket sitt språk Nepal kryllar av språk, många utan skriftspråk. Därför riskerar flera av dem att försvinna. Så vad händer om lokal befolkningen
Läs merOperativsystem IS1350
Operativsystem IS1350 LAB 2 2011-09-26 Förberedelser: Läs igenom labhäftet. Gör uppgifterna i förväg, använd labtiden till att ställa frågor om du kört fast. Läs igenom tipsen om kärnakompilering på http://bobcares.com/
Läs merÖvningar till UNIX/Linux Grundkurs och förslag till LÖSNING
Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING 1. Träna på att logga in och ut. 2. Mata ln sleep 60. Mata in kommandot date direkt. Tryck på avbrottstangenten, (CTRL-C). Prova kommandot date
Läs merFunktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare
Funktionspekare, inledning: funktionsanropsmekanismen Vid funktionsanrop läggs aktuella argumentvärden och återhoppsadressen på stacken, därefter sker ett hopp till adressen för funktionens första instruktion.
Läs merRaspberry Pi och Tellstick, ett program i C.
Raspberry Pi och Tellstick, ett program i C. Ett program skrivet i C för att med Tellstick tända och släcka en eller flera lampor. Programmet startas med kommandot: /home/pi/development/cprog/tellstick/tellstick-13
Läs merDet finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Läs merOperativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00
Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas
Läs merHantering av textsträngar och talsträngar. William Sandqvist
Hantering av textsträngar och talsträngar Strängen Hello world! PIC-processorerna lagrar strängkonstanter med bokstäverna inbakade i en följd av instruktioner (en tabell). Man hämtar en bokstav genom att
Läs merInterrupt i Linux/StrongArm 1100
Interrupt i Linux/StrongArm 1100 Ett kapitel för kursen Wearable Computers D 10 p Namn: Handledare: Björne Lindberg och Ulf Brydsten Innehållsförteckning Innehållsförteckning...2 Inledning...3 Interrupt...3
Läs merAtt skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Läs merProgrammeringsteknik för Ingenjörer VT06. Föreläsning 10
Programmeringsteknik för Ingenjörer VT06 Föreläsning 10 Dagens föreläsning Repetition Strukturer Programmeringsteknik för ingenjörer, VT06 2 Deklaration: char name1[10]; char *name2; Repetition - Strängar
Läs merVad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes
Vad kännetecknar en god klass F12 Nested & En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat
Läs merTerminal vad det är vad man kan göra med den
Terminal vad det är vad man kan göra med den Touch Användbarhet Batchkörning WIMP CLI (Command Line Interface) sh ksh tcsh bash zsh (Windows, Icon, Menu, Pointer) Elektronrör 1940 1950 1960 1970 1980 1990
Läs merPoster ( structar ) Postdeklarationer
Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.
Läs mer( SV ) SVENSKA. Sida 6 HÅLLARMAR (ELITE OCH POWER RAIL CLAMP)
( SV ) SVENSKA Framsida Uncompromised Exposure Användarhandbok vid laparoskopi: Instruktioner för installation av Thompson laparoskopiprodukter Sida 2 Innehållsförteckning Varningar + försiktighetsåtgärder...
Läs mer( SV ) SVENSKA OBS: Försök inte att justera bordsfästets höjd när ramkomponenter är fastsatta utan att
( SV ) SVENSKA Framsida Riskfri friläggning Thompson sårhake bruksanvisning: Anvisningar för inställning av Thompsons allmänna sårhakssystem och sårhaksystem för ryggraden Sida 2 BRUKSANVISNING/INNEHÅLLSFÖRTECKNING
Läs merProgramsystemkonstruktion med C++
Programsystemkonstruktion med C++ Övning 1 Daniel Aarno bishop@kth.se Översikt övning 1 Kompilering och länkning Makefile Preprocessordirektiv Funktioner Funktionen main() Datatyper Minneshantering Pekare
Läs merEtt enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1
Ett enkelt program i C++, hello.cpp C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel int
Läs merSystemnära programmering 2012-11-05. Tentamen. Systemnära programmering, 7.5hp 5 november 2012
Tentamen Systemnära programmering, 7.5hp 5 november 2012 Skrivtid: 9 13 Hjälpmedel: EN av följande böcker Bilting & Skansholm: Vägen till C ELLER J.R. Hanly & E.B. Koffman: C Program Design for Engineers
Läs merSchenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås
Schenker Privpak AB Interface documentation for web service packageservices.asmx 2012-09-01 Version: 1.0.0 Doc. no.: I04304b Sida 2 av 7 Revision history Datum Version Sign. Kommentar 2012-09-01 1.0.0
Läs merLab 2 Operativsystem IS1350
Lab 2 Operativsystem IS1350 2014 1 Introduktion 1.1 Förberedelser Läs igenom labhäftet. Gör uppgifterna i förväg, använd labtiden till att ställa frågor om du kört fast. Läs igenom tipsen om kärnakompilering
Läs merEn klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.
2 1 0 / ) - & 9 > ; 7 * ( ) ) En klass behöver både deklaration och definition Deklaration i h (hh) och definition i cc (cpp) Private är förvalt Student::learn() Student::Student() Student::~Student()
Läs mergrundläggande C++, funktioner m.m.
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include
Läs merProgramsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010
Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis
Läs merGU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167
GU / Chalmers Campus Lindholmen Tentamen Programutveckling 2016-01-13 LEU 482 / TIG167 Examinator: Henrik Sandklef (0700-909363) Tid för tentamen: 2016-01-13, 08.30 12.30 Ansvarig lärare: Henrik Sandklef,
Läs mer#include <stdio.h> #include <string.h>
#include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'
Läs merExamination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: 2014-12-17 Tid: 9.00-12.00 (OBS 3 tim) Rum: V
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Erland Holmström Göteborg 16 dec 2014 Examination i PROGRAMMERINGSTEKNIK F1/TM1
Läs merTillämpad programmering
Tillämpad programmering C++ objekt Johan Montelius 1 struct struct Person { string name; int age; ; Person p; p.name = Joe ; p.age = 42; cout
Läs merRepetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Läs merF2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander
F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng
Läs merOperativsystem ID2200/06 omtentamen :00-18:00
Operativsystem ID2200/06 omtentamen 2017-04-10 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Mobiler etc skall lämnas till tentamensvakterna.
Läs merÖvningar till UNIX/Linux Grundkurs och förslag till LÖSNING
Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING 1. Träna på att logga in och ut. 2. Mata in sleep 60. Mata in kommandot date direkt. Tryck på avbrottstangenten, (CTRL-C). Prova kommandot date
Läs merOperativsystem ID2200/06 tentamen och omtentamen :00-12:00
Operativsystem ID2200/06 tentamen och omtentamen 2017-01-14 08:00-12:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Mobiler etc skall
Läs merOperativsystem ID2200/06 omtentamen :00-12:00
Instruktioner Operativsystem ID2200/06 omtentamen 2017-08-21 8:00-12:00 Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa sidor,
Läs merTillämpad programmering
Tillämpad programmering C++ make, configure och arrayer Johan Montelius 1 C++ sndcopy.cc #include #include sndreader.h #incldue sndwrite.h int main(int argc, char *argv[]) { 2 C++ sndreader.h #include
Läs merLösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108.
1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Denna tenta kommer att vara färdigrättad Fr 14/1 och kan då hämtas på mitt tjänsterum,
Läs merPekare och arrayer. Indexering och avreferering
Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en
Läs merReguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)
Reguljära uttryck Ett sätt att söka och manipulera text Reguljära uttryck Konstruerar mönster som försöker hitta nåt i text Viktigt, användbart, många resurser http://regex.info/ http://etext.lib.virginia.edu/services/helpsheets/unix/regex.html
Läs merProgrammering i C++ EDA623 Något om C# EDA623 (Föreläsning 14) HT / 17
Programmering i C++ EDA623 Något om C# EDA623 (Föreläsning 14) HT 2013 1 / 17 De sista pusselbitarna Innehåll Hello World Lite historik Tillgänglighet Jämförelse med C++ Ny for-variant (foreach) Egenskaper
Läs merOperativsystem (ID2200/06) XX XX:00-XX:00
Operativsystem (ID2200/06) 2017-01-XX XX:00-XX:00 Namn: Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4-sida med anteckningar. Mobiler etc skall lämnas till
Läs merExempelsamling Assemblerprogrammering
Exempelsamling Assemblerprogrammering I uppgifterna nedan utgå från följande programskelett: #include.data var1:.word 12 var2:.word 19 sum: prod:.float 0.set noreorder.text.globl start.ent start
Läs merEn kort text om programmering i C.
En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,
Läs merAvancerad SSL-programmering II
Tekn.dr. Göran Pulkkis Överlärare i Datateknik Avancerad SSL-programmering II 1 Innehåll Makron för generisk stackhantering Hantering av konfigureringsfiler Certifikathantering 2 1 Makron för generisk
Läs merTDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5 Daniel Wetterbro 23 november 2009 Sammanfattning Denna vecka ska vi titta på I/O, samlingar och generics. Övningarna är graderade
Läs merIntroduktion C-programmering
Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder
Läs merRecitation 4. 2-D arrays. Exceptions
Recitation 4. 2-D arrays. Exceptions Animal[] v= new Animal[3]; 2 declaration of array v Create array of 3 elements v null a6 Assign value of new-exp to v Assign and refer to elements as usual: v[0]= new
Läs merTentamen PC-teknik 5 p
Tentamen PC-teknik 5 p Namn:. Klass:... Program: Di2, Em3, Et3 Datum: 03-08-15 Tid: 13:30-18:30 Lokal: E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific C
Läs merDatorteknik ERIK LARSSON
Datorteknik ERIK LARSSON Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generell OS teori och
Läs mer4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &
TelefonKostnad static Math static $ & )&* +,-&. 0 +& + & 3 356+573 ) & & 6 3 3 & 3 * 6 3.:; < = 3 = 6 ; < : & >?.;,;@.A@;0,0,? @B0 C,0 > *. > 5 C D & D 5 * &! ; 66C! * C, 0 E,&! 0 F,G0 >: = = C 3 & HI
Läs merTentamen *:58/ID100V Programmering i C Exempel 3
DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst
Läs merProgrammering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world
Programmering i C Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur Kernighan, Ritchie: The C Programming Language, Second edition, Steve Oualline:
Läs merÖvning 6. Parallellport, timer
Övning 6 Parallellport, timer 6.1 de2_pio_toggles18 Memory-Mapped addresses LEDG8 LEDR17 LEDR16 LEDR15 LEDR14 LEDR13 LEDR12 LEDR11 LEDR10 LEDR9 LEDR8 LEDR7 LEDR6 LEDR5 LEDR4 LEDR3 LEDR2 LEDR1 LEDR0 LEDG7
Läs merFakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson
Fakulteten för ekonomi, kommunikation och IT Corba Datum: 2007-10-17 Namn: Kurs: Henrik Bäck Mathias Andersson DVGC02 Innehållsförteckning Implementation 3 IDL-fil 3 Server 3 Klient 3 Körning 3 Bilagor
Läs merOperativsystem ID1200/06 Tentamen :00-18:00
Operativsystem ID1200/06 Tentamen 2018-01-12 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa sidor,
Läs merOutline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler
Outline Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vända om inlästa värden Vända om inlästa
Läs merGrundkurs Programmering
HI124 Grundkurs Programmering F7b: Funktioner på djupet! A. Cajander, STH 6 1 5 42 3.14f a float char short circuit order of subexp eval. Dagens fokus = + - * / % ++ -- + - * / % & ^ > ==!= > < >=
Läs merFörsta exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,
Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, 2003 09 11 Ronnie Johansson, rjo@nada.kth.se Vi kommer att titta på: Kompilering och länkning make och Makefile Preprocessordirektiv main() funktionen
Läs merVad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.
Vad har vi lärt oss så här långt Vad är en sträng Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar. Matriser av strängar. Sortering av strängar. Vad har vi lärt oss i dag Literals
Läs merOperativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00
Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp 2018-04-03 14:00-18:00 Omtentander på ID2200 TEN1 3.8 hp och ID2206 TEN1 4.5 hp skall inte skriva denna tentamen! Instruktioner Du får, förutom
Läs merSupport Manual HoistLocatel Electronic Locks
Support Manual HoistLocatel Electronic Locks 1. S70, Create a Terminating Card for Cards Terminating Card 2. Select the card you want to block, look among Card No. Then click on the single arrow pointing
Läs merFöreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Läs merUpplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.
Introduktion Upplägg Kursen heter konstruktion, ej design eller formgivning. det handlar främst om att lära sig att bygga gränssnitt som är sunda den är praktiskt orienterad; vetenskapliga teorier finns,
Läs mer... Funktionsanrop. Vad händer när man kör ett program?
Vad händer när man kör ett program? När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar main-funktionen ungefär
Läs merÖvning 7. Timer, serieport
Övning 7 Timer, serieport 7.6 timer_1 Memory-Mapped addresses 0x920 status 0x924 control 0x928 periodl 0x92C periodh 0x930 snapl 0x934 snaph 15 0 Run TO (Time-Out) ITO cont start stop timer_1 start D Q
Läs merFortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe
Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering
Läs merint (*fp) (char, char*) //pekare till funktion som tar //argumenten (char, char*) och //returnerar int
Pekare char v[10]; //array med 10 characters char* p; //pekare till characters //p pekar på v's fjärde element p = &v[3] p & är "adressen-av" operatorn. För de flesta typer T gäller att T* är typpekare.
Läs merTellstick-15.c. Kompilering av programmet: gcc -o tellstick-15 -Wall -ltelldus-core -W -O2 -s -pipe -lm tellstick-15.c
Tellstick-15.c Ett program skrivet i C för att med Tellstick tända och släcka en eller flera lampor. Det nya i detta program är att strömbrytare 1 tänds och släcks efter solens upp- och nedgång, tänds
Läs merFö 2 TSEA81 Datorteknik och realtidssystem
Fö 2 TSEA81 Datorteknik och realtidssystem Shared Resources Shared resources En gemensam resurs är något som används av en eller flera processer. Det kan t ex var: Data: variabel, buffer, databas Hårdvara:
Läs merIntroduktion HTML och PHP 732G16 Databaser design och programmering
Introduktion HTML och PHP 732G16 Databaser design och programmering 08-04-22 Ingrid Alin Nilsson 1 Presentationen tar upp Lite grundläggande om HTML Grunderna i PHP Styrstrukturer Funktioner Filhantering
Läs merIntegritetsprincipen. Objektorienterad modellering och diskreta strukturer / design
Integritetsprincipen Objektorienterad modellering och diskreta strukturer / design Designmönster och fallstudier Integritetsprincipen Gör attribut, metoder och klasser så hemliga de går. Lämna inte ut
Läs merTypkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Läs merImperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur
Imperativ programmering konstruktioner i Lisp Imperativ programmering I den imperativa programmeringen skriver vi program satsvist. Datastrukturer (kap.-.) aystruktur poststruktur Iterativa uttryck (avs.)
Läs merGU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167
GU / Chalmers Campus Lindholmen Tentamen Programutveckling 2016-01-13 LEU 482 / TIG167 Examinator: Henrik Sandklef (0700-909363) Tid för tentamen: 2016-01-13, 08.30 12.30 Ansvarig lärare: Henrik Sandklef,
Läs merAbstrakta datastrukturer
Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack Stack implementerad med array Länkad lista Stack implementerad med länkad lista Inlämningsuppgifter Datastrukturer En datastruktur är en struktur
Läs merFöreläsning 12. struct
Föreläsning 12 struct Dagens kluring #include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'
Läs merITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Läs merFöreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista
Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och
Läs merTENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Läs mer