db_env_set_func_seek

APIRef

#include <db.h>

int db_env_set_func_seek(int (*func_seek)(int fd, size_t pgsize, db_pgno_t pageno, u_int32_t relative, int rewind, int whence));

Description

The Berkeley DB library requires the ability to specify that a subsequent read from or write to a file will occur at a specific location in that file. The func_seek argument must conform to the following interface:

int seek(int fd, size_t pgsize, db_pgno_t pageno,
u_int32_t relative, int rewind, int whence);

The fd argument is an open file descriptor on the file.

The seek function must cause a subsequent read from or write to the file to occur at a byte offset specified by the calculation:

(pgsize * pageno) + relative

If rewind is non-zero, the byte offset is treated as a backward seek, not a forward one.

The whence argument specifies where in the file the byte offset is relative to, as described by the IEEE/ANSI Std 1003.1 (POSIX) lseek system call.

The func_seek interface must return the value of errno on failure and 0 on success.

The db_env_set_func_seek method configures all operations performed by a process and all of its threads of control, not operations confined to a single database environment.

Although the db_env_set_func_seek interface may be called at any time during the life of the application, it should normally be called before making calls to the db_env_create or db_create methods.

The db_env_set_func_seek method returns a non-zero error value on failure and 0 on success.

Errors

The db_env_set_func_seek method may fail and return a non-zero error for the following conditions:

EINVAL
An invalid flag value or parameter was specified.

The db_env_set_func_seek method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. If a catastrophic error has occurred, the db_env_set_func_seek method may fail and return DB_RUNRECOVERY, in which case all subsequent Berkeley DB calls will fail in the same way.

See Also

Run-time configuration

APIRef

Copyright Sleepycat Software