File Management

From Vita Developer wiki
Jump to navigation Jump to search

The Vita has a multi-layered file management system that is similar (and may be based off of) the BSD vnode structure. Different kernel modules handle each layer.

Hardware[edit | edit source]

At the lowest level, we have the device drivers for the various virtual and real devices on the system. For example SceSdif interacts with the SDIO interface for speaking to the eMMC and any other SD interfaces.

Block[edit | edit source]

Next is the block level. This is device blocks, not file system blocks (which is at a higher level). SceSdstor manages the blocks and also exports block level devices to system applications. Block level encryption and decryption also takes place at this level. All user-facing devices including eMMC, Memory Card, and Game Card are encrypted at the block level. Partitions are also managed at this level. One device can export multiple partitions. Partitions tables are a proprietary format.

File System[edit | edit source]

The file system is implemented on top of the block drivers. SceExtfatfs is used to recognize FAT16, FAT32, and exFAT partitions.

Caching[edit | edit source]

Next is a layer of caching implemented by SceFios2Kernel.

API[edit | edit source]

Finally, we have SceIofilemgr which exposes IO APIs such as sceIoOpen for applications to use to access files. Different application may deal with different encrypted format files.