Android Vold架构(二)

1. 总体架构

2. 流程概览

2.1 开启Vold

2.2 引导Uevent

2.3 处理事件

 static const char *stateToStr(int state) {
    if (state == Volume::State_Init)
        return "Initializing";
    else if (state == Volume::State_NoMedia)
        return "No-Media";
    else if (state == Volume::State_Idle)
        return "Idle-Unmounted";
    else if (state == Volume::State_Pending)
        return "Pending";
    else if (state == Volume::State_Mounted)
        return "Mounted";
    else if (state == Volume::State_Unmounting)
        return "Unmounting";
    else if (state == Volume::State_Checking)
        return "Checking";
    else if (state == Volume::State_Formatting)
        return "Formatting";
    else if (state == Volume::State_Shared)
        return "Shared-Unmounted";
    else if (state == Volume::State_SharedMnt)
        return "Shared-Mounted";
    else
        return "Unknown-Error";
}

 

TF 插入状态:

from  0 (No-Media) to 2 (Pending)

 from 0 (No-Media) to 2 (Pending)

 from 2 (Pending) to 1 (Idle-Unmounted)

 from 1 (Idle-Unmounted) to 3 (Checking)

from 2 (Pending) to 1 (Idle-Unmounted)

from 1 (Idle-Unmounted) to 3 (Checking)

from 3 (Checking) to 4 (Mounted)

from 3 (Checking) to 4 (Mounted)

 

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

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

 

插入TF card log:

 root@xxxdroid:/ # [ 2160.195060] [mmc]: mmc 0 detect change, present 1
