⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdisk.c

📁 在4510B上分区源代码
💻 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 + -