pmemlog API version 1.1

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
NOTES
SEE ALSO

NAME

pmemlog_append(), pmemlog_appendv() - append bytes to the persistent memory resident log file

SYNOPSIS

#include <libpmemlog.h>

int pmemlog_append(PMEMlogpool *plp, const void *buf, size_t count);
int pmemlog_appendv(PMEMlogpool *plp, const struct iovec *iov, int iovcnt);

DESCRIPTION

The pmemlog_append() function appends count bytes from buf to the current write offset in the log memory pool plp. Calling this function is analogous to appending to a file. The append is atomic and cannot be torn by a program failure or system crash.

The pmemlog_appendv() function appends to the log memory pool plp from the scatter/gather list iov in a manner similar to writev(2). The entire list of buffers is appended atomically, as if the buffers in iov were concatenated in order. The append is atomic and cannot be torn by a program failure or system crash.

RETURN VALUE

On success, pmemlog_append() and pmemlog_appendv() return 0. On error, they return -1 and set errno appropriately.

ERRORS

EINVAL The vector count iovcnt is less than zero.

ENOSPC There is no room for the data in the log file.

EROFS The log file is open in read-only mode.

NOTES

Since libpmemlog(7) is designed as a low-latency code path, many of the checks routinely done by the operating system for writev(2) are not practical in the library’s implementation of pmemlog_appendv(). No attempt is made to detect NULL or incorrect pointers, for example.

SEE ALSO

writev(2), libpmemlog(7) and https://pmem.io

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