स प ण लन स ड ह ईस य हर मर ठ त न.

Storlek: px
Starta visningen från sidan:

Download "स प ण लन स ड ह ईस य हर मर ठ त न."

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 नमस क र

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 mer

oa'khèkj 'kqdy ds dko; esa lkekftd psruk

oa'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 mer

Affärer Brev. Brev - Adress

Affä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

ç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 mer

Affärer Brev. Brev - Adress

Affä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 mer

Personligt Lyckönskningar

Personligt 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 mer

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६

Personligt 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 mer

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६

Personligt 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 mer

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६. Mr. N. Summerbee 335 Main Street New York NY 92926

Personligt 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 mer

Personligt Lyckönskningar

Personligt 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 mer

Personligt Brev. Brev - Adress. Nederländska

Personligt 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 mer

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६ - Adress Cardinelli Domenico & Vittorio via delle Rose, 18 Petrignano 06125 Perugia एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६ Standard engelskt adressformat:, företagets namn,

Läs mer

Affärer Brev. Brev - Adress

Affä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 mer

Mr. Adam Smith Smith's Plastics 8 Crossfield Road Selly Oak Birmingham West Midlands B29 1WQ

Mr. 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 mer

S.No. Details Hearing date Time slot Sh. Mukesh

S.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 mer

Personligt Lyckönskningar Lyckönskningar - Giftermål Japanska おめでとうございます 末永くお幸せに Används att gratulera ett nygift par おめでとうございます どうぞお幸せに Används att g

Personligt 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 mer

Academic Year

Academic 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 mer

From Yeravda Mandir i From Yeravda Mandir

From 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 mer

Programmeringsteknik med C och Matlab

Programmeringsteknik 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 mer

STS1100. Register your product and get support at Quick. Start

STS1100. 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 mer

Här räddar folket sitt språk

Hä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 mer

Operativsystem IS1350

Operativsystem 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 Ö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 mer

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Funktionspekare, 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 mer

Raspberry Pi och Tellstick, ett program i C.

Raspberry 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 mer

Det finns många flaggor till g++,

Det 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 mer

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Operativsystem 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 mer

Hantering av textsträngar och talsträngar. William Sandqvist

Hantering 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 mer

Interrupt i Linux/StrongArm 1100

Interrupt 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 mer

Att skriva till och läsa från terminalfönstret

Att 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 mer

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Programmeringsteknik 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 mer

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Vad 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 mer

Terminal vad det är vad man kan göra med den

Terminal 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 mer

Poster ( structar ) Postdeklarationer

Poster ( 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. 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 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 mer

Programsystemkonstruktion med C++

Programsystemkonstruktion 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 mer

Ett 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. #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 mer

Systemnära programmering 2012-11-05. Tentamen. Systemnära programmering, 7.5hp 5 november 2012

Systemnä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 mer

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Schenker 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 mer

Lab 2 Operativsystem IS1350

Lab 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 mer

En klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.

En 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 mer

grundläggande C++, funktioner m.m.

grundlä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 mer

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Programsystemkonstruktion 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 mer

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

GU / 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 <stdio.h> #include <string.h> #include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'

Läs mer

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: 2014-12-17 Tid: 9.00-12.00 (OBS 3 tim) Rum: V

Examination 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 mer

Tillämpad programmering

Tillä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 mer

Repetition C-programmering

Repetition 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 mer

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

F2 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 mer

Operativsystem ID2200/06 omtentamen :00-18:00

Operativsystem 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 Ö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 mer

Operativsystem ID2200/06 tentamen och omtentamen :00-12:00

Operativsystem 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 mer

Operativsystem ID2200/06 omtentamen :00-12:00

Operativsystem 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 mer

Tillämpad programmering

Tillä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 mer

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108.

Lö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 mer

Pekare och arrayer. Indexering och avreferering

Pekare 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 mer

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Reguljä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 mer

Programmering 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 / 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 mer

Operativsystem (ID2200/06) XX XX:00-XX:00

Operativsystem (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 mer

Exempelsamling Assemblerprogrammering

Exempelsamling 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 mer

En kort text om programmering i C.

En 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 mer

Avancerad SSL-programmering II

Avancerad 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 mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

TDA550 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 mer

Introduktion C-programmering

Introduktion 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 mer

Recitation 4. 2-D arrays. Exceptions

Recitation 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 mer

Tentamen PC-teknik 5 p

Tentamen 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 mer

Datorteknik ERIK LARSSON

Datorteknik 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 mer

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

4 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 mer

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen *: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 mer

Programmering 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. 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 Ö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 mer

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Fakulteten 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 mer

Operativsystem ID1200/06 Tentamen :00-18:00

Operativsystem 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 mer

Outline. 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. 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 mer

Grundkurs Programmering

Grundkurs 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 mer

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,

Fö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 mer

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.

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. 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 mer

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00

Operativsystem 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 mer

Support Manual HoistLocatel Electronic Locks

Support 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 mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Fö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 mer

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Upplä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?

... 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 Ö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 mer

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Fortsä'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 mer

int (*fp) (char, char*) //pekare till funktion som tar //argumenten (char, char*) och //returnerar int

int (*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 mer

Tellstick-15.c. Kompilering av programmet: gcc -o tellstick-15 -Wall -ltelldus-core -W -O2 -s -pipe -lm tellstick-15.c

Tellstick-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 mer

Fö 2 TSEA81 Datorteknik och realtidssystem

Fö 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 mer

Introduktion HTML och PHP 732G16 Databaser design och programmering

Introduktion 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 mer

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Integritetsprincipen. 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 mer

Typkonvertering. Java versus C

Typkonvertering. 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 mer

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Imperativ 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 mer

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

GU / 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

Abstrakta datastrukturer

Abstrakta 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 mer

Föreläsning 12. struct

Fö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 mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK: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 mer

Fö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. 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 mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN 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