C語(yǔ)言程序介紹_第1頁(yè)
C語(yǔ)言程序介紹_第2頁(yè)
C語(yǔ)言程序介紹_第3頁(yè)
C語(yǔ)言程序介紹_第4頁(yè)
C語(yǔ)言程序介紹_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——C語(yǔ)言程序介紹本篇《C語(yǔ)言簡(jiǎn)樸的字符驅(qū)動(dòng)程序介紹》更加為需要介紹編程學(xué)習(xí)的摯友收集整理的,僅供參考。內(nèi)容如下:

C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。以下是我為大家探尋整理的C語(yǔ)言簡(jiǎn)樸的字符驅(qū)動(dòng)程序介紹。

代碼分為:makefile,內(nèi)核態(tài)程序globalmem.c用戶態(tài)程序user.c功能是把一個(gè)數(shù)組排序,你也可以使用readwrite函數(shù)往內(nèi)存里寫東西。

運(yùn)行方法:make,產(chǎn)生globalmem.ko文件,Insmodglobalmem.ko,看一下dmesg-c是否有提示信息也可以lsmod|grepglo,有的話說(shuō)明加載上了,

然后mknod/devglobalmemc2540,看一下ls/proc/device/|grepglo有東西沒(méi)。

然后運(yùn)行用戶態(tài)程序,數(shù)組被排序了。dmesg-c可以看到提示信息,在模塊中排序了。

上代碼是帶鎖的代碼,順便練練手

makefile

1#makefileforkernel2.6

2ifneq$KERNELRELEASE,

3#mymodule-objs:=file1.ofile2.o

4obj-m:=globalmem.o

5

6else

7PWD:=$shellpwd

8KVER:=$shelluname-r

9KDIR:=/lib/modules/$KVER/build

10all:

11$MAKE-C$KDIRM=$PWD

12clean:

13rm-rf.*.cmd*.o*.mod.c*.ko.tmp_versions

14

15endif

16

內(nèi)核模塊

1#include

2#include

3#include

4#include

5#include

6#include

7#include

8#include

9#include

10#include

11#includemem.h

12

13#defineGLOBALMEM_SIZE0x1000

14#defineMEM_CLEAR0x1

15#defineARRAY_INSTER0x2

16#defineGLOBALMEM_MAJOR254

17

18staticintglobalmem_major=GLOBALMEM_MAJOR;

19

20//thestructofglobal

21typedefstruct__globalmem_dev

22structcdevcdev;

23unsignedcharmem[GLOBALMEM_SIZE];

24//addlock,signal

25structsemaphoresem;

26atomic_tato;

27globalmem_dev;

28

29globalmem_dev*global;

30

31typedefstruct__arithmetic_st

32intbuf[10];

33intlen;

34arithmetic_st;

35

36

37

38

39intglobalmem_openstructinode*inode,structfile*filp

40

41filp-private_data=global;

42//youcanonlyopenonefile

43if!atomic_dec_and_testglobal-ato

44

45printkKERN_NOTICEatomicislock;

46return-EBUSY;

47

48return0;

49

50

51intglobalmem_releasestructinode*inode,structfile*filp

52

53atomic_incglobal-ato;

54return0;

55

56

57

58//read

59staticssize_tglobalmem_readstructfile*filp,char__user*buf,size_tsize,loff_t*ppos

60

61unsignedlongp=*ppos;

62unsignedintcount=size;

63intret=0;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論