Upload
mamahow
View
1.322
Download
5
Tags:
Embed Size (px)
Citation preview
More than Vold & mmc driver
Monky2010/04/21
Outline
• Recap (curtsey of Wilson’s ppt)– IPC
• Uevent• Netlink
– Volume daemon (VOLD)
• Mount Service
• File System
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
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)
Uevent
• One of ways to do IPC
• Based on Udev
• Send environmental data from kernel space to user space
• One of important KernelObject
Example of uevent in kernel
mmc driver
• Add device info ,using add_uevent_var()
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
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
Netlink
• Receive message in user space
• Same as using net socket method (API)
Volume daemon
• Vold and mountd
fw_sock
uevent_sock
Send_msg(MESSAGE)
process_framework_command(int socket)
Volume daemon
• Bootstrap– Load configuration, vold.conf– Read files and simulate uevent
Volume daemon
• Config file: Vold.conf
• Some configs– media_path– media_type– mount_point– ums_path
Volume daemon
• Handle uevents1.handle power_supply event
2.handle block event
3.handle usb event
Volume daemon
• Handle framework events(where?)– mount/dismount– format– send state
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’
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
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
• …
File System
http://stackoverflow.com/questions/2421826/whats-android-file-system
(check our system..)
Q&A
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