[ 2160.700078] [mmc]: sdc0 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2160.711484] [mmc]: sdc0 power_supply is null
[ 2160.740049] [mmc]: sdc0 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2160.772396] [mmc]: *** sunxi_mci_dump_errinfo(L826): smc 0 err, cmd 52,  RTO !!
[ 2160.781740] [mmc]: *** sunxi_mci_dump_errinfo(L826): smc 0 err, cmd 52,  RTO !!
[ 2160.790158] [mmc]: sdc0 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2160.810274] [mmc]: sdc0 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2160.827984] *******************Try sdio*******************
[ 2160.835223] [mmc]: *** sunxi_mci_dump_errinfo(L826): smc 0 err, cmd 5,  RTO !!
[ 2160.844305] [mmc]: *** sunxi_mci_dump_errinfo(L826): smc 0 err, cmd 5,  RTO !!
[ 2160.855896] [mmc]: *** sunxi_mci_dump_errinfo(L826): smc 0 err, cmd 5,  RTO !!
[ 2160.865189] [mmc]: *** sunxi_mci_dump_errinfo(L826): smc 0 err, cmd 5,  RTO !!
[ 2160.873522] *******************Try sd *******************
[ 2160.880366] [mmc]: sdc0 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2160.892015] [mmc]: sdc0 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2160.909979] [mmc]: sdc0 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2161.061552] [mmc]: sdc0 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 2161.073742] [mmc]: sdc0 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 2161.090552] [mmc]: sdc0 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 2161.106316] [mmc]: sdc0 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 2161.118127] mmc0: new high speed SDHC card at address 1234
--------- beginning of /dev/log/[ 2161.128164] mmcblk0: mmc0:1234 SA04G 3.63 GiB
main
V/EventManager(   60): <line[0643] ueventLoop()> uevent_lo[ 2161.137952]  mmcblk0: p1
op add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmc0:1234
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/platform/sunxi-mmc.0/[ 2161.161573] mmcblk mmc0:1234: Card claimed for testing.
mmc_host/mmc0/mmc0:1234
V/Event[ 2161.168581] mmc0:1234: SA04G 3.63 GiB
Manager(   60): <line[0598] chec[ 2161.177640] *******************sd init ok*******************
kTFCard()> tmp_end:c0:1234
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmc0:1234
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:c0:1234
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop add@/devices/virtual/bdi/179:0
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :179:0
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/virtual/bdi/179:0
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:i/179:0
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop add@/devices/virtual/bdi/179:0
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :179:0
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/virtual/bdi/179:0
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:i/179:0
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmcblk0
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmcblk0
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:mmcblk0
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:mmcblk0
D/CedarXRecorder(   58): (f:setSdcardState, l:676) mbSdCardState[1]
D/VolumeManager(   57): VolumeManager----------------
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
D/Volume  (   57): ---createDeviceNode---path=/dev/block/vold/179:0
E/Volume  (   57): line=205,setState oldState=0,state=2
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
D/DirectVolume(   57): line=128,devtype=disk
D/DirectVolume(   57): line=179,handleDiskAdded mDiskNumParts=1
E/Volume  (   57): line=205,setState oldState=2,state=2
W/Volume  (   57): line=207,Duplicate state (2)
D/Volume  (   57): line=198,mState=2
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:74):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 0 (No-Media) to 2 (Pending)
V/StorageMonitor(   60): line=166, notify: mStatus = 2, mPath = /mnt/extsd
D/CedarXRecorder(   58): (f:setSdcardState, l:676) mbSdCardState[1]
D/VolumeManager(   57): VolumeManager----------------
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
D/Volume  (   57): ---createDeviceNode---path=/dev/block/vold/179:0
E/Volume  (   57): line=205,setState oldState=0,state=2
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
D/DirectVolume(   57): line=128,devtype=disk
D/DirectVolume(   57): line=179,handleDiskAdded mDiskNumParts=1
E/Volume  (   57): line=205,setState oldState=2,state=2
W/Volume  (   57): line=207,Duplicate state (2)
D/Volume  (   57): line=198,mState=2
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:74):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 0 (No-Media) to 2 (Pending)
V/StorageMonitor(   60): line=166, notify: mStatus = 2, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 2, mInserted = 1, mPath = /mnt/extsd.
D/VolumeManager(   57): VolumeManager----------------
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
D/Volume  (   57): ---createDeviceNode---path=/dev/block/vold/179:1
E/Volume  (   57): line=205,setState oldState=2,state=2
W/Volume  (   57): line=207,Duplicate state (2)
D/DirectVolume(   57): line=131,devtype=partition
D/DirectVolume(   57): handlePartitionAdded devpath=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1,mPartsEventCnt=0
D/DirectVolume(   57): handlePartitionAdded mDiskNumParts=1,mPartsEventCnt=1
D/Volume  (   57): line=198,mState=2
E/Volume  (   57): line=205,setState oldState=2,state=1
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
D/Volume  (   57): getShareFlags mShareFlags = 1
D/Volume  (   57): line=198,mState=1
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:80):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 2 (Pending) to 1 (Idle-Unmounted)
V/StorageMonitor(   60): line=166, notify: mStatus = 1, mPath = /mnt/extsd
D/StorageMonitor(   60): line=174,mShared=0, mSharing = 0, mFormated=0, mFormating = 0, mInserted = 1
D/StorageMonitor(   60): call mListener->notify, mStatus = 1, mInserted = 1, mPath = /mnt/extsd.
D/CommandListener(   57): CommandListener::VolumeCmd::runCommand
D/CommandListener(   57):  argv[1]=mount
D/CommandListener(   57): 3333argv[1]=mount,argc=3
D/VolumeManager(   57): line=1116,mountVolume label=/mnt/extsd
D/Volume  (   57): line=198,mState=1
D/Volume  (   57): line=477,mountVol state : 1
D/Volume  (   57): line=198,mState=1
D/Volume  (   57): line=198,mState=1
D/DirectVolume(   57): getDeviceNodes mPartIdx=-1,mDiskNumParts=1
D/Volume  (   57): line=566,Volume::mountVol: mMountpoint /mnt/extsd
I/Volume  (   57): line=573,mountVol: n=1
I/Volume  (   57): line=581,/dev/block/vold/179:1 being considered for volume extsd
E/Volume  (   57): line=205,setState oldState=1,state=3
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:49):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=630 Volume extsd /mnt/extsd disk inserted (179:0)
W/StorageMonitor(   60): Error parsing status
V/StorageMonitor(   60): line=166, notify: mStatus = -1, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = -1, mInserted = 1, mPath = /mnt/extsd.
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:81):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 1 (Idle-Unmounted) to 3 (Checking)
V/StorageMonitor(   60): line=166, notify: mStatus = 3, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 3, mInserted = 1, mPath = /mnt/extsd.
D/StorageMonitor(   60): updateLoop finished
V/Menu.cpp(   60): <line[0079] MenuProc()> ******[debug_jaosn]:this  message is STBM_MOUNT_TFCARD *******
V/Menu.cpp(   60): <line[0080] MenuProc()> ******[debug_jaosn]:this  message is wParam :1*******
V/Menu.cpp(   60): <line[0084] MenuProc()> /mnt/extsd/full_img.fex not exist
V/Menu.cpp(   60): <line[0294] getMenuObj()> index is 0, current MenuObj is 0x0x40b4afc0
V/MenuSystem(   60): <line[0338] HandleSubMenuChange()> menuObj 1, set menuIndex false
V/ResourceManager.cpp(   60): <line[1787] setResBoolValue()> setResBoolValue: resID: 44, value: 0
I/ResourceManager.cpp(   60): <line[1845] setResBoolValue()> FIRMWARE: value is 0
V/Menu.cpp(   60): <line[0854] getFirstValueImages()> ************************MenuObj 1, getFirstValueImages menuIndex is 13
V/ResourceManager.cpp(   60): <line[1611] getResBmpSubMenuCheckbox()> 0:/full_img.fex not exist
V/MenuSystem(   60): <line[0376] HandleSubMenuChange()> xxxxxxxx
V/MenuSystem(   60): <line[0378] HandleSubMenuChange()> xxxxxxxx
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmcblk0p1
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:cblk0p1
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/Dialog.cpp(   60): <line[0081] ShowTipLabel()> <***ShowTipLabel ***>, labelIndex 14
V/Dialog.cpp(   60): <line[0064] getTipLabelData()> titleHeight is 40
V/Dialog.cpp(   60): <line[0141] ShowTipLabel()> ****************ptext:(null)
V/Dialog.cpp(   60): <line[0162] ShowTipLabel()> *****************text:妫€娴嬪埌SD鍗″凡鎻掑叆
V/TipLabel.cpp(   60): <line[0091] DialogProc()> set timeOut 3000 ms
I//system/bin/fsck_msdos(   57): ** /dev/block/vold/179:1
I//system/bin/fsck_msdos(   57): /dev/block/vold/179:1: FILESYSTEM CLEAN; SKIPPING CHECKS
D/Volume  (   57): line=619,FS checks /dev/block/vold/179:1
D/StorageMonitor(   60): call mListener->notify, mStatus = 2, mInserted = 1, mPath = /mnt/extsd.
D/VolumeManager(   57): VolumeManager----------------
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
D/Volume  (   57): ---createDeviceNode---path=/dev/block/vold/179:1
E/Volume  (   57): line=205,setState oldState=2,state=2
W/Volume  (   57): line=207,Duplicate state (2)
D/DirectVolume(   57): line=131,devtype=partition
D/DirectVolume(   57): handlePartitionAdded devpath=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1,mPartsEventCnt=0
D/DirectVolume(   57): handlePartitionAdded mDiskNumParts=1,mPartsEventCnt=1
D/Volume  (   57): line=198,mState=2
E/Volume  (   57): line=205,setState oldState=2,state=1
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
D/Volume  (   57): getShareFlags mShareFlags = 1
D/Volume  (   57): line=198,mState=1
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:80):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 2 (Pending) to 1 (Idle-Unmounted)
V/StorageMonitor(   60): line=166, notify: mStatus = 1, mPath = /mnt/extsd
D/StorageMonitor(   60): line=174,mShared=0, mSharing = 0, mFormated=0, mFormating = 0, mInserted = 1
D/StorageMonitor(   60): call mListener->notify, mStatus = 1, mInserted = 1, mPath = /mnt/extsd.
D/CommandListener(   57): CommandListener::VolumeCmd::runCommand
D/CommandListener(   57):  argv[1]=mount
D/CommandListener(   57): 3333argv[1]=mount,argc=3
D/VolumeManager(   57): line=1116,mountVolume label=/mnt/extsd
D/Volume  (   57): line=198,mState=1
D/Volume  (   57): line=477,mountVol state : 1
D/Volume  (   57): line=198,mState=1
D/Volume  (   57): line=198,mState=1
D/DirectVolume(   57): getDeviceNodes mPartIdx=-1,mDiskNumParts=1
D/Volume  (   57): line=566,Volume::mountVol: mMountpoint /mnt/extsd
I/Volume  (   57): line=573,mountVol: n=1
I/Volume  (   57): line=581,/dev/block/vold/179:1 being considered for volume extsd
E/Volume  (   57): line=205,setState oldState=1,state=3
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:49):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=630 Volume extsd /mnt/extsd disk inserted (179:0)
W/StorageMonitor(   60): Error parsing status
V/StorageMonitor(   60): line=166, notify: mStatus = -1, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = -1, mInserted = 1, mPath = /mnt/extsd.
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:81):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 1 (Idle-Unmounted) to 3 (Checking)
V/StorageMonitor(   60): line=166, notify: mStatus = 3, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 3, mInserted = 1, mPath = /mnt/extsd.
D/StorageMonitor(   60): updateLoop finished
V/Menu.cpp(   60): <line[0079] MenuProc()> ******[debug_jaosn]:this  message is STBM_MOUNT_TFCARD *******
V/Menu.cpp(   60): <line[0080] MenuProc()> ******[debug_jaosn]:this  message is wParam :1*******
V/Menu.cpp(   60): <line[0084] MenuProc()> /mnt/extsd/full_img.fex not exist
V/Menu.cpp(   60): <line[0294] getMenuObj()> index is 0, current MenuObj is 0x0x40b4afc0
V/MenuSystem(   60): <line[0338] HandleSubMenuChange()> menuObj 1, set menuIndex false
V/ResourceManager.cpp(   60): <line[1787] setResBoolValue()> setResBoolValue: resID: 44, value: 0
I/ResourceManager.cpp(   60): <line[1845] setResBoolValue()> FIRMWARE: value is 0
V/Menu.cpp(   60): <line[0854] getFirstValueImages()> ************************MenuObj 1, getFirstValueImages menuIndex is 13
V/ResourceManager.cpp(   60): <line[1611] getResBmpSubMenuCheckbox()> 0:/full_img.fex not exist
V/MenuSystem(   60): <line[0376] HandleSubMenuChange()> xxxxxxxx
V/MenuSystem(   60): <line[0378] HandleSubMenuChange()> xxxxxxxx
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmcblk0p1
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:add@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:cblk0p1
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/Dialog.cpp(   60): <line[0081] ShowTipLabel()> <***ShowTipLabel ***>, labelIndex 14
V/Dialog.cpp(   60): <line[0064] getTipLabelData()> titleHeight is 40
V/Dialog.cpp(   60): <line[0141] ShowTipLabel()> ****************ptext:(null)
V/Dialog.cpp(   60): <line[0162] ShowTipLabel()> *****************text:妫€娴嬪埌SD鍗″凡鎻掑叆
V/TipLabel.cpp(   60): <line[0091] DialogProc()> set timeOut 3000 ms
I//system/bin/fsck_msdos(   57): ** /dev/block/vold/179:1
I//system/bin/fsck_msdos(   57): /dev/block/vold/179:1: FILESYSTEM CLEAN; SKIPPING CHECKS
D/Volume  (   57): line=619,FS checks /dev/block/vold/179:1
--------- beginning of /dev/log/system
I/Vold    (   57): Filesystem check completed OK
D/Vold    (   57): line=126,mount ret=0
E/Volume  (   57): line=642,Device /dev/block/vold/179:1, target /mnt/extsd mounted @ /mnt/secure/staging
E/Volume  (   57): line=205,setState oldState=3,state=4
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:74):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 3 (Checking) to 4 (Mounted)
V/StorageMonitor(   60): line=166, notify: mStatus = 4, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 4, mInserted = 1, mPath = /mnt/extsd.
V/StorageManager(   60): <line[0138] notify()> ~~mounted
D/StorageManager(   60): <line[0868] dbReset()> dbReset 868 0x40b5ef60
D/CedarXRecorder(   58): (f:setSdcardState, l:676) mbSdCardState[1]
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:33):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=200 11 volume operation succeeded
W/StorageMonitor(   60): Error parsing status
V/StorageMonitor(   60): line=166, notify: mStatus = -1, mPath = operation
D/StorageMonitor(   60): call mListener->notify, mStatus = -1, mInserted = 1, mPath = operation.
E/StorageManager(   60): <line[0846] getFiles()> /mnt/extsd/video/.thumb is not a regular file
E/StorageManager(   60): <line[0846] getFiles()> /mnt/extsd/photo/.thumb is not a regular file
D/StorageMonitor(   60): updateLoop finished
I/Vold    (   57): Filesystem check completed OK
D/Vold    (   57): line=126,mount ret=0
E/Volume  (   57): line=642,Device /dev/block/vold/179:1, target /mnt/extsd mounted @ /mnt/secure/staging
E/Volume  (   57): line=205,setState oldState=3,state=4
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x417c50b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:74):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 3 (Checking) to 4 (Mounted)
V/StorageMonitor(   60): line=166, notify: mStatus = 4, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 4, mInserted = 1, mPath = /mnt/extsd.
V/StorageManager(   60): <line[0138] notify()> ~~mounted
D/StorageManager(   60): <line[0868] dbReset()> dbReset 868 0x40b5ef60
D/CedarXRecorder(   58): (f:setSdcardState, l:676) mbSdCardState[1]
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:33):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=200 11 volume operation succeeded
W/StorageMonitor(   60): Error parsing status
V/StorageMonitor(   60): line=166, notify: mStatus = -1, mPath = operation
D/StorageMonitor(   60): call mListener->notify, mStatus = -1, mInserted = 1, mPath = operation.
E/StorageManager(   60): <line[0846] getFiles()> /mnt/extsd/video/.thumb is not a regular file
E/StorageManager(   60): <line[0846] getFiles()> /mnt/extsd/photo/.thumb is not a regular file
D/StorageMonitor(   60): updateLoop finished

 

 

log : 移除TF卡

 


root@camdroid:/ # [   39.315047] [mmc]: mmc 0 detect change, present 0
[   39.370116] mmc0: card 1234 removed
--------- beginning of /dev/log/main
[   39.394177] [mmc]: sdc0 set ios: clk 0Hz bm OD pm OFF vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[   39.418076] [mmc]: sdc0 power_supply is null
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop remove@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmcblk0p1
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:remove@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:cblk0p1
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
D/VolumeManager(   57): VolumeManager----------------
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p1
D/DirectVolume(   57): Volume extsd /mnt/extsd partition 179:1 removed
D/Volume  (   57): line=198,mState=4
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop remove@/devices/virtual/bdi/179:0
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :179:0
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:remove@/devices/virtual/bdi/179:0
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:i/179:0
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop remove@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmcblk0
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:remove@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:mmcblk0
D/CedarXRecorder(   58): (f:setSdcardState, l:676) mbSdCardState[0]
V/RecordPreview(   60): <line[1427] stopRecord()> mCamExist recorder_idx :0
E/RecordPreview(   60): <line[1433] stopRecord()> !!!!!cam_type: 0, recording is stopped
V/RecordPreview(   60): <line[1485] stopRecord()> fail to stop recorder csi
V/RecordPreview(   60): <line[1427] stopRecord()> mCamExist recorder_idx :1
V/RecordPreview(   60): <line[1429] stopRecord()> mRecorder[1] is NULL
V/StorageManager(   60): <line[1575] startSyncThread()> !!mSST is not null
D/Volume  (   57): Volume::unmountVol
D/Volume  (   57): line=198,mState=4
E/Volume  (   57): line=205,setState oldState=4,state=5
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x41d130b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:76):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 4 (Mounted) to 5 (Unmounting)
V/StorageMonitor(   60): line=166, notify: mStatus = 5, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 5, mInserted = 1, mPath = /mnt/extsd.
V/StorageManager(   60): <line[0116] notify()> ~~unmounting
V/StorageManager(   60): <line[0170] isInsert()> ------------checkPath = /dev/block/mmcblk0p1
V/StorageManager(   60): <line[0172] isInsert()>  isInsert fopen fail, checkPath = /dev/block/mmcblk0p1
D/CedarXRecorder(   58): (f:setSdcardState, l:676) mbSdCardState[0]
V/RecordPreview(   60): <line[1427] stopRecord()> mCamExist recorder_idx :0
E/RecordPreview(   60): <line[1433] stopRecord()> !!!!!cam_type: 0, recording is stopped
V/RecordPreview(   60): <line[1485] stopRecord()> fail to stop recorder csi
V/RecordPreview(   60): <line[1427] stopRecord()> mCamExist recorder_idx :1
V/RecordPreview(   60): <line[1429] stopRecord()> mRecorder[1] is NULL
V/StorageManager(   60): <line[1575] startSyncThread()> !!mSST is not null
V/MainWindow.cpp(   60): <line[1334] notify()> -----------umount, stopRecord and setSdcardState(false)
E/Volume  (   57): line=227,sendBroadcast end
D/StorageMonitor(   60): updateLoop finished
V/Menu.cpp(   60): <line[0079] MenuProc()> ******[debug_jaosn]:this  message is STBM_MOUNT_TFCARD *******
V/Menu.cpp(   60): <line[0080] MenuProc()> ******[debug_jaosn]:this  message is wParam :0*******
V/Menu.cpp(   60): <line[0084] MenuProc()> /mnt/extsd/full_img.fex not exist
V/Menu.cpp(   60): <line[0294] getMenuObj()> index is 0, current MenuObj is 0x0x4203d220
V/MenuSystem(   60): <line[0338] HandleSubMenuChange()> menuObj 1, set menuIndex false
V/ResourceManager.cpp(   60): <line[1787] setResBoolValue()> setResBoolValue: resID: 44, value: 0
I/ResourceManager.cpp(   60): <line[1845] setResBoolValue()> FIRMWARE: value is 0
V/Menu.cpp(   60): <line[0854] getFirstValueImages()> ************************MenuObj 1, getFirstValueImages menuIndex is 13
V/ResourceManager.cpp(   60): <line[1611] getResBmpSubMenuCheckbox()> 0:/full_img.fex not exist
V/MenuSystem(   60): <line[0376] HandleSubMenuChange()> xxxxxxxx
V/MenuSystem(   60): <line[0378] HandleSubMenuChange()> xxxxxxxx
V/EventManager(   60): <line[0643] ueventLoop()> uevent_loop remove@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234
V/EventManager(   60): <line[0367] isUVCStr()> isUVCstr :mmc0:1234
V/EventManager(   60): <line[0597] checkTFCard()> tmp_start:remove@/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234
V/EventManager(   60): <line[0598] checkTFCard()> tmp_end:c0:1234
V/EventManager(   60): <line[0693] ueventLoop()> The event is not handled
V/Dialog.cpp(   60): <line[0081] ShowTipLabel()> <***ShowTipLabel ***>, labelIndex 15
V/Dialog.cpp(   60): <line[0064] getTipLabelData()> titleHeight is 40
V/Dialog.cpp(   60): <line[0141] ShowTipLabel()> ****************ptext:(null)
V/Dialog.cpp(   60): <line[0162] ShowTipLabel()> *****************text:妫€娴嬪埌SD鍗″凡鎷斿嚭
V/TipLabel.cpp(   60): <line[0091] DialogProc()> set timeOut 3000 ms
D/Volume  (   57): mPartIdx = -1, mMountedPartNum = 1
D/Volume  (   57): Volume::unmountVol 3333333
D/Volume  (   57): Unmounting---------- {/mnt/extsd}, force = 1
D/Volume  (   57): Unmounting {/mnt/extsd}, force = 1
I/Volume  (   57): /mnt/extsd sucessfully unmounted
D/Volume  (   57): /mnt/extsd unmounted sucessfully
E/Volume  (   57): line=205,setState oldState=5,state=1
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x41d130b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
D/DirectVolume(   57): Crisis averted
D/VolumeManager(   57): VolumeManager----------------
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
D/DirectVolume(   57): line=94,dp=/devices/platform/sunxi-mmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0
D/Volume  (   57): line=198,mState=1
D/Volume  (   57): line=198,mState=1
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x41d130b8 ++++++++++++
D/Volume  (   57): Volume::unmountVol
D/Volume  (   57): line=198,mState=1
E/Volume  (   57): Volume extsd unmount request when not mounted
E/Volume  (   57): line=205,setState oldState=1,state=0
E/VolumeManager(   57): +++++VolumeManager:: mBroadcaster=0x41d130b8 ++++++++++++
E/Volume  (   57): line=224,sendBroadcast start
E/Volume  (   57): line=227,sendBroadcast end
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:83):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 5 (Unmounting) to 1 (Idle-Unmounted)
V/StorageMonitor(   60): line=166, notify: mStatus = 1, mPath = /mnt/extsd
D/StorageMonitor(   60): line=174,mShared=0, mSharing = 0, mFormated=0, mFormating = 0, mInserted = 1
E/StorageMonitor(   60): line=205,Status=5
D/StorageMonitor(   60): call mListener->notify, mStatus = 1, mInserted = 1, mPath = /mnt/extsd.
D/CommandListener(   57): CommandListener::VolumeCmd::runCommand
D/CommandListener(   57):  argv[1]=share
D/VolumeManager(   57): VolumeManager shareVolume label=/mnt/extsd
D/Volume  (   57): line=198,mState=0
E/VolumeManager(   57): VolumeManager shareVolume State_NoMedia444
E/CommandListener(   57): 22222VolumeCmd::runCommand volume operation failed
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:74):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=631 Volume extsd /mnt/extsd state changed from 1 (somestate) to 9 (Remove)
V/StorageMonitor(   60): line=166, notify: mStatus = 9, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 9, mInserted = 0, mPath = /mnt/extsd.
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:81):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=605 Volume extsd /mnt/extsd state changed from 1 (Idle-Unmounted) to 0 (No-Media)
V/StorageMonitor(   60): line=166, notify: mStatus = 0, mPath = /mnt/extsd
D/StorageMonitor(   60): call mListener->notify, mStatus = 0, mInserted = 0, mPath = /mnt/extsd.
V/StorageManager(   60): <line[0116] notify()> ~~unmounting
D/StorageMonitor(   60): updateLoop finished
V/StorageMonitor(   60): StorageMonitor::updateLoop read snd_buf(ret:47):
E/StorageMonitor(   60): 33333333aaaaaaaaaaaa src=401 13 volume operation failed (No such device)
W/StorageMonitor(   60): Error parsing status
V/StorageMonitor(   60): line=166, notify: mStatus = -1, mPath = operation
D/StorageMonitor(   60): call mListener->notify, mStatus = -1, mInserted = 0, mPath = operation.
D/StorageMonitor(   60): updateLoop finished
V/TipLabel.cpp(   60): <line[0049] timerCallback()> timerCallback
V/TipLabel.cpp(   60): <line[0056] timerCallback()> timeout timer timerCallback
I/TipLabel.cpp(   60): <line[0164] DialogProc()> MSG_CLOSE_LOWPOWER_DIALOG

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值