Berkeley DB: memp_fput
Полезная информация

memp_fput


#include <db.h>

int memp_fput(DB_MPOOLFILE *mpf, void *pgaddr, u_int32_t flags);

Description

The memp_fput function indicates that the page referenced by pgaddr can be evicted from the pool. The pgaddr argument must be an address previously returned by memp_fget.

The flags argument is specified by logically OR'ing together one or more of the following values:

DB_MPOOL_CLEAN
Clear any previously set modification information (i.e., don't bother writing the page back to the source file).

DB_MPOOL_DIRTY
The page has been modified and must be written to the source file before being evicted from the pool.

DB_MPOOL_DISCARD
The page is unlikely to be useful in the near future, and should be discarded before other pages in the pool.

The DB_MPOOL_CLEAN and DB_MPOOL_DIRTY flags are mutually exclusive.

The memp_fput function returns the value of errno on failure, and 0 on success.

Errors

If a fatal error occurs in Berkeley DB, the memp_fput function may fail and return DB_RUNRECOVERY, at which point all subsequent database calls will also return DB_RUNRECOVERY.

The memp_fput function may fail and return errno for any of the errors specified for the following Berkeley DB and C library functions: DBmemp->pgin(3), DBmemp->pgout(3), abort(3), close(3), dbenv->db_paniccall(3), fcntl(3), fflush(3), fprintf(3), free(3), fstat(3), fsync(3), getenv(3), getpid(3), getuid(3), isdigit(3), log_compare, log_flush, lseek(3), malloc(3), memcmp(3), memcpy(3), memset(3), mmap(3), open(3), pread(3), pstat_getdynamic(3), pwrite(3), read(3), sigfillset(3), sigprocmask(3), stat(3), strerror(3), strlen(3), sysconf(3), time(3), unlink(3), vfprintf(3), vsnprintf(3), and write(3).

In addition, the memp_fput function may fail and return errno for the following conditions:

EACCES
The DB_MPOOL_DIRTY flag was set and the source file was not opened for writing.

EINVAL
An invalid flag value or parameter was specified.

The pgaddr parameter does not reference a page returned by memp_fget.

More than one of DB_MPOOL_CLEAN and DB_MPOOL_DIRTY flags was set.

See Also

memp_close, memp_fclose, memp_fget, memp_fopen, memp_fput, memp_fset, memp_fsync, memp_open, memp_register, memp_stat, memp_stat, memp_sync, memp_trickle and memp_unlink.