![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 80
TheGameIsFives
这个作者很懒,什么都没留下…
展开
-
fork,vfork,clone创建子进程用法
fork,vfork,clone都是linux的系统调用,用来创建子进程的(确切说vfork创造出来的是线程)。先介绍下进程必须的4要点:a.要有一段程序供该进程运行,就像一场戏剧要有一个剧本一样。该程序是可以被多个进程共享的,多场戏剧用一个剧本一样。b.有起码的私有财产,就是进程专用的系统堆栈空间。c.有“户口”,既操作系统所说的进程控制块,在linux中具体实现是task_st转载 2014-12-07 20:57:15 · 1284 阅读 · 0 评论 -
Android : 基本空间划分 & IPC框架分析
一些概念1. Andoird AIDLaidl是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口既然aidl可以定义并实现进程通信,那么我们怎么使用它呢?文档/android-sdk/docs/guide/developing/tools/ai转载 2013-11-01 15:52:36 · 2088 阅读 · 1 评论 -
在Android4.2.2中添加对exFAT文件系统的支持
原文: http://blog.sina.com.cn/s/blog_3e4774e30101mhfk.html最近在自己做的Android4.2.2系统ROM,发现使用64GB的TF卡无法识别到,查看了下格式化后的文件系统格式,发现原来不再是以前的FAT32了,而是exFAT,该文件系统能支持超过4GB的单个文件,查了一下相关系统,Linux系统对于NTFS和exFAT的支持,暂时还是在转载 2013-10-31 13:37:19 · 27990 阅读 · 1 评论 -
android的ram console(目前没有使用)
android的ram console是一个辅助调试的内核机制,它用一段物理内存虚拟一个console设备,这样printk的时候会把调试信息写一份到这块ram,最后通过/proc文件系统输出。Ram console 类似于普通的串口console, printk()的内部实现都是向已注册和打开的console输出信息的,console可以基于串口实现,当然也可以基于内存实现,区别是数据流转载 2013-10-24 14:31:39 · 3165 阅读 · 0 评论 -
atomic_cmpxchg
1424 while (atomic_cmpxchg(&kgdb_active, -1, cpu) != -1) 1425 cpu_relax(); atomic_cmpxchg()函数实现了一个比较+交换的原子操作(原子就是说cpu要不就不做,要做就一定要做完某些操作才能干别的事情,对应这里就是比较和交换要一次过做完).atomic_cmpxchg()比较kgdb_activ原创 2013-10-24 14:03:49 · 3794 阅读 · 1 评论 -
android应用安装路径默认设置
adb shell pm setInstallLocation 2 设置应用默认安装路径到sd卡原创 2013-10-24 10:42:33 · 1117 阅读 · 0 评论 -
linux- API
kernel 3.4 中没有vfs的实现了,都是用sysfs. linux所有操作都是通过文件方式的, 所以API定义都在fs/目录下: SYSCALL_DEFINE来定义的原创 2013-10-24 14:36:04 · 724 阅读 · 0 评论 -
android USB绑定(待补充)
android2.3添加usb绑定菜单: 1. ro.tether.denied=false,可以在device/sec/products/sec_smdkc210.mk中加2. frameworks/base/core/res/res/values/config.xml "usb.*" "eth\\d"原创 2013-10-24 13:48:17 · 1280 阅读 · 0 评论 -
Uboot 设置启动参数
setenv bootcmd ' '注意单引号。。。。显示cmd:print原创 2013-10-24 13:46:10 · 1170 阅读 · 0 评论 -
Android2.3-> Audio-> aplay播放的的问题
你在aplay.c文件的play_file函数的pcm_open调用前面加上flags |= (AUDIO_HW_OUT_PERIOD_MULT - 1) flags |= (AUDIO_HW_OUT_PERIOD_CNT - PCM_PERIOD_CNT_MIN) 然后加上#define AUDIO_HW_OUT_PERIOD_MULT 8 解决aplay测试原创 2013-10-24 13:33:31 · 1374 阅读 · 0 评论 -
Android核心分析: Service深入分析
上一章我们分析了Android IPC架构,知道了Android服务构建的一些基本理念和原理,本章我们将深入分析Android的服务。Android体系架构中三种意义上服务: Native服务 Android服务 Init空间的服务,主要是属性设置,这个IPC是利用Socket来完成的,这个我将在另外一章来讨论。Navite服务,实际上就是指完全在C++空间完成的服务,主要转载 2013-11-01 16:40:33 · 691 阅读 · 0 评论 -
android4.0触摸屏滑鼠模式解决方法-添加idc文件
原文地址: http://my.oschina.net/f839903061/blog/85183最近在调试A10开发板-android4.0的触摸屏,因为最开始的时候只有鼠标管用,触摸屏是不管用的 当我们点击触摸屏的时候,终端是有数据显示的,但是就是在显示器上面没有响应操作 我们那时用的是触摸屏的接口是4pin连接线(专业术语不知道是什么),搞了很久也没高通,移植tslib什么的转载 2013-11-07 10:51:11 · 1066 阅读 · 0 评论 -
DIFF 与 PATCH命令使用
diff -uprN a/ b/ >cpatch -p1 patch -p0 -p NUM --strip=NUM Strip NUM leading components from file names.原创 2013-10-24 10:37:22 · 851 阅读 · 1 评论 -
android UEventObserver
UEventObserver是Android Java层利用uevent与获取Kernel层状态变化的机制。通过grep发现framework有如下模块使用UEventObserver的功能来提供服务:电池状态:services/java/com/android/server/BatteryService.java耳机状态:services/java/com/android转载 2014-04-23 09:00:36 · 977 阅读 · 0 评论 -
devfreq
A device may have a list of frequencies and voltages available. devfreq, a generic DVFS framework can be registered for a device in order to let the governor provided to devfreq原创 2014-03-18 15:14:42 · 2811 阅读 · 0 评论 -
spinlock
spinlock本身是原子操作的。会禁用抢占和避免multi-core竞争.它不能长期持有。1. spinlock哪些场合需要?不能进入睡眠的情况下: 中断处理中,tasklet中。还有有些很短的临界区,如果用信号量,会有进程睡眠和再次唤醒,代价很高,可以用spin_lock.使用时要先初始化: SPIN_LOCK_UNLOCKED2. 为什么用户空间不需要spinlock原创 2013-05-23 13:05:45 · 1035 阅读 · 0 评论 -
Linux进程的睡眠和唤醒
今天查看mmc驱动,发现关于下面的进程状态的设置:static int mmc_queue_thread(void *d){ struct mmc_queue *mq = d; struct request_queue *q = mq->queue; current->flags |= PF_MEMALLOC; down(&mq->thread_sem); do {转载 2013-05-15 15:15:29 · 1009 阅读 · 2 评论 -
repo & get andoird souce code
android 4.3源码下载【自己下载成功的步骤、其中遇到很多你可能会遇到的很多问题】作者:haojunming更新于 09月15日访问(1303)评论(0)[html] view plaincopy 1 2 3 4 5 6 7 8 91011jianguoliao@jianguoliao-Lenovo-IdeaPad-Y4转载 2014-02-24 10:16:39 · 6658 阅读 · 1 评论 -
ftrace 简介
ftrace 简介ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析。最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程。如今 ftrace 已经成为一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能。Ftrace 由 RedHat 的 Steve Rost转载 2014-02-10 14:52:05 · 789 阅读 · 0 评论 -
Debugfs的使用简介
DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。通常情况下,最常用的内核调试手段是printk。但printk并不是所有情况都好用,比如打印的数据可能过多,我们真正关心的数据在大量的输出里不是转载 2014-02-10 14:46:42 · 1015 阅读 · 0 评论 -
linux页面回收浅析
关于页面的使用在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来分配缓存;创建进程时,内核也是通过这种方式分配连续的两个页面,作为进程的thread_info结构和内转载 2013-12-26 10:58:11 · 688 阅读 · 0 评论 -
BCM4329 @ android2.2 modify
add wpa_supplicant.conf to /system/etc/wifi/add dhd.ko firmware.bin nv.txt into /etc/compile wpa_supplicant modify externel/wpa_supplicant/Android.mkmodify externel/wpa_supplicant_6/Android.mk原创 2013-10-24 10:40:19 · 794 阅读 · 0 评论 -
fuse文件系统
FUSE是File system in User Space,它是一个用户空间的文件系统框架,通过fuse,程序员可以再用户态实现文件系统,并且不需要特权用户的支持。fuse包括三个模块:内核模块,用户空间库以及mount工具。l 内核模块实现了一个完整文件系统的框架,但具体操作没有实现(由程序员在用户空间实现)。l 用户空间库给程序员提供编程接口,程序员通过实现fuse提供的fu转载 2013-06-18 10:25:55 · 1820 阅读 · 0 评论 -
android init 与 uevent
Init是linux kernel启动的第一个进程,理解init,对熟悉android系统非常重要。 Android的每个目录下面都有一个非常重要的文件Android.mk,负责编译该目录下面的代码。 System/core/init/android.mk LOCAL_MODULE:= init LOCAL_FORCE_STATIC_EXE转载 2012-08-31 13:28:46 · 662 阅读 · 0 评论 -
linux /dev/下设备节点创建
linux kernel从 2.6 到 3.0 3.4 ... devfs已经被抛弃。 kernel交互的方式有 sysfs procfs 还有就是/dev下的节点, 这些节点是如何被创建出来的呢。研究了半天,在kernel device_create代码看了遍,也只是发现创建了一堆sysfs节点和一些link。最后才发现是用户空间创建的。 android系统在system/原创 2012-08-30 23:51:08 · 3584 阅读 · 0 评论 -
ARM TRUSTZONE 续
1.ARM有user ,supervisor , fiq, irq, undef,abort, system mode, 为了支持trustzone, arm 增加了一种mode : security monitor mode , 通过smc指令,进入这个mode 来进入 security world(state)--security monitor mode本身是属于security w原创 2012-06-25 10:11:56 · 3787 阅读 · 0 评论 -
linux 内存分配学习
搜集整理了一些概念 :<!--@page {margin:2cm}pre {font-family:"DejaVu Sans"}p {margin-bottom:0.21cm}-->writethough vs writeback1. writethoughwrite-through意思是写操作根本不使用缓存。数据总是直接写入磁盘。关闭写缓转载 2012-05-25 10:49:07 · 3372 阅读 · 0 评论 -
kernel启动失败的调试方法
最近porting linux kernel ,系统起不来,没有打印 搞了一两天,发现对kernel 启动调试已经很生疏了, 有点收获记录下来: 启动流程 首先是执行自解压,解压后重新跳转到0x40008000执行arch\arm\kernel\head.s : __HEADENTRY(stext) setmode PSR_F_BIT |原创 2012-03-21 14:58:28 · 5555 阅读 · 1 评论 -
GFP_ATOMIC & GFP_KERNEL kmalloc& vmalloc
GFP_ATOMIC means roughly "make the allocation operation atomic". Thismeans that the kernel will try to find the memory using a pile of freememory set aside for urgent allocation. If that pile do转载 2012-03-04 12:15:35 · 3184 阅读 · 1 评论 -
The Android ION memory allocator
什么是ION ?我的理解就是google在android4.0引入的一种内存管理器,来替代之前各个芯片厂家自己的方案..以下是网上找到的: it has become clear that PMEM is considered obsolete and will be replaced by the ION memory manager . ION is a generaliz转载 2012-03-01 09:10:39 · 6076 阅读 · 0 评论 -
request_threaded_irq()
前几天看sd卡驱动,突然发现插拔检测中断使用了request_threaded_irq. 查到如下:为什么要提出中断线程化?在 Linux 中,中断具有最高的优先级。不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和软中断处理完毕后才能执行正常的任务,因此有可能造成实时任务得不到及时的处理。中断线程化之后,中断将作为内核线程运行而且被赋原创 2012-02-19 20:18:59 · 7072 阅读 · 2 评论 -
git 服务器
自己在ubuntu10.10建了个git 玩玩。根据网上的那些文章,走了不少弯路,记录下来过程:1)安装 apt-get install git git-core 安装git apt-get install git-daemon-run 安装git deamon run 服务apt-get install gitk 这个gitk命令可以查看当前代码分支的结构,和window原创 2012-02-29 13:14:58 · 764 阅读 · 0 评论 -
linux 内存分配方法
基于linux 驱动开发以及应用开发. 当想要分配内存的时候,要面对很多的内存分配函数: malloc kmalloc vmalloc alloc_page dma_alloc ...简单归纳如下:malloc: 分配用户空间内存 .不保证物理连续.linux中用户空间和内核空间不能直接互相访问内存,要通过copy_from_user copy_to_user 或者mmap影射.km原创 2012-08-25 14:11:22 · 858 阅读 · 0 评论 -
如何参与Linux内核开发(转载)
本文来源于linux内核代码的Document文件夹下的Hoto文件。Chinese translated version of Documentation/HOWTOIf you have any comment or update to the content, please contact theoriginal document maintainer directly.转载 2013-05-20 16:50:47 · 1410 阅读 · 0 评论 -
ubuntu 登录输入密码后无法登录
今天重启电脑, 登录后闪烁了一下又回到ubuntu登录界面. 首先alt+ctrl+f1切换到命令行模式登录。查看用户目录下的.xsession-errorscurrent session already has an ibus-daemon.mkdtemp: private socket dir: Permission denied原来试tmp目录权限的问题。 c原创 2013-05-20 17:14:25 · 771 阅读 · 0 评论 -
Linux睡眠休眠状态
Linux睡眠休眠能否像我们常用的windows系统提供睡眠和休眠状态。在Linux睡眠休眠中,睡眠有两种方式:mem和standby,休眠也有两种方式:shutdown和platform。每种方式都会有些不同。在作之前,先检查一下你的内核能支持哪些方式: # cat /sys/power/state standby disk Linux睡眠休眠:1. 睡眠 (slee转载 2013-06-05 12:56:40 · 939 阅读 · 0 评论 -
spinlock分析
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。 信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(_trylock的转载 2013-06-05 12:38:06 · 654 阅读 · 0 评论 -
linux调整睡眠唤醒顺序
linux中有各个模块init函数放在init断中。最先init的设备(驱动最先被注册),睡眠唤醒的时候最后被suspend最先被resume。根据这个原理可以用来调整睡眠唤醒的顺序。首先看./include/linux/init.h中定义了一些init的顺序:#define __define_initcall(level,fn,id) \ static initca原创 2013-06-05 12:32:27 · 1618 阅读 · 0 评论 -
linux 延时的精度
低精度sleep:msleep: sleep过程中一定会完成指定之间,并且sleep中进程不能被killmsleep_interruptible: msleep会保证所需的延时一定会被执行完,而msleep_interruptible则可以在延时进行到一半时被信号打断而退出延时,剩余的延时数则通过返回值返回。高精度sleep除了hrtimer_nanosleep,高精度原创 2013-06-05 12:30:39 · 4114 阅读 · 0 评论 -
linux kernel 自解压过程
linux 解压后会跳转到,kernel执行地址: head.S中入口执行。解压之前的操作流程呢?1. linux kernel 被uboot load到内存后的入口函数arch/arm/boot/compressed/vmlinux.lds.in中定义了linux 入口: OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{..原创 2013-06-04 10:06:27 · 1759 阅读 · 0 评论