独享型设备在同一时刻只允许一个进程使用,其他进程必须进入阻塞队列等待,直到该进程退出时将该资源为空闲的信号量恢复,等待队列中的第一个进程才可以进入。
共享型设备允许同时有多个进程访问某个设备或资源,但是进程的个数可以进行设置,超过这个数的进程只能阻塞等待。
返回值一般情况下,如果正常执行则为0,非正常执行的话,有什么样的返回值要看程序代码中是怎么定义的了。返回值的那个数字不重要,重要的是它所代表的意义。
如果是多线程的话 特可以用互斥锁 使用互斥锁需避免死锁如果是多进程的话 可以用信号量来避免冲突
要真具体讲 不是一俩句可以说明白的 需要代码 否则太虚了 你可以看看LINUX中多线程和多进程这部分 看明白了就懂了
驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式LINUX不能够象桌面LINUX那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。下面以UCLINUX为例,介绍在一个以模块方式出现的驱动程序test.c基础之上,将其编译进内核的一系列步骤:(1) 改动test.c源带代码
第一步,将原来的:#include#includechar kernel_version[]=UTS_RELEASE改动为:#ifdef MODULE#include#includechar kernel_version[]=UTS_RELEASE#else#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT#endif第二步,新建函数int init_test(void)
将设备注册写在此处:
result=register_chrdev(254,"test",&test_fops)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)