如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
C语言程序介绍C语言程序介绍【提要】本篇《C语言简单的字符驱动程序介绍》特别为需要介绍编程学习的朋友收集整理的,仅供参考。内容如下:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。以下是小编为大家搜索整理的.C语言简单的字符驱动程序介绍。代码分为:makefile,内核态程序globalmem.c用户态程序user.c功能是把一个数组排序,你也可以使用readwrite函数往内存里写东西。运行方法:make,产生globalmem.ko文件,Insmodglobalmem.ko,看一下dmesg-c是否有提示信息(也可以lsmod|grep"glo"),有的话说明加载上了,然后mknod/devglobalmemc2540,看一下ls/proc/device/|grep"glo"有东西没。然后运行用户态程序,数组被排序了。dmesg-c可以看到提示信息,在模块中排序了。上代码(是带锁的代码,顺便练练手)makefile1#makefileforkernel2.62ifneq($(KERNELRELEASE),)3#mymodule-objs:=file1.ofile2.o4obj-m:=globalmem.o56else7PWD:=$(shellpwd)8KVER:=$(shelluname-r)9KDIR:=/lib/modules/$(KVER)/build10all:11$(MAKE)-C$(KDIR)M=$(PWD)12clean:13rm-rf.*.cmd*.o*.mod.c*.ko.tmp_versions1415endif16内核模块1#include2#include3#include4#include5#include6#include7#include8#include9#include10#include11#include"mem.h"1213#defineGLOBALMEM_SIZE0x100014#defineMEM_CLEAR0x115#defineARRAY_INSTER0x216#defineGLOBALMEM_MAJOR2541718staticintglobalmem_major=GLOBALMEM_MAJOR;1920//thestructofglobal21typedefstruct__globalmem_dev{22structcdevcdev;23unsignedcharmem[GLOBALMEM_SIZE];24//addlock,signal25structsemaphoresem;26atomic_tato;27}globalmem_dev;2829globalmem_dev*global;3031typedefstruct__arithmetic_st{32intbuf[10];33intlen;34}arithmetic_st;3536373839intglobalmem_open(structinode*inode,structfile*filp)40{41filp->private_data=global;42//youcanonlyopenonefile43if(!atomic_dec_and_test(&global->ato))44{45printk(KERN_NOTICE"atomicislock");46return-EBUSY;47}48return0;49}5051intglobalmem_release(structinode*inode,structfile*filp)52{53atomic_inc(&global->ato);54return0;55}565758//read59staticssize_tglobalmem_read(structfile*filp,char__user*buf,size_tsize,loff_t*ppos)60{61unsignedlongp=*ppos;62unsignedintcount=size;63intret=0;6465globalmem_dev*dev=filp->private_data;6667if(p>GLOBALMEM_SIZE)68returncount?-ENXIO:0;