2009年2月16日星期一

Qtopia如何管理外部存储器,如SD卡等

分析版本:qtopia-4.1.7
我们知道Linux系统中如果要访问外部存储的话,会将外部存储器视为一个block设备,并将它mount到Linux的一个文件目录,可以使操作系统很容易的访问存储器中的内容。
在支持热插拔(hotplug)的系统中,当系统检测到有外部设备接入时,会将相应事件通知操作系统。以SD卡为例,当插入SD卡时,LInux会自动的将该设备mount到一个目录,那么Qtopia就可以读取它的内容了。

我们看Qtopia是如何工作的。
$QTOPIA/src/server/stabmon.cpp中可以看到,在qtopia启动的时候会启动一些相应的服务(server),其中一个就是监视文件系统的mount变化的。和mount相关的文件有下面一些文件
/var/run/stab
/var/state/pcmcia/stab
/var/lib/pcmcia/stab
/proc/mounts Qtopia.4.x.x 使用这个
/etc/mtab Qtopia.2.x.x 使用这个
SysFileMonitor监视到以上的某个文件发生变化时,就会像qtopia的存储系统发出qcop消息
QCopEnvelope("QPE/Card", "stabChanged()" );

这个"QPE/card"通道里的"stabChanged()"会在
$QTOPIA/src/libraries/qtopia/storage.cpp 得到处理

详细内容,看代码可知

没有评论:

发表评论