Android Mount Daemon

本文详细介绍了Android系统中Mount服务的工作原理。Mount服务通过本地UNIX域套接字与mountd进行交互,完成设备挂载任务,并监听USB状态变化。此外,还介绍了Mount服务如何广播设备状态变更的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[First written by Steve Guo, please keep the mark if forwarding.] The original URL from : http://letsgoustc.spaces.live.com/blog/cns!89AD27DFB5E249BA!470.entry

Here is the overall picture.

StorageMount

There are two processes in the scenario. Mountd is a native application which does the real mount work. While MountService in system_server application is a JAVA layer service, it communicates with mountd through “/dev/socket/mountd” local UNIX domain socket.

Mountd first creates mount point list parsed from “/system/etc/mountd.conf” configuration file. Then it tries to mount devices defined in the configuration file. It opens another thread for automatically monitor inotify event for “/dev/block/” directory and uevent for USB mass storage. This thread is for monitor SD card and USB is plugged in or not. Finally in the main thread, mountd will listen on the ANDROID_SOCKET_mountd local UNIX domain socket to receive commands from MountService and send events to MountService.

The uevent for USB is observed if it contains these two strings: “POWER_SUPPLY_TYPE=USB”, “POWER_SUPPLY_ONLINE=”+[“1” | “0”].

The commands and events between MountService and mountd are all plain texts. It’s easy to understand.

MountService will broadcast the following intents for any interested clients if it receives any event from mountd:

ACTION_UMS_CONNECTED,

ACTION_UMS_DISCONNECTED,

ACTION_MEDIA_REMOVED,

ACTION_MEDIA_UNMOUNTED,

ACTION_MEDIA_MOUNTED,

ACTION_MEDIA_SHARED,

ACTION_MEDIA_BAD_REMOVAL,

ACTION_MEDIA_UNMOUNTABLE,

ACTION_MEDIA_EJECT.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值