You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
4.2 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
* distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Raymond Lu
* Wednesday, 20 September 2006
*
* Purpose: The public header file for the direct driver.
*/
#ifndef H5FDdirect_H
#define H5FDdirect_H
#ifdef H5_HAVE_DIRECT
#define H5FD_DIRECT (H5FDperform_init(H5FD_direct_init))
#define H5FD_DIRECT_VALUE H5_VFD_DIRECT
#else
#define H5FD_DIRECT (H5I_INVALID_HID)
#define H5FD_DIRECT_VALUE H5_VFD_INVALID
#endif /* H5_HAVE_DIRECT */
#ifdef H5_HAVE_DIRECT
#ifdef __cplusplus
extern "C" {
#endif
/* Default values for memory boundary, file block size, and maximal copy buffer size.
* Application can set these values through the function H5Pset_fapl_direct. */
#define MBOUNDARY_DEF 4096
#define FBSIZE_DEF 4096
#define CBSIZE_DEF 16 * 1024 * 1024
H5_DLL hid_t H5FD_direct_init(void);
/**
* \ingroup FAPL
*
* \brief Sets up use of the direct I/O driver
*
* \fapl_id
* \param[in] alignment Required memory alignment boundary
* \param[in] block_size File system block size
* \param[in] cbuf_size Copy buffer size
* \returns \herr_t
*
* \details H5Pset_fapl_direct() sets the file access property list, \p fapl_id,
* to use the direct I/O driver, #H5FD_DIRECT. With this driver, data
* is written to or read from the file synchronously without being
* cached by the system.
*
* File systems usually require the data address in memory, the file
* address, and the size of the data to be aligned. The HDF5 librarys
* direct I/O driver is able to handle unaligned data, though that will
* consume some additional memory resources and may slow
* performance. To get better performance, use the system function \p
* posix_memalign to align the data buffer in memory and the HDF5
* function H5Pset_alignment() to align the data in the file. Be aware,
* however, that aligned data I/O may cause the HDF5 file to be bigger
* than the actual data size would otherwise require because the
* alignment may leave some holes in the file.
*
* \p alignment specifies the required alignment boundary in memory.
*
* \p block_size specifies the file system block size. A value of 0
* (zero) means to use HDF5 librarys default value of 4KB.
*
* \p cbuf_size specifies the copy buffer size.
*
* \since 1.8.0
*
*/
H5_DLL herr_t H5Pset_fapl_direct(hid_t fapl_id, size_t alignment, size_t block_size, size_t cbuf_size);
/**
* \ingroup FAPL
*
* \brief Retrieves direct I/O driver settings
*
* \fapl_id
* \param[out] boundary Required memory alignment boundary
* \param[out] block_size File system block size
* \param[out] cbuf_size Copy buffer size
* \returns \herr_t
*
* \details H5Pget_fapl_direct() retrieves the required memory alignment (\p
* alignment), file system block size (\p block_size), and copy buffer
* size (\p cbuf_size) settings for the direct I/O driver, #H5FD_DIRECT,
* from the file access property list \p fapl_id.
*
* See H5Pset_fapl_direct() for discussion of these values,
* requirements, and important considerations.
*
* \since 1.8.0
*
*/
H5_DLL herr_t H5Pget_fapl_direct(hid_t fapl_id, size_t *boundary /*out*/, size_t *block_size /*out*/,
size_t *cbuf_size /*out*/);
#ifdef __cplusplus
}
#endif
#endif /* H5_HAVE_DIRECT */
#endif