- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 linux设备驱动学习(四)——阻塞与非阻塞I/O
1.阻塞与非阻塞I/O介绍 阻塞和非阻塞I/O是设备访问的两种不同模式。阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入睡眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞操作的进程在不能进行设备操作时,并不挂起,它要么放弃,要么不停地查询,直至可以进行操作为止。 驱动程序通常需要提供这样的能力:当应用程序进行rea...
2018-05-30 17:09:07 172
原创 linux设备驱动学习(三)——并发控制
1.并发介绍 一般来说,操作系统都是支持并发执行能力的,多个执行单元访问同一个模块时,如果不能支持并发,则会让这个模块功能紊乱,像读写操作时。两个用户同时读写,那么可能一个用户执行读操作时,另一个用户可以执行了它的写操作,这就会出现功能不协调的情况。因此这里通过并发,将代码放在临界区,通过特定的互斥机制来对这一块进行保护,使得多个执行单元访问这块时只能执行一个,其余都需要等待或其他。2.并发处...
2018-05-30 15:23:13 658
原创 linux设备驱动学习(二)——字符设备编写及测试
一、字符设备体结构介绍1.字符设备作为linux内核三大驱动设备之一,主要完成字节的读写操作,常见的应用有鼠标、键盘等,结构体形式如下所示:struct cdev{struct kobject kobj;struct module *owner;//所说模块struct file_operations *ops;//字符设备操作方法struct list_head list; dev_t dev...
2018-05-30 10:17:11 5540 3
原创 linux设备驱动学习(一)——简单的helloworld模块
1.需要.c文件与Makefile文件在..../drivers/hello目录下新建xxx.c 和Makefile文件.c文件样例:#include <linux/module.h>#include <linux/kernel.h>static char *name="likui";module_param(name,charp,S_IRUGO);static int c...
2018-05-29 14:39:54 1338
原创 C语言结构体指针的使用方法
1.首先定义一个结构体,给它取别名:typedef struct node{struct node * next;//指向下一节点int data;//数据域}pnode,*linklist;;//别名与指针名2.定义结构体指针与指针变量,给出几种不同的定义方式struct node *a,b;pnode *c,d;linklist p;他们别名的关系如下:...
2018-05-09 10:08:46 12870 3
原创 基于face++的人脸识别(上)
因为毕业设计需要做人脸识别的考勤,这里采取已有的平台上的sdk来做人脸识别,详细说下如何使用face++平台来进行人脸识别。 1.注册为face++的开发者。在这里注册个账号,https://console.faceplusplus.com.cn ,之后进入应用管理,创建一个应用2.添加Face++ SDK包。选择自己需要的sdk,下载后将之放入你的项目libs目录下,同步一下,...
2018-05-07 11:21:48 1482
python数据挖掘分类聚类回归关联算法代码加样例
2019-01-06
基于人脸识别+百度地图+实时的课堂签到系统
2018-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人