[svn-r16354] Description:
Bring r16353 back from revise_chunks branch:
Refactor internal layout information, making it easier to add another
type of chunk index.
Tested on:
FreeBSD/32 6.3 (duty)
(other platforms tested with original patch)
This commit is contained in:
10
src/H5Dpkg.h
10
src/H5Dpkg.h
@@ -102,6 +102,7 @@ struct H5D_chunk_map_t;
|
||||
/* Function pointers for I/O on particular types of dataset layouts */
|
||||
typedef herr_t (*H5D_layout_new_func_t)(H5F_t *f, hid_t dapl_id, hid_t dxpl_id,
|
||||
H5D_t *dset, const H5P_genplist_t *dc_plist);
|
||||
typedef hbool_t (*H5D_layout_is_space_alloc_func_t)(const H5O_layout_t *layout);
|
||||
typedef herr_t (*H5D_layout_io_init_func_t)(const struct H5D_io_info_t *io_info,
|
||||
const H5D_type_info_t *type_info,
|
||||
hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
|
||||
@@ -123,6 +124,7 @@ typedef herr_t (*H5D_layout_io_term_func_t)(const struct H5D_chunk_map_t *cm);
|
||||
/* Typedef for grouping layout I/O routines */
|
||||
typedef struct H5D_layout_ops_t {
|
||||
H5D_layout_new_func_t new; /* Layout constructor for new datasets */
|
||||
H5D_layout_is_space_alloc_func_t is_space_alloc; /* Query routine to determine if storage is allocated */
|
||||
H5D_layout_io_init_func_t io_init; /* I/O initialization routine */
|
||||
H5D_layout_read_func_t ser_read; /* High-level I/O routine for reading data in serial */
|
||||
H5D_layout_write_func_t ser_write; /* High-level I/O routine for writing data in serial */
|
||||
@@ -262,6 +264,7 @@ typedef int (*H5D_chunk_cb_func_t)(const H5D_chunk_rec_t *chunk_rec,
|
||||
/* Typedefs for chunk operations */
|
||||
typedef herr_t (*H5D_chunk_init_func_t)(const H5D_chk_idx_info_t *idx_info);
|
||||
typedef herr_t (*H5D_chunk_create_func_t)(const H5D_chk_idx_info_t *idx_info);
|
||||
typedef hbool_t (*H5D_chunk_is_space_alloc_func_t)(const H5O_layout_t *layout);
|
||||
typedef herr_t (*H5D_chunk_insert_func_t)(const H5D_chk_idx_info_t *idx_info,
|
||||
H5D_chunk_ud_t *udata);
|
||||
typedef herr_t (*H5D_chunk_get_addr_func_t)(const H5D_chk_idx_info_t *idx_info,
|
||||
@@ -277,12 +280,16 @@ typedef herr_t (*H5D_chunk_copy_shutdown_func_t)(H5O_layout_t *layout_src,
|
||||
H5O_layout_t *layout_dst);
|
||||
typedef herr_t (*H5D_chunk_size_func_t)(const H5D_chk_idx_info_t *idx_info,
|
||||
hsize_t *idx_size);
|
||||
typedef herr_t (*H5D_chunk_reset_func_t)(H5O_layout_t *layout);
|
||||
typedef herr_t (*H5D_chunk_dump_func_t)(const H5D_chk_idx_info_t *idx_info,
|
||||
FILE *stream);
|
||||
typedef herr_t (*H5D_chunk_dest_func_t)(const H5D_chk_idx_info_t *idx_info);
|
||||
|
||||
/* Typedef for grouping chunk I/O routines */
|
||||
typedef struct H5D_chunk_ops_t {
|
||||
H5D_chunk_init_func_t init; /* Routine to initialize indexing information in memory */
|
||||
H5D_chunk_create_func_t create; /* Routine to create chunk index */
|
||||
H5D_chunk_is_space_alloc_func_t is_space_alloc; /* Query routine to determine if storage/index is allocated */
|
||||
H5D_chunk_insert_func_t insert; /* Routine to insert a chunk into an index */
|
||||
H5D_chunk_get_addr_func_t get_addr; /* Routine to retrieve address of chunk in file */
|
||||
H5D_chunk_iterate_func_t iterate; /* Routine to iterate over chunks */
|
||||
@@ -291,6 +298,8 @@ typedef struct H5D_chunk_ops_t {
|
||||
H5D_chunk_copy_setup_func_t copy_setup; /* Routine to perform any necessary setup for copying chunks */
|
||||
H5D_chunk_copy_shutdown_func_t copy_shutdown; /* Routine to perform any necessary shutdown for copying chunks */
|
||||
H5D_chunk_size_func_t size; /* Routine to get size of indexing information */
|
||||
H5D_chunk_reset_func_t reset; /* Routine to reset indexing information */
|
||||
H5D_chunk_dump_func_t dump; /* Routine to dump indexing information */
|
||||
H5D_chunk_dest_func_t dest; /* Routine to destroy indexing information in memory */
|
||||
} H5D_chunk_ops_t;
|
||||
|
||||
@@ -566,6 +575,7 @@ H5_DLL hbool_t H5D_chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr);
|
||||
H5_DLL herr_t H5D_chunk_cinfo_cache_reset(H5D_chunk_cached_t *last);
|
||||
H5_DLL herr_t H5D_chunk_create(H5D_t *dset /*in,out*/, hid_t dxpl_id);
|
||||
H5_DLL herr_t H5D_chunk_init(H5F_t *f, hid_t dapl_id, hid_t dxpl_id, const H5D_t *dset);
|
||||
H5_DLL hbool_t H5D_chunk_is_space_alloc(const H5O_layout_t *layout);
|
||||
H5_DLL herr_t H5D_chunk_get_info(const H5D_t *dset, hid_t dxpl_id,
|
||||
const hsize_t *chunk_offset, H5D_chunk_ud_t *udata);
|
||||
H5_DLL void *H5D_chunk_lock(const H5D_io_info_t *io_info,
|
||||
|
||||
Reference in New Issue
Block a user