VxWorks里任何块设备都可以mount到dosfs或者hrfs文件系统上,VxWorks本身似乎没有什么API可以获得这些卷的大小,dosfs的话可以调用dosFsShow看volume信息,但是没有显示volume大小和free大小,有没有什么方法可以得到呢?
可以用这个API写个函数来实现。
STATUS statfs
(
char *name,
struct statfs *pStat
)
这个函数最终会调到下面这个系统调用上:
#define FIOFSTATFSGET 46
ioctl (fd, FIOFSTATFSGET, (int)pStat);
这个函数大概可以这样写:
STATUS volumeShow
(
char *devName
)
{
......
struct statfs fs;
statfs ((char*)devName, &fs)
printf ("%s: Total File System Size: %dKB, Free space: %dKB.\n", devName, (int)(fs.f_bsize * fs.f_blocks /1024), (int)(fs.f_bsize * fs.f_bavail /1024));
......
}
e.g:
-> volumeShow "/tffs0"
/tffs0: Total File System Size: 3824KB, Free space: 3821KB.