Android Vold架构

article/2025/10/2 18:34:08

1. 总体架构

2. 流程概览

2.1 开启Vold

2.2 引导Uevent

2.3 处理事件


 

Vold - Volume Daemon存储类的守护进程,作为Android的一个本地服务,负责处理诸如SD、USB等存储类设备的插拔等事件。

1. 总体架构

Vold服务由volumeManager统一管控,它将具体任务分别分派给netlinkManager, commandListener, directVolume, Volume去完成。

Vold服务向下通过socket机制与底层驱动交互,向上通过JNI, intent, socket, doCommand等机制与Java Framework交互。

 

 2 流程概览

2.1 开启服务

初始化Android系统时开启Vold本地服务,

Vold在/dev/block下创建vold文件夹,开启VolumeManager, NetlinkManager, CommandListener。

2.2 引导Uevent

NetlinkManager负责监听底层Linux上报的uevent事件。

 

系统的SocketListner统一管理所有socket事件。

NetlinkListner负责解析socket事件。

最后由onEvent()将vold事件交还给NetlinkManager处理。

2.3 处理Block和Switch事件

NetlinkManager调用VolumeManager中处理vold事件的类。

handleBlockEvent()完成SD的挂载和卸载,具体交由DirectVolume完成。

handleSwitchEvent()完成由USB实现的U盘的连接。

两者最后都是通过setBroadcast()将ResponsibleCode经过nativeDaemonConnector的socket监听机制,最终上传到MountService作统一规划。

MountService里的onEvent()得到解析后的事件,完成两大任务,

-> 发送命令doCommand()通过commandListener传递给volumeManager

-> 将事件信息广播给相关服务,供上层应用使用。


http://chatgpt.dhexx.cn/article/Bslofhtt.shtml

相关文章

Vold 流程介绍

文章目录 前言框架MountService 流程Vold 流程 前言 印象中是参考 《深入理解 Android 卷 1 》 追的流程,差不多供参考吧 基于安卓 4.4 框架 MountService 流程 /*【初始化流程总结】: SystemServerinitAndLoop()// 创建 MountService 服务对象mountS…

ANDROID中的VOLD分析

现在可能很少有人会用mknod这个命令了,也很少有使用它的机会,但就在几年前,这还是一项linux工程师的必备技能,在制作文件系统前或加载新的驱动前,我们必须小心翼翼的创建设备节点。 不需要使用mknod并不是他消失了&am…

Android -- Vold机制简要分析

Android -- Vold机制简要分析 Vold是用于管理和控制Android外部存储介质的后台进程,这里说的管控,主要包括SD卡的插拔、挂载/卸载和格式化等;它是Android平台外部存储系统的管控枢纽。 Vold的整个控制模块主要由三个类模块构成:Ne…

Android Vold简介(一)

Vold(volume Daemon),即Volume守护进程,用来管理Android中存储类的热拔插事件,处于Kernel和Framework之间,是两个层级连接的桥梁。先来看一下Vold在Android系统的整体架构。 该图主要包含了Framework和Vold进程的,Ke…

vold

一、Vold工作机制 Vold是Volume Daemon的缩写,它是Android平台中外部存储系统的管控中心,是管理和控制Android平台外部存储设备的后台进程。其功能主要包括:SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。 如上图所示,Vold中的…

Vold工作流程分析学习

一 Vold工作机制分析 vold进程:管理和控制Android平台外部存储设备,包括SD插拨、挂载、卸载、格式化等; vold进程接收来自内核的外部设备消息。 Vold框架图如下: Vold接收来自内核的事件,通过netlink机制。 Netlink 是…

Android vold介绍

目录 1. 前言2. vold概述3. vold初始化|- -vm->start()|- -process_config|- -hardware::configureRpcThreadpool|- -vold::VoldNativeService::start|- -nm->start() 4. StorageManagerService|- -SM与vold建立关联|- - -startService(serviceClass) |- -StorageManager…

<Android开发> Android vold - 第一篇 vold前言简介

本系列主要介绍 Android vold,分为以下篇章 <Android开发> Android vold - 第一篇 vold前言简介 <Android开发> Android vold - 第二篇 vold 的main()函数简介 <Android开发> Android vold - 第…

Vold原理介绍

一、 Vold简介 Android中Vold是volume Daemon,即Volume守护进程,用来管理Android中存储类的热拔插事件。这里的热插拔涉及的场景如: 1. 手机usb以MTP或者传输照片方式插拔PC端后磁盘数据的挂卸载; 2. 设备开关机过程中存储设备各分…

C语言Switch....case用法

概述 C语言switch语句通常用于多个条件判断,根据不同情况执行不同的代码块。它的使用形式如下: switch(表达式) { case 常量表达式1: 语句序列1 break; case 常量表达式2: 语句序列2 break; ...... default…

MySQL 入门:Case 语句很好用

引言 MySQL CASE 是一个 MySQL 语句查询关键字,它定义了处理循环概念以执行条件集并使用 IF ELSE 返回匹配案例的方式。 MySQL 中的 CASE 是一种控制语句,它验证条件案例集,并在第一个案例满足 else 值时显示值并退出循环。 如果没有找到 T…

Shell 编程之 case 语句

一、case 语句 1、case 语句概述 (1)case 语句的作用 使用 case 语句改写 if 多分支可以使脚本结构更加清晰、层次分明。针对变量的不同取 值,执行不同的命令序列。 2、case 语句的结构: case 变量值 in 模式 1) 命令序列 1 ;; 模式 2) 命令序列 2 ;; *…

【shell】case实现简单的系统工具箱

case实现简单的系统工具箱 case实现简单的系统工具箱 #!/usr/bin/bash #system manage #by racon 2020-04-19menu() {cat <<-EOF########################################## h. help ## f. disk partition ## d. filesystem mount ## m. memory ## u. system lo…

SQL CASE语句的使用

SQL CASE语句的使用 CASE是一个控制流语句&#xff0c;其作用与IF-THEN-ELSE语句非常相似&#xff0c;可根据数据选择值。 CASE语句遍历条件并在满足第一个条件时返回值。 因此&#xff0c;一旦条件成立&#xff0c;它将短路&#xff0c;从而忽略后面的子句并返回结果。 正如我…

数据库 case 用法

【转载】:数据库中case when 的用法 CASE WHEN 及 SELECT CASE WHEN的用法Case具有两种格式。简单Case函数和Case搜索函数。 1.简单Case函数 CASE sex WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 其他 END 2.Case搜索函数 CASE WHEN sex 1 THEN 男 WHEN sex 2 THEN 女 ELSE 其他 …

SQL之CASE WHEN用法详解

简单CASE WHEN函数&#xff1a; CASE SCORE WHEN A THEN 优 ELSE 不及格 END CASE SCORE WHEN B THEN 良 ELSE 不及格 END CASE SCORE WHEN C THEN 中 ELSE 不及格 END 等同于&#xff0c;使用CASE WHEN条件表达式函数实现&#xff1a; CASE WHEN SCORE A THEN 优WHEN SCORE…

switch case语法

文章目录 switch case组合不要拿青龙偃月刀去削苹果case的作用是什么&#xff1f;break的作用是什么&#xff1f;case后面的值有什么要求吗&#xff1f;case语句的排列顺序问题default语句相关问题使用case语句的一些注意事项 switch case组合 基本语法结构 switch(整型常量/…

SQL中case的使用方法

Case具有两种格式。简单Case函数和Case搜索函数。 1.简单Case函数 CASE sex WHEN 1 THEN 男WHEN 2 THEN 女 ELSE 其他 END2.Case搜索函数 CASE WHEN sex 1 THEN 男WHEN sex 2 THEN 女ELSE 其他 END3.简单case函数 VS case搜索函数 这两种方式&#xff0c;可以实现相同的功…

[转载]常用CASE工具介绍

[转载]常用CASE工具介绍转载自&#xff1a;http://www.cnblogs.com/powerlc/archive/2006/01/12/315959.html 一&#xff0c;概述 今天, 代码变得日益简单, 在Model的指导下, 思想, 设计, 分析都变得异常重要。企业业务建模工具, 产品非常多, 特别是在MDA日益流行的今天. Work…

CASE语句的使用方法

CASE语句有两种&#xff1a; 一种是case [column] when&#xff0c;指定了判断条件所在的列。 另一种是case when [column]&#xff0c;因为条件在子句中所以能对任意列进行判断。 本例建立一个员工表&#xff0c;有员工id&#xff08;id&#xff09;&#xff0c;员工姓名&am…