linux kernel
文章平均质量分 73
JianqunXu
驱动自己,驱动人生
展开
-
Event auto wakelock 介绍
Evdev auto wakelock 介绍介绍kernel-2.6.25 关于event 加锁的机制,从中窥探linux的锁机制。kernel版本比较旧,对比2.6.32发现kernel在锁机制方面基本没变,但是在机制的实现上有很大的变化。1.evdev模块初始化module_init(evdev_init);2.evdev初始化static int __原创 2012-03-25 15:16:43 · 2655 阅读 · 0 评论 -
内核:一个中断如何对应多个句柄
input子系统input子系统代码位置:kernel/drivers/input/input.c这个文件完成input系统最原始的初始化,subsys_initcall开始子系统的初始化,并封装EXPORT_SYMBOL给其他驱动调用的接口在input_init中,三件事: err = class_register(&input_class); if (原创 2012-06-21 09:01:52 · 3253 阅读 · 0 评论 -
barrier 和 smp_mb
优化屏障和内存屏障 优化屏障 编译器编译源代码时,会将源代码进行优化,将源代码的指令进行重排序,以适合于CPU的并行执行。然而,内核同步必须避免指令重新排序,优化屏障(Optimization barrier)避免编译器的重排序优化操作,保证编译程序时在优化屏障之前的指令不会在优化屏障之后执行。 Linux用宏barrier实现优化屏障,gcc编译器的转载 2012-07-30 10:12:27 · 25594 阅读 · 5 评论 -
android待机详细结合代码分析(一)
摘要:android系统的待机,是在linux原生待机enter_state的基础上,添加wakelock-wakeunlock机制,对象场景是增加对屏灭但系统仍后台运行得支持。linux原生待机我们是linux开发者,用code沟通最直接吧。在linux-2.6.32以后,/sys/power节点下,创建state节点,在文件系统调用上,write此节点,将会调用st原创 2012-09-11 14:26:15 · 7776 阅读 · 0 评论 -
android待机详细结合代码分析(二)
摘要:此篇在上篇博文基础上,增加对待机后,怎么增加唤醒源的分析android待机过程 与 irq的开关过程对于android开发者而言,可能会有疑问为什么我们的手机或者平板,音量按键,屏幕不会亮,而电源按键,屏幕会亮?又或者如何才能让音量按键也有点亮屏的效果(当然纯粹是以开发者角度,与实用性无关)irq在android待机过程中的总体管理是:1. 全部irq被disab原创 2012-09-11 15:08:42 · 5149 阅读 · 0 评论 -
Linux内核同步原语之原子操作
避免对同一数据的并发访问(通常由中断、对称多处理器、内核抢占等引起)称为同步。 ——题记 内核源码:linux-2.6.38.8.tar.bz2 目标平台:ARM体系结构 原子操作确保对同一数据的“读取-修改-写入”操作在它的执行期间不会被打断,要么全部执行完成,要么根本不会执行。例如在ARM上对全局变量的++运算至少要经历以下三步: [cp转载 2013-03-10 11:51:47 · 2669 阅读 · 0 评论 -
Ubuntu 12 下构建模拟TPM环境
Ubuntu 12 下构建模拟TPM环境1.安装CMake下载网址:http://www.cmake.org/我下载的版本是cmake-2.8.8.tar.gz解压:#tar -zxf cmake-2.8.8.tar.gz安装:(1)#cd cmake-2.8.8 (2)#./bootstrap (3)#make (4)#mak原创 2014-04-01 11:06:28 · 8133 阅读 · 1 评论 -
Linux 3.14 待机流程分析
内核不断在升级,从内核3.0开始分析待机流程,最近在3.14检查待机方面问题,发现流程有一些改进这篇文章就是着重在改进部分的分析原创 2015-06-12 15:35:23 · 5075 阅读 · 0 评论 -
Linux reserved memory分析
Linux需要预留内存,满足设备对连续物理内存,已经有一套reserved-memory原创 2017-11-17 15:39:10 · 10748 阅读 · 0 评论 -
CMA debug
学习CMA,Linux kernel有个很好用的CMA DEBUG,本文介绍它的使用方法1. 代码位置CMA DEBUG文件位置在mm/cma_debug.c;Linux kernel默认是关闭,需要打开CONFIG_CMA_DEBUG=y CONFIG_CMA_DEBUGFS=y2. 代码解读很常见的是以late_initcall(cma_debugfs_init原创 2017-11-28 09:43:12 · 2426 阅读 · 0 评论 -
android待机应用和若干常见问题解决
Android和kernel间,通过设备节点建立关联待机API由kernel建立提供,待机请求由android通过节点向kernel发送。# ls sys/android_power/staterequest_stateacquire_full_wake_lockacquire_partial_wake_lockrelease_wake_lock# 这些节点中,stat原创 2012-03-25 15:44:49 · 4971 阅读 · 0 评论 -
kernel 3.0.8 audio dataflow
kernel 2.6.32 for (;;) { if (signal_pending(current)) { err = -ERESTARTSYS; break; } set_current_state(TASK_INTERRUPTIBLE); snd_pcm_stream_unlock_irq(substream); tout = schedu原创 2011-11-10 00:47:22 · 1887 阅读 · 0 评论 -
android待机流程(图)
用viso根据代码画了下android待机的流程原创 2011-11-08 17:55:58 · 3245 阅读 · 3 评论 -
kernel链表操作
代码在/include/linux/list.h中1、INIT_LIST_HEADstatic inline void INIT_LIST_HEAD(struct list_head *list){ list->next = list; list->prev =原创 2011-08-05 11:23:10 · 1658 阅读 · 0 评论 -
kernel barrier 定义说明
#ifndef barrier# define barrier() __memory_barrier()#endif 这里表示如果没有定义barrier函数,则定义barrier()函数为__memory_barrier()。但在内核转载 2011-09-09 10:00:27 · 2071 阅读 · 0 评论 -
工作队列分析 queue_work
一、用法 struct cpu_workqueue_struct { spinlock_t lock; long remove_sequence; /* Least-recently added (next to run) */ long insert_s转载 2011-09-15 15:35:55 · 12478 阅读 · 0 评论 -
android device 注册、添加、管理
注册:函数调用设备挂到电源管理的函数调用关系是(依次往下调用)audio_card_init (函数类型包含__init 初始化调用)platform_device_adddevice_adddevice_pm_addlist_add_tail(最直接的链原创 2011-09-15 00:11:00 · 3297 阅读 · 0 评论 -
kzalloc 函数详解
用kzalloc申请内存的时候, 效果等同于先是用 kmalloc() 申请空间 , 然后用 memset() 来初始化 ,所有申请的元素都被初始化为 0./** * kzalloc - allocate memory. The memory is set to zer原创 2011-08-24 15:50:54 · 37696 阅读 · 1 评论 -
Linux内核的ioctl函数
关于ioctl的网上资源一、 什么是ioctl。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd,原创 2011-08-16 17:00:26 · 7944 阅读 · 1 评论 -
中断上下文 和 module_init
为什么在中断上下文中不能休眠?1.中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断(这点对于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断context中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断context中,没翻译 2011-11-15 23:54:43 · 1164 阅读 · 0 评论 -
DMA简介
DMA概述 好久没来写文档了,研究了一点和音频相关的东西~这里先介绍DMAl DMA (Direct Memory Access)l DMA方式不用CPU干预,完成M与I/O之间数据传输l DMAC:用来实现DMA传输期间DMA控制器,在DMA传输期间占用总线 l DMAC在系统中的作用: 主动态在原创 2011-11-08 17:37:17 · 2435 阅读 · 1 评论 -
音频框架结构
1.2.1 Android audiosubsystem Framework1.2.2 OSS FrameworkTypical OSS Read/Write Flow音频数据流原理相通,可以总结为三步骤:while循环,持续写schedule等待DMA中断产生copy_frome_user拷贝数据到DMA缓存区1.2.3原创 2011-11-08 17:45:47 · 2040 阅读 · 0 评论 -
ion_mmap
ion_mmap: buffer->heap->ops->map_user(buffer->heap, buffer, vma);-> struct ion_heap_ops ion_cma_ops: .map_user = ion_cma_mmap,-> ion_cma_mmap: dma_mmap_coherent(dev, vma, info->cp...原创 2018-02-23 11:15:30 · 878 阅读 · 0 评论