DCMD_BLK_PART_DESCRIPTION

Получение расширенного описания раздела файловой системы

Прототип:

#include <sys/dcmd_blk.h>
#define DCMD_BLK_PART_DESCRIPTION __DIOF( _DCMD_BLK, 3, struct partition_description )

Аргументы:

filedes
Файловый дескриптор открытого устройства.
dcmd
DCMD_BLK_PART_DESCRIPTION.
dev_data_ptr
Указатель на struct partition_description, которую будет заполнять устройство.
n_bytes
Размер структуры struct partition_description, полученный с помсощью sizeof().
dev_info_ptr
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;
} else
if ( 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




Предыдущий раздел: перейти