经典的线程池模型是一组线程抢一个资源链表的模型,程序启动了一组线程,让它们等待信号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
2014-07-29 23:36:10 在linux下用文件描述符来表示设备文件和普通文件。文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现。 文件描述符示文件系统中连接用户空间和内核空间的枢纽。当打开一个或者创建一个文件时,内核空间创建相应的结构,并生成一个整型的变量传递给用户.....
分类:
系统相关 时间:
2014-07-30 00:56:12
阅读次数:
265
进程上下文VS中断上下文内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器...
分类:
其他好文 时间:
2014-07-27 23:12:19
阅读次数:
208
在Xenomai的用户空间下,有两种模式:primary mode 和 secondary mode....
分类:
其他好文 时间:
2014-07-20 23:23:54
阅读次数:
324
在Android中需要有内核驱动向用户空间表露其状态,一般是使用switch类。本文没有详细去说明switch实现细节,以实用的角度给出了一个完整的例子。以ldd3中最简单的Hello World驱动模块为基础上简单实现了一个switch,可以方便快速上手。...
分类:
移动开发 时间:
2014-07-19 18:46:19
阅读次数:
390
实现LED灯的闪烁,需要在驱动里添加一个定时器函数,具体实现涉及到了LED GPIO驱动,用户空间程序调用驱动
1.首先来看LED设备驱动注册过程,代码位于../kernel/drivers/leds/led-gpio.c中,
297
static int __init gpio_led_init(void)
298
{
299
return platform...
分类:
其他好文 时间:
2014-07-19 02:34:15
阅读次数:
566
说明:本文转自http://329716228.iteye.com/blog/1503160最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份。 安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的user...
分类:
移动开发 时间:
2014-07-18 23:37:42
阅读次数:
335
背景:
在多媒体和图像处理等应用中,经常用到大块内存,尤其是硬件编解码,需要内核分配大块的物理连续内存。
这里希望通过把从内核分配的连续物理内存映射到用户空间,在用户空间经过处理,又可以入队到驱动中。
前提:
Kernel Config中 根据需求配置和调整CMA的大小。
方法:
(一)
1、驱动注册misc设备;
2、驱动实现IOCTL的内存分配,使用dma_alloc_writ...
分类:
其他好文 时间:
2014-07-18 11:30:45
阅读次数:
256
摘要:
相对于上一篇测试程序CMA连续物理内存用户空间映射---(一)
增加功能:
1、分配和映射统一放在IOCTL,一次完成,可以连续多次分配并映射到用户空间,提高操作性;
2、驱动增加链表,使分配的多块内存在链表中管理,方便添加删除;
3、增加内存释放和解除映射;
4、使用rmmod删除驱动模块时,将释放所有内存;
映射流程:
1、用户通过IOCTL分配大小传给驱动ioctl-...
分类:
其他好文 时间:
2014-07-18 11:09:20
阅读次数:
386