Description

The efi_alloc_and_init() function initializes the dk_gpt_t structure specified by vtoc in preparation
for a call to efi_write(). It calculates and initializes the efi_version, efi_lbasize,
efi_nparts, efi_first_u_lba, efi_last_lba, and efi_last_u_lba members of this sturcture. The caller can
then set the efi_nparts member.

The efi_alloc_and_read() function allocates memory and returns the partition table.

The efi_free() function frees the memory allocated by efi_alloc_and_init() and efi_alloc_and_read().

The efi_write() function writes the EFI partition table.

The efi_use_whole_disk() function takes any space that is not contained in the
disk label and adds it to the last physically non-zero area before
the reserved partition (from partition 0 to partition 6 or unallocated space).

The fd argument refers to any partition on a raw disk, opened
with O_NDELAY. See open(2).

The nparts argument specifies the number of desired partitions.

The vtoc argument is a dk_gpt_t structure that describes an EFI partition
table and contains at least the following members:

Return Values

Upon successful completion, efi_alloc_and_init() returns 0. Otherwise it returns VT_EIO if an
I/O operation to the disk fails.

Upon successful completion, efi_alloc_and_read() returns a positive integer indicating the partition index
associated with the open file descriptor. Otherwise, it returns a negative integer
to indicate one of the following:

VT_EIO

An I/O error occurred.

VT_ERROR

An unknown error occurred.

VT_EINVAL

An EFI label was not found.

Upon successful completion, efi_write() returns 0. Otherwise, it returns a negative integer
to indicate one of the following:

VT_EIO

An I/O error occurred.

VT_ERROR

An unknown error occurred.

VT_EINVAL

The label contains incorrect data.

Upon successful completion, efi_use_whole_disk() returns 0. Otherwise, it returns a negative integer
to indicate one of the following: