usb驱动分为通过usbfs操作设备的用户空间驱动,内核空间的内核驱动。两者不能同时进行,否则容易引发对共享资源访问的问题,死锁!使用了内核驱动,就不能在usbfs里驱动该设备。 下面转载的一篇分析usb-skeleton.c文章。 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不...
分类:
系统相关 时间:
2014-08-11 11:24:52
阅读次数:
312
0 前言
本文描述如果通过文件IO sysfs方式控制EasyARM GPIO端口。通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入。
...
分类:
其他好文 时间:
2014-08-09 16:00:28
阅读次数:
356
0 前言
本文描述如果通过文件IO sysfs方式控制树莓派 GPIO端口。通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入。
...
分类:
其他好文 时间:
2014-08-09 15:55:58
阅读次数:
346
经典的线程池模型是一组线程抢一个资源链表的模型,程序启动了一组线程,让它们等待信号waitQ的到来。同时又初始化一个资源链表,当某个线程往资源链表中添加一个资源时,它同时使用信号通知线程池。线程池中的线程接到信号后,就从资源链表中取出资源进行处理。 接下来,我们先来观察一下用户空间线程池的创建...
分类:
编程语言 时间:
2014-08-09 15:52:58
阅读次数:
390
研究了一上午的Android监听底层事件的机制,总结如下:
内核驱动监听硬件设备的状态和行为,通过uevent机制发送事件给用户空间;
用户空间通过UeventObserver来监听来自内核的uevent,进行处理。
内核空间和用户空间的通信使用了netlink机制。
参考的文章有:
Android使用UeventObserver:
http://blog.csdn.n...
分类:
移动开发 时间:
2014-08-07 13:19:50
阅读次数:
205
在3.16-rc4内核源码中,内核给每个进程分配的内核栈大小为8KB。这个内核栈被称为异常栈,在进程的内核空间运行时或者执行异常处理程序时,使用的都是异常栈,看下异常栈的代码(include/linux/sched.h):1 union thread_union {2 struct thre...
分类:
系统相关 时间:
2014-07-30 23:31:05
阅读次数:
411
2014-07-29 23:36:10 在linux下用文件描述符来表示设备文件和普通文件。文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现。 文件描述符示文件系统中连接用户空间和内核空间的枢纽。当打开一个或者创建一个文件时,内核空间创建相应的结构,并生成一个整型的变量传递给用户.....
分类:
系统相关 时间:
2014-07-30 00:56:12
阅读次数:
265
进程上下文VS中断上下文内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器...
分类:
其他好文 时间:
2014-07-27 23:12:19
阅读次数:
208
一、什么是模块:
模块(module)是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最主要的用处就是用来实现设备驱动程序。
使用模块的优点:
1,将来修改内核时,不必全部重新编译整个内核,可节省不少时间
2,系统中如果需要使用新模块,不必重新编译内核,只要插入相应的模块即...
分类:
其他好文 时间:
2014-07-23 20:56:35
阅读次数:
206
用户空间和内核空间通讯Netlinkhttp://pan.baidu.com/s/1i386MWX
分类:
Web程序 时间:
2014-07-16 19:03:37
阅读次数:
187