📄 fdisk.c
字号:
#include "board.h"#include "console.h"#include "utils.h"#include "bios.h"int main_menu(void){ int list[] = { FDISK_CREATE_PARTITION, FDISK_DELETE_PARTITION, FDISK_DISPLAY_PARTITION, }; int select; int ch; printf("Fdisk Menu\r\n\r\n"); printf("1 - Create Partition\r\n"); printf("2 - Delete Partition\r\n"); printf("3 - Display Partition Information\r\n"); printf("\r\n"); printf("Please Select "); select = get_select('1', '3'); printf("\r\n\r\n"); return select;}int update_partition_table(struct partition_table_struct *partition_table){ unsigned long offset, size, l; offset = bios_partition_table_offset(); size = bios_partition_table_size(); printf("Update Partition Table .............. "); bios_flash_erase(offset, size); bios_flash_write(offset, size, &l, partition_table); printf("Done\r\n\r\n"); return 0;
}int create_partition(void){ struct partition_table_struct partition_table; struct partition_struct *partition; int partition_num; printf("Create Partition\r\n\r\n"); printf("Please Select Partition (1 - 8) "); partition_num = get_select('1', '8'); printf("\r\n\r\n"); if (partition_num < 0) return 0; bios_partition_table(&partition_table); partition = &partition_table.partition[partition_num]; printf("Partition Offset (%08x) : ", partition->offset); partition->offset = getul(partition->offset); printf("\r\n"); printf("Partition Size (%08x) : ", partition->size); partition->size = getul(partition->size); printf("\r\n"); printf("Partition Flags (%04x) : ", partition->flags); partition->flags = getul(partition->flags); printf("\r\n"); printf("Partition Type (%04x) : ", partition->type); partition->type = getul(partition->type); printf("\r\n"); printf("Partition Parameter (%08x) : ", partition->param); partition->param = getul(partition->param); printf("\r\n\r\n"); update_partition_table(&partition_table); printf("\r\n"); return 0;}int delete_partition(void){ struct partition_table_struct partition_table; struct partition_struct *partition; int partition_num; printf("Delete Partition\r\n\r\n"); printf("Please Select Partition (1 - 8) "); partition_num = get_select('1', '8'); printf("\r\n\r\n"); if (partition_num < 0) return 0; bios_partition_table(&partition_table); partition = &partition_table.partition[partition_num]; partition->offset = 0; partition->size = 0; partition->flags = 0; partition->type = 0; update_partition_table(&partition_table); printf("\r\n"); return 0;}int display_partition(void){ struct partition_table_struct partition_table; struct partition_struct *partition; int i; printf("Partition Information\r\n\r\n"); bios_partition_table(&partition_table); for (i = 0; i < MAX_PARTITION_NUM; i++) { partition = &partition_table.partition[i]; printf("Partition %01d : ", i + 1); if (partition->type == 0) { printf("None"); } else { printf("0x%04x 0x%04x 0x%08x - 0x%08x 0x%08x", partition->flags, partition->type, partition->offset, partition->offset + partition->size - 1, partition->param); } printf("\r\n"); } printf("\r\n"); printf("Press any key ... "); getch(); printf("\r\n\r\n"); return 0;}int fdisk(void){ int select; while (1) { select = main_menu(); if (select < 0) { break; } switch (select) { case FDISK_CREATE_PARTITION: create_partition(); break; case FDISK_DELETE_PARTITION: delete_partition(); break; case FDISK_DISPLAY_PARTITION: display_partition(); break; default: break; } } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -