Получение расширенного описания раздела файловой системы
#include <sys/dcmd_blk.h>#define DCMD_BLK_PART_DESCRIPTION __DIOF( _DCMD_BLK, 3, struct partition_description )
DCMD_BLK_PART_DESCRIPTION
.NULL
.Команда используется в сочетании с вызовом devctl(), а все перечисленные аргументы являются его типовыми параметрами. Команда позволяет получить расширенное описание раздела файловой системы для устройства, ассоциированного с filedes.
Отсутствуют.
Заполненная структура struct partition_description.
#include <stdio.h>#include <stdlib.h>#include <devctl.h>#include <sys/dcmd_blk.h>#include <errno.h>#include <string.h>#include <fcntl.h>int main( void ){int fd;int ret;struct partition_description pd;uint64_t slba,elba;fd = open( "/dev/hd0t179", O_RDONLY );if ( fd == -1 ){perror( "open() failed" );return (EXIT_FAILURE);}/* Determine the partition's start and end LBAs. */ret = devctl( fd, DCMD_BLK_PART_DESCRIPTION, &pd, sizeof( pd ), NULL );if ( ret == EOK ){if ( strcmp( pd.scheme, FS_PARTITION_PC ) == 0 ){printf( "PC: " );slba = pd.entry.pc.part_offset;elba = pd.entry.pc.part_offset + pd.entry.pc.part_size - 1;} elseif ( strcmp( pd.scheme, FS_PARTITION_GPT ) == 0 ){printf( "GPT: " );slba = pd.entry.gpt.StartingLBA;elba = pd.entry.gpt.EndingLBA;}printf( "start: %lld end: %lld\n", slba, elba );} else {printf( "DCMD_BLK_PART_DESCRIPTION failed: %s\n", strerror( ret ) );return (EXIT_FAILURE);}return (EXIT_SUCCESS);}
DCMD_BLK_PARTENTRY, devctl(), fdisk, gdisk, io-blk.so, struct partition_description
Предыдущий раздел: перейти