showstopper_x
码龄11年
关注
提问 私信
  • 博客:100,274
    社区:679
    100,953
    总访问量
  • 42
    原创
  • 1,969,498
    排名
  • 36
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:新加坡
  • 加入CSDN时间: 2014-05-15
博客简介:

Burning Water

博客描述:
没有什么能够阻挡,你对自由的向往
查看详细资料
个人成就
  • 获得17次点赞
  • 内容获得3次评论
  • 获得78次收藏
创作历程
  • 2篇
    2019年
  • 11篇
    2017年
  • 5篇
    2016年
  • 20篇
    2015年
  • 6篇
    2014年
成就勋章
TA的专栏
  • Uboot
    6篇
  • ARM硬件编程
  • 内核学习
  • kernel
    19篇
  • git
  • 出错与技巧
  • android
    3篇
  • interrupt
    10篇
  • kernel进程
    3篇
  • binder
    2篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Binder系列()——addService——代码分析

概述addService的过程涉及三个模块:Service,service通过调用service manager的addService接口将自己注册到SM,本质上是client;SM,接收service的注册请求,本质上是server;Binder Driver,负责CS之间的数据传输和kernel中关键数据结构的建立。client看了网上很多资料都是以media service为...
原创
发布博客 2019.05.16 ·
794 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

Binder系列(1)——ServiceManager

1. 概述在一台Android 8.1的手机中,能看到三个servicemanager:servicemanager,管理系统服务,本文只讨论servicemanager;vndservicemanager,管理厂商服务,对应的文件节点是/dev/vndbinder,servicemanager和vndservicemanager使用的是同一份代码,都是由service_manager.c...
原创
发布博客 2019.04.07 ·
1007 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

kernel 系统调用----system call

Init在trap_init中对SYSCALL_VECTOR(编号0x80)的向量进行初始化。 808 set_system_trap_gate(SYSCALL_VECTOR, &system_call);将system call初始化为trap门,加入到IDT table中,发生中断以后,会跳转到对应system_call的地址去执行后续的中断流程。发生中断到跳转执行中断向量的过程在ker
原创
发布博客 2017.02.28 ·
1609 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Linux进程创建三——fork、vfork、clone、kernel_thread

前言Linux创建线程的API主要有fork、vfork、clone、kernel_thread,最终都调用了do_fork。 do_fork的具体流程在上一篇已经分析完毕Linux进程创建二——do_forkfork、vfork、clone都是系统调用,用来实现用户空间的进程创建。 内核空间创建的进程称为内核线程,主要通过kernel_thread,对kernel_thread进行包装的API
原创
发布博客 2017.01.17 ·
1711 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux进程创建二——do_fork

前言kernel在启动初期并没有“进程”这个概念,如果不涉及支持多任务并发、调度,kernel可以一直以一个控制流运行。本篇从内核初始化时的0进程开始分析,延伸到多进程的创建。0 进程内核中的所有进程都存在依赖关系,进程有父进程、子进程、兄弟进程。0号进程为所有进程的祖先进程,又称为idle进程、swapper进程。init_task如前文所述,内核在初始化初期没有进程的概念,
原创
发布博客 2017.01.17 ·
967 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

What are threads (user/kernel)?

What are threads (user/kernel)?Threads are “light weight processes” (LWPs). The idea is a process has five fundamental parts: code (“text”), data (VM), stack, file I/O, and signal tables. “Heavy-weig
原创
发布博客 2017.01.13 ·
460 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux进程创建一——进程、线程、LWP

前言本篇主要对进程和线程的概念进行分析,kernel中的进程、线程模型,涉及进程、用户态线程、内核态线程、轻量级进程(LWP),在分析之前,需要阅读What is Thread?,该文章有便于理解操作系统中线程、用户态线程和内核态线程的对应关系。 根据资料和我的理解,不同操作系统对线程和进程的理解及对应关系稍有不同,本篇只针对Linux操作系统。 本篇文章是阅读ULK3及网上相应文章后的个人总结
原创
发布博客 2017.01.12 ·
954 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

kernel中断分析七——tasklet

Abstract在Kernel 中断分析六——softirq中,分析了软中断的处理流程,那么bottom half还剩下tasklet与waitqueue。tasklet是在软中断基础上实现的一种延迟机制,当然同样运行在中断上下文,而waitqueue运行在进程上下文,允许睡眠。Taskletkernel中有定义了十种软中断类型,其中HI_SOFTIRQ、TASKLET_SOFTI
原创
发布博客 2017.01.10 ·
1523 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Kernel 中断分析六——softirq

Abstract目前kernel中的中断机制主要有top half、bottom half(softirq、tasklet、waitqueue)、threaded irq handler。top half不用赘述,我把threed irq handler与bottom half区分开,是因为他们有以下区别: 1、调度方式 threaded irq handler被系统调度器调度,botto
原创
发布博客 2017.01.08 ·
2458 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

kernel 中断分析五——irq_thread

前言在x86 kernel 中断分析三——中断处理流程中,对于线程化中断处理函数,handle_irq_event_percpu调用了irq_wake_thread唤醒action->thread,此处唤醒的thread创建于__setup_irq,代码如下: 947 t = kthread_create(irq_thread, new, "irq/%d-%s", ir
原创
发布博客 2017.01.06 ·
4241 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

kernel 中断分析之四——中断申请 [下]

前言在kernel 中断分析之四——中断申请 [上]中,request_irq、request_threaded_irq、setup_irq、setup_percpu_irq、request_percpu_irq最终都调用了__setup_irq,本篇对该API进行分析,由于代码比较长,分段分析。请注意,在分析过程中,遇到一些拿捏不定的地方,以用粗体表示,如果有理解错误,欢迎指正。__
原创
发布博客 2017.01.05 ·
3548 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

kernel 中断分析之四——中断申请[上]

前言从分析三可知,中断处理最终调用了irqaction的handler和thread_fn,分别对应interrupt context和process context。 对应的中断服务例程是在驱动初始化阶段,通过request_irq或者request_threaded_irq进行申请,注册的,本篇主要对这两个接口进行分析。request_threaded_irq关于中断线程化的目的
原创
发布博客 2017.01.04 ·
3417 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

x86 kernel 中断分析三——中断处理流程

CPU检测中断CPU在执行每条程序之前会检测是否有中断到达,即中断控制器是否有发送中断信号过来查找IDTCPU根据中断向量到IDT中读取对应的中断描述符表项,根据段选择符合偏移确定中断服务程序的地址见附录2interrupt数组在分析一中,我们看到,填充IDT中断服务程序的是interrupt数组的内容,所以第2步跳转到interrupt数组对应的表项,表项的内容之前也已分析过push vector
原创
发布博客 2017.01.03 ·
3794 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

x86 kernel 中断机制分析二——irq_desc

简介irq_desc数据结构用于描述一个irq对应的各种信息,主要有以下方面: irq_data,描述该irq的irq number,irq chip,irq domain,处理器亲和力等等 handle_irq,highlevel irq-events handler,流处理函数 irq_action,一个链表,每个成员包含该irq中断处理函数等信息 depth,中断嵌套深度 name,
原创
发布博客 2016.12.29 ·
2604 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

x86 kernel 中断机制分析一——IDT

本篇主要分析IDT的初始化流程。IDT简介IDT——interrupt description table,用来描述中断异常向量,表中的每一个entry对应一个向量。IDT entry:每个entry为8bytes,有以下关键bit: 16~31:code segment selector 0~15 & 46-64:segment offset (根据以上两项可确定中断处理函数的地址) Typ
原创
发布博客 2016.12.29 ·
3624 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

Moving interrupts to threads(翻译)

翻译一篇来自lwn.net上关于kernel中断线程化的文章,比较老(08年),但还是很有学习意义。kernel中的响应延迟主要来自于处理硬件中断,因为处理中断的过程中,其他中断被block。为此,realtime tree有一个叫做“线程化中断处理(threaded interrupt handler)”的新功能,目的在于将关闭中断的时间减小到最低,将其余的处理过程(其实就是bottom half
翻译
发布博客 2016.12.28 ·
579 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Android Developer Sensor Overview(翻译)

通过Android framework层,你可以获取可用的Sensor的Raw data。Sensor framework层提供了一些类和接口以便于开发者实现各种需求,比如,你可以完成以下实现:1. 选择设备上的哪个sensor可用2. 制定一个独立的sensor所具备的功能属性,比如,最大测量范围,制造商,功耗需求,解析度(resolution)等3. 获取raw data并且定义数据采集的最小
翻译
发布博客 2016.11.08 ·
858 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

windows下cygwin+ctags+cscope

安装cygwin a.官网下载,安装(先不用着急选源和package,后面可以统一配置安装) b.下载apt-cyg,这个工具在源上好像下载不到,CSDN上有,附链接:http://download.csdn.net/detail/u011836061/8694571 b1、将下载好的apt-cyg拷贝到/bin目录下 b2、修改权限 (chmod +x /bin/apt-c
原创
发布博客 2016.06.05 ·
990 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux cmdline 解析(CMA 预留内存)

Linux Version:3.14 Android : Lcmdline在kernel启动的时候被解析. cmdline启动的log中可以看到,比如我的是command_line = androidboot.bootloader=1537.100_M1S1 androidboot.serialno=004999010640000 bl_shared_ram=4k@0xfff4f000 con
原创
发布博客 2015.09.25 ·
4938 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

start_kernel——setup_per_cpu_areas

setup_per_cpu_areas是为了对内核的内存管理(mm)进行初始化而调用的函数之一。只在SMP系统中调用,UP中不执行任何操作。 setup_per_cpu_areas函数为SMP的每个处理器生成per-cpu数据。 per-cpu数据按照不同的CPU类别使用,以将性能低下引发的缓存一致性(cache coherency)问题减小到最小。per-cpu数据由各cpu独立使用,即使不锁
原创
发布博客 2015.07.07 ·
1898 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏
加载更多