DB_MPOOLFILE->set_fileid

API Ref

#include <db.h>

int DB_MPOOLFILE->set_fileid(DB_MPOOLFILE *mpf, u_int8_t *fileid);

int DB_MPOOLFILE->get_fileid(DB_MPOOLFILE *mpf, u_int8_t *fileid);


Description: DB_MPOOLFILE->set_fileid

The DB_MPOOLFILE->set_fileid method specifies a unique identifier for the file. (The shared memory buffer pool functions must be able to uniquely identify files in order that multiple processes wanting to share a file will correctly identify it in the pool.)

On most UNIX/POSIX systems, the fileid field will not need to be set, and the memory pool functions will use the file's device and inode numbers for this purpose. On Windows systems, the memory pool functions use the values returned by GetFileInformationByHandle() by default -- these values are known to be constant between processes and over reboot in the case of NTFS (in which they are the NTFS MFT indices).

On other filesystems (for example, FAT or NFS), these default values are not necessarily unique between processes or across system reboots. Applications wanting to maintain a shared memory buffer pool between processes or across system reboots, in which the pool contains pages from files stored on such filesystems, must specify a unique file identifier using the DB_MPOOLFILE->set_fileid method, and each process opening the file must provide the same unique identifier.

This call should not be necessary for most applications. Specifically, it is not necessary if the memory pool is not shared between processes and is reinstantiated after each system reboot, if the application is using the Berkeley DB access methods instead of calling the pool functions explicitly, or if the files in the memory pool are stored on filesystems in which the default values as described previously are invariant between process and across system reboots.

The DB_MPOOLFILE->set_fileid method configures a file in the memory pool, not only operations performed using the specified DB_MPOOLFILE handle.

The DB_MPOOLFILE->set_fileid method may not be called after the DB_MPOOLFILE->open method is called.

The DB_MPOOLFILE->set_fileid method returns a non-zero error value on failure and 0 on success.

Parameters

fileid
The fileid parameter is the unique identifier for the file. Unique file identifiers must be a DB_FILE_ID_LEN length array of bytes.

Description: DB_MPOOLFILE->get_fileid

The DB_MPOOLFILE->get_fileid method copies the file's identifier into the memory location referenced by fileid.

The DB_ENV->get_data_dirs method returns a non-zero error value on failure and 0 on success.

The DB_ENV->get_data_dirs method may be called at any time during the life of the application.


Class

DB_ENV, DB_MPOOLFILE

See Also

Memory Pools and Related Methods

APIRef

Copyright (c) 1996-2003 Sleepycat Software, Inc. - All rights reserved.