pmem2 API version 1.0

The PMDK repository on GitHub is the ultimate source of information on PMDK from release 2.0! For all questions and to submit eventual issues please follow to that repository. The PMDK documentation collected here should be valid up to the 1.13.1 release but is maintained only on a best-effort basis and may not reflect the latest state of the art.

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
SEE ALSO

NAME

pmem2_source_size() - returns the size of the data source

SYNOPSIS

#include <libpmem2.h>

struct pmem2_source;
int pmem2_source_size(const struct pmem2_source *source, size_t *size);

DESCRIPTION

The pmem2_source_size() function retrieves the size of the file in bytes pointed by file descriptor or handle stored in the source and puts it in *size.

This function is a portable replacement for OS-specific APIs. On Linux, it hides the quirkiness of Device DAX size detection.

RETURN VALUE

The pmem2_source_size() function returns 0 on success. If the function fails, the *size variable is left unmodified and a negative error code is returned.

ERRORS

The pmem2_source_size() can fail with the following errors:

On all systems:

  • PMEM2_E_INVALID_FILE_HANDLE - source contains an invalid file handle.

On Windows:

  • PMEM2_E_INVALID_FILE_TYPE - handle points to a resource that is not a regular file.

On Linux:

  • PMEM2_E_INVALID_FILE_TYPE - file descriptor points to a directory, block device, pipe, or socket.

  • PMEM2_E_INVALID_FILE_TYPE - file descriptor points to a character device other than Device DAX.

  • PMEM2_E_INVALID_SIZE_FORMAT - kernel query for Device DAX size returned data in invalid format.

  • -errno set by failing fstat(2), while trying to validate the file descriptor.

  • -errno set by failing realpath(3), while trying to determine whether fd points to a Device DAX.

  • -errno set by failing open(2), while trying to determine Device DAX’s size.

  • -errno set by failing read(2), while trying to determine Device DAX’s size.

  • -errno set by failing strtoull(3), while trying to determine Device DAX’s size.

On FreeBSD:

  • PMEM2_E_INVALID_FILE_TYPE - file descriptor points to a directory, block device, pipe, socket, or character device.

  • -errno set by failing fstat(2), while trying to validate the file descriptor.

SEE ALSO

errno(3), fstat(2), realpath(3), open(2), read(2), strtoull(3), pmem2_config_new(3), libpmem2(7) and https://pmem.io

The contents of this web site and the associated GitHub repositories are BSD-licensed open source.