Monky vold extension

20
More than Vold & mmc driver Monky 2010/04/21

Transcript of Monky vold extension

Page 1: Monky vold extension

More than Vold & mmc driver

Monky2010/04/21

Page 2: Monky vold extension

Outline

• Recap (curtsey of Wilson’s ppt)– IPC

• Uevent• Netlink

– Volume daemon (VOLD)

• Mount Service

• File System

Page 3: Monky vold extension

Block DiagramSystem Server

Volume daemon

Mount Listener

Mount Service

MMC Driver

Packages

uevent

intentI/O Scheduler

Generic Block Layer

Mapping Layer

VFS

YAFFS2

VFAT

EXT3..

Host Controller

Page 4: Monky vold extension

udev

• udev is the device manager for linux 2.6.x

• Devfs (2.4) udev (2.6)

• Manage device nodes in /dev

• As a daemon in user space

• Dynamically provides only the nodes for the devices actually present on a syste

• Listen to uevents the kernel sends out (via netlink socket)

Page 5: Monky vold extension

Uevent

• One of ways to do IPC

• Based on Udev

• Send environmental data from kernel space to user space

• One of important KernelObject

Page 6: Monky vold extension

Example of uevent in kernel

mmc driver

• Add device info ,using add_uevent_var()

Page 7: Monky vold extension

Example of uevent in kernel• Information from ddms

• 01-01 01:46:26.293: ERROR/vold(1152): [UEVENT] Sq: 1148 S: mmc A: 0 P: /devices/platform/msm_sdcc.1/mmc_host/mmc0/mmc0:aaaa 01-01 01:46:26.293: ERROR/vold(1152): DEVPATH=/devices/platform/msm_sdcc.1/mmc_host/mmc0/mmc0:aaaa 01-01 01:46:26.293: ERROR/vold(1152): MMC_TYPE=SD 01-01 01:46:26.293: ERROR/vold(1152): MMC_NAME=SU02G 01-01 01:46:26.303: ERROR/vold(1152): [UEVENT] Sq: 1149 S: block A: 0 P: /devices/platform/msm_sdcc.1/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0 01-01 01:46:26.303: ERROR/vold(1152): DEVPATH=/devices/platform/msm_sdcc.1/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0 01-01 01:46:26.303: ERROR/vold(1152): MAJOR=179 01-01 01:46:26.303: ERROR/vold(1152): MINOR=0 01-01 01:46:26.303: ERROR/vold(1152): DEVTYPE=disk 01-01 01:46:26.323: ERROR/vold(1152): [UEVENT] Sq: 1150 S: block A: 0 P: /devices/platform/msm_sdcc.1/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0/mmcblk0p1 01-01 01:46:26.323: ERROR/vold(1152): DEVPATH=/devices/platform/msm_sdcc.1/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0/mmcblk0p1 01-01 01:46:26.323: ERROR/vold(1152): MAJOR=179 01-01 01:46:26.323: ERROR/vold(1152): MINOR=1 01-01 01:46:26.323: ERROR/vold(1152): DEVTYPE=partition

Page 8: Monky vold extension

Netlink

• Socket-like mechanism for IPC between kernel and user space processes

• Standard socket-based interface

• Asynchronous

• More flexible successor to ioctl

• Kernel can start session

Page 9: Monky vold extension

Netlink

• Receive message in user space

• Same as using net socket method (API)

Page 10: Monky vold extension

Volume daemon

• Vold and mountd

fw_sock

uevent_sock

Send_msg(MESSAGE)

process_framework_command(int socket)

Page 11: Monky vold extension

Volume daemon

• Bootstrap– Load configuration, vold.conf– Read files and simulate uevent

Page 12: Monky vold extension

Volume daemon

• Config file: Vold.conf

• Some configs– media_path– media_type– mount_point– ums_path

Page 13: Monky vold extension

Volume daemon

• Handle uevents1.handle power_supply event

2.handle block event

3.handle usb event

Page 14: Monky vold extension

Volume daemon

• Handle framework events(where?)– mount/dismount– format– send state

Page 15: Monky vold extension

Mount ServiceSystem server • init a ‘server thread’ (java)

try { // MountService must start after NotificationManagerService Log.i(TAG, "Starting Mount Service."); ServiceManager.addService("mount", new MountService(context));

} catch (Throwable e) { Log.e(TAG, "Failure starting Mount Service", e); }

public void run() {

}

Create by Linux system call – fork

A process create by ‘Zygote’

Page 16: Monky vold extension

Mount Service

Broadcast intents for any interests

• 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,• ACTION_MEDIA_SCANNER_STARTED• ACTION_MEDIA_SCANNER_FINISHED• ACTION_MEDIA_CHECKING• ACTION_MEDIA_NOFS

Page 17: Monky vold extension

Mount Service

Packages that install SD intents

• Setting: SDCardSettings.java

• Gallery: VideoCamera.java

• MeidaProvider: MediaProvider.java

• SoundRecorder: SoundRecorder.java

• Gallery3D: BootReceiver.java

• Camera: ImageGallery.java/GalleryPicker.java

• …

Page 18: Monky vold extension

File System

http://stackoverflow.com/questions/2421826/whats-android-file-system

(check our system..)

Page 19: Monky vold extension

Q&A

Page 20: Monky vold extension

Reference

http://en.wikipedia.org/wiki/Udev

http://kezeodsnx.pixnet.net/blog/post/26089951

http://tw.myblog.yahoo.com/chimei-015/article?mid=948&prev=949&next=938&l=f&fid=19