|
static UINT32 | OsReHookFuncAddDiskRef (StorageHookFunction handler, VOID *param) __attribute__((weakref("osReHookFuncAdd"))) |
|
static UINT32 | OsReHookFuncDelDiskRef (StorageHookFunction handler) __attribute__((weakref("osReHookFuncDel"))) |
|
UINT32 | GetFatBlockNums (VOID) |
|
VOID | SetFatBlockNums (UINT32 blockNums) |
|
UINT32 | GetFatSectorsPerBlock (VOID) |
|
VOID | SetFatSectorsPerBlock (UINT32 sectorsPerBlock) |
| 设置FAR每块扇区数 更多...
|
|
INT32 | los_alloc_diskid_byname (const CHAR *diskName) |
| 通过名称分配磁盘ID 更多...
|
|
INT32 | los_get_diskid_byname (const CHAR *diskName) |
| 通过名称查询使用中(STAT_INUSED)磁盘ID 更多...
|
|
los_disk * | los_get_mmcdisk_bytype (UINT8 type) |
|
VOID | OsSetUsbStatus (UINT32 diskID) |
| Set usb mode. 更多...
|
|
VOID | OsClearUsbStatus (UINT32 diskID) |
| Set usb mode. 更多...
|
|
static BOOL | GetDiskUsbStatus (UINT32 diskID) |
|
los_disk * | get_disk (INT32 id) |
| Find disk driver. 更多...
|
|
los_part * | get_part (INT32 id) |
| 获取某个分区的描述符 更多...
|
|
static UINT64 | GetFirstPartStart (const los_part *part) |
|
static VOID | DiskPartAddToDisk (los_disk *disk, los_part *part) |
| 磁盘增加一个分区 更多...
|
|
static VOID | DiskPartDelFromDisk (los_disk *disk, los_part *part) |
| 从磁盘上删除分区 更多...
|
|
static los_part * | DiskPartAllocate (struct Vnode *dev, UINT64 start, UINT64 count) |
| 分配一个磁盘分区,必须要有索引节点才给分配. 更多...
|
|
static VOID | DiskPartRelease (los_part *part) |
| 清空分区信息 更多...
|
|
static INT32 | DiskAddPart (los_disk *disk, UINT64 sectorStart, UINT64 sectorCount, BOOL IsValidPart) |
|
static INT32 | DiskDivide (los_disk *disk, struct disk_divide_info *info) |
| 磁盘分区 更多...
|
|
static CHAR | GPTPartitionTypeRecognition (const CHAR *parBuf) |
| GPT分区类型识别 更多...
|
|
static INT32 | DiskPartitionMemZalloc (size_t boundary, size_t size, CHAR **gptBuf, CHAR **partitionBuf) |
| 磁盘分区内存申请 更多...
|
|
static INT32 | GPTInfoGet (struct Vnode *blkDrv, CHAR *gptBuf) |
| 获取GPT信息,是GPT还是MBR取决于磁盘上放的内容 更多...
|
|
static INT32 | OsGPTPartitionRecognitionSub (struct disk_divide_info *info, const CHAR *partitionBuf, UINT32 *partitionCount, UINT64 partitionStart, UINT64 partitionEnd) |
| 解析GPT分区内容 更多...
|
|
static INT32 | OsGPTPartitionRecognition (struct Vnode *blkDrv, struct disk_divide_info *info, const CHAR *gptBuf, CHAR *partitionBuf, UINT32 *partitionCount) |
| 识别GPT分区内容 更多...
|
|
static INT32 | DiskGPTPartitionRecognition (struct Vnode *blkDrv, struct disk_divide_info *info) |
|
static INT32 | OsMBRInfoGet (struct Vnode *blkDrv, CHAR *mbrBuf) |
| 获取MBR信息,即特殊扇区信息,在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。 更多...
|
|
static INT32 | OsEBRInfoGet (struct Vnode *blkDrv, const struct disk_divide_info *info, CHAR *ebrBuf, const CHAR *mbrBuf) |
|
static INT32 | OsPrimaryPartitionRecognition (const CHAR *mbrBuf, struct disk_divide_info *info, INT32 *extendedPos, INT32 *mbrCount) |
| 识别主分区 更多...
|
|
static INT32 | OsLogicalPartitionRecognition (struct Vnode *blkDrv, struct disk_divide_info *info, UINT32 extendedAddress, CHAR *ebrBuf, INT32 mbrCount) |
| 识别扩展分区 更多...
|
|
static INT32 | DiskPartitionRecognition (struct Vnode *blkDrv, struct disk_divide_info *info) |
| 识别磁盘分区信息 https://blog.csdn.net/Hilavergil/article/details/79270379 更多...
|
|
INT32 | DiskPartitionRegister (los_disk *disk) |
| 磁盘分区注册 更多...
|
|
static INT32 | disk_read_directly (los_disk *disk, VOID *buf, UINT64 sector, UINT32 count) |
|
static INT32 | disk_write_directly (los_disk *disk, const VOID *buf, UINT64 sector, UINT32 count) |
|
INT32 | los_disk_read (INT32 drvID, VOID *buf, UINT64 sector, UINT32 count, BOOL useRead) |
| 读磁盘数据 更多...
|
|
INT32 | los_disk_write (INT32 drvID, const VOID *buf, UINT64 sector, UINT32 count) |
| 将buf内容写到指定扇区, 更多...
|
|
INT32 | los_disk_ioctl (INT32 drvID, INT32 cmd, VOID *buf) |
| Get information of disk driver. 更多...
|
|
INT32 | los_part_read (INT32 pt, VOID *buf, UINT64 sector, UINT32 count, BOOL useRead) |
| 读分区上扇区内容 更多...
|
|
INT32 | los_part_write (INT32 pt, const VOID *buf, UINT64 sector, UINT32 count) |
| 将数据写入指定分区的指定扇区 更多...
|
|
INT32 | los_part_ioctl (INT32 pt, INT32 cmd, VOID *buf) |
| Get information of chosen partition. 更多...
|
|
INT32 | los_disk_cache_clear (INT32 drvID) |
| Clear the bcache data 更多...
|
|
static VOID | DiskCacheThreadInit (UINT32 diskID, OsBcache *bc) |
|
static OsBcache * | DiskCacheInit (UINT32 diskID, const struct geometry *diskInfo, struct Vnode *blkDriver) |
|
static VOID | DiskCacheDeinit (los_disk *disk) |
|
static VOID | DiskStructInit (const CHAR *diskName, INT32 diskID, const struct geometry *diskInfo, struct Vnode *blkDriver, los_disk *disk) |
| 磁盘结构体初始化,初始化 los_disk 结构体 更多...
|
|
static INT32 | DiskDivideAndPartitionRegister (struct disk_divide_info *info, los_disk *disk) |
| 磁盘分区和注册分区 更多...
|
|
static INT32 | DiskDeinit (los_disk *disk) |
| 磁盘反初始化 更多...
|
|
static UINT32 | OsDiskInitSub (const CHAR *diskName, INT32 diskID, los_disk *disk, struct geometry *diskInfo, struct Vnode *blkDriver) |
| 磁盘初始化 更多...
|
|
INT32 | los_disk_init (const CHAR *diskName, const struct block_operations *bops, VOID *priv, INT32 diskID, VOID *info) |
| 磁盘初始化 更多...
|
|
INT32 | los_disk_deinit (INT32 diskID) |
| 磁盘反初始化 更多...
|
|
INT32 | los_disk_sync (INT32 drvID) |
| 磁盘同步,同步指的是缓存同步 更多...
|
|
INT32 | los_disk_set_bcache (INT32 drvID, UINT32 sectorPerBlock, UINT32 blockNum) |
| 设置磁盘块缓存 更多...
|
|
static los_part * | OsPartFind (los_disk *disk, const struct Vnode *blkDriver) |
| 通过索引节点从磁盘中找分区信息 更多...
|
|
los_part * | los_part_find (struct Vnode *blkDriver) |
| 通过索引节点找到分区信息 更多...
|
|
INT32 | los_part_access (const CHAR *dev, mode_t mode) |
| 访问分区 更多...
|
|
INT32 | SetDiskPartName (los_part *part, const CHAR *src) |
| 设置分区名称 更多...
|
|
INT32 | add_mmc_partition (struct disk_divide_info *info, size_t sectorStart, size_t sectorCount) |
| 添加 MMC分区
MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。
而eMMC 则是对 MMC 的一个拓展,以满足更高标准的性能、成本、体积、稳定、易用等的需求。 更多...
|
|
VOID | show_part (los_part *part) |
| OHOS #partinfo /dev/mmcblk0p0 命令输出信息 更多...
|
|
ssize_t | StorageBlockMmcErase (uint32_t blockId, size_t secStart, size_t secNr) |
| 通过磁盘ID 擦除磁盘信息 更多...
|
|
INT32 | EraseDiskByID (UINT32 diskID, size_t startSector, UINT32 sectors) |
|
GPT和MBR是做什么的?
在使用磁盘驱动器之前,必须对其进行分区。。MBR(主引导记录)和GPT(GUID分区表)是在驱动器上存储分区信息的两种不同方法。
这些信息包括分区在物理磁盘上的开始和结束位置,因此您的操作系统知道哪些扇区属于每个分区,哪些分区是可引导的。
这就是为什么在驱动器上创建分区之前必须选择MBR或GPT的原因。
MBR于1983年首次在IBMPCDOS2.0中引入。它被称为主引导记录,因为MBR是一个特殊的引导扇区,位于驱动器的开头。
此扇区包含已安装操作系统的引导加载程序和有关驱动器逻辑分区的信息。引导加载程序是一小部分代码,
通常从驱动器上的另一个分区加载较大的引导加载程序。
GPT代表GUID划分表。这是一个正在逐步取代MBR的新标准。它与UEFI相关,UEFI用更现代的东西取代笨重的旧BIOS。
反过来,GPT用更现代的东西取代了笨重的旧MBR分区系统。它被称为GUIDPartitionTable【全局唯一标识磁盘分区表】,
因为驱动器上的每个分区都有一个“全局唯一标识符”,或者GUID--一个长时间的随机字符串,
以至于地球上的每个GPT分区都有自己的唯一标识符。
在MBR磁盘上,分区和引导数据存储在一个地方。如果该数据被覆盖或损坏,您就有麻烦了。
相反,GPT跨磁盘存储此数据的多个副本,因此它更健壮,如果数据损坏,可以恢复。
GPT还存储循环冗余校验(CRC)值,以检查其数据是否完整。如果数据损坏,GPT会注意到问题,
并尝试从磁盘上的另一个位置恢复损坏的数据。MBR无法知道其数据是否已损坏--只有在引导进程失败
或驱动器分区消失时才会看到问题。
GUID分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,因此当一份损坏可以通过另一份恢复。
而MBR磁盘分区表一旦被破坏就无法恢复,需要重新分区
https://www.howtogeek.com/193669/whats-the-difference-between-gpt-and-mbr-when-partitioning-a-drive/
https://www.html.cn/qa/other/20741.html
*
在文件 disk.c 中定义.