mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
[svn-r12866] Description:
Clean up initialization of H5F & H5L APIs. Tested on: Linux/64 2.6 (chicago2)
This commit is contained in:
parent
32cd8f3fcf
commit
2b635fee4d
8
src/H5.c
8
src/H5.c
@ -167,8 +167,6 @@ H5_init_library(void)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize error interface")
|
||||
if(H5P_init() < 0)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize property list interface")
|
||||
if(H5F_init() < 0)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize file interface")
|
||||
if(H5T_init() < 0)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize datatype interface")
|
||||
if(H5D_init() < 0)
|
||||
@ -343,13 +341,13 @@ done:
|
||||
herr_t
|
||||
H5dont_atexit(void)
|
||||
{
|
||||
herr_t ret_value=SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API_NOINIT(H5dont_atexit)
|
||||
H5TRACE0("e","");
|
||||
|
||||
if (H5_dont_atexit_g)
|
||||
ret_value=FAIL;
|
||||
if(H5_dont_atexit_g)
|
||||
ret_value = FAIL;
|
||||
else
|
||||
H5_dont_atexit_g = TRUE;
|
||||
|
||||
|
111
src/H5F.c
111
src/H5F.c
@ -60,9 +60,6 @@ typedef struct H5F_olist_t {
|
||||
} H5F_olist_t;
|
||||
|
||||
/* PRIVATE PROTOTYPES */
|
||||
#ifdef NOT_YET
|
||||
static int H5F_flush_all_cb(void *f, hid_t fid, void *_invalidate);
|
||||
#endif /* NOT_YET */
|
||||
static unsigned H5F_get_objects(const H5F_t *f, unsigned types, int max_objs, hid_t *obj_id_list);
|
||||
static int H5F_get_objects_cb(void *obj_ptr, hid_t obj_id, void *key);
|
||||
static herr_t H5F_get_vfd_handle(const H5F_t *file, hid_t fapl, void** file_handle);
|
||||
@ -85,27 +82,24 @@ H5FL_DEFINE(H5F_file_t);
|
||||
* Purpose: Initialize the interface from some other layer.
|
||||
*
|
||||
* Return: Success: non-negative
|
||||
*
|
||||
* Failure: negative
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* Wednesday, December 16, 1998
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5F_init(void)
|
||||
{
|
||||
herr_t ret_value=SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(H5F_init, FAIL)
|
||||
/* FUNC_ENTER() does all the work */
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
}
|
||||
} /* end H5F_init() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -181,107 +175,6 @@ H5F_term_interface(void)
|
||||
FUNC_LEAVE_NOAPI(n)
|
||||
}
|
||||
|
||||
#ifdef NOT_YET
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F_flush_all_cb
|
||||
*
|
||||
* Purpose: Callback function for H5F_flush_all().
|
||||
*
|
||||
* Return: Always returns zero.
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* Friday, February 19, 1999
|
||||
*
|
||||
* Modifications:
|
||||
* Bill Wendling, 2003-03-18
|
||||
* Changed H5F_flush to accept H5F_flush_t flags instead of a
|
||||
* series of h5bool_t's.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static int
|
||||
H5F_flush_all_cb(void *_f, hid_t UNUSED fid, void *_invalidate)
|
||||
{
|
||||
H5F_t *f=(H5F_t *)_f;
|
||||
unsigned invalidate = (*((hbool_t*)_invalidate);
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5F_flush_all_cb)
|
||||
|
||||
H5F_flush(f, H5F_SCOPE_LOCAL, (invalidate ? H5F_FLUSH_INVALIDATE : H5F_FLUSH_NONE));
|
||||
|
||||
FUNC_LEAVE_NOAPI(0)
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F_flush_all
|
||||
*
|
||||
* Purpose: Flush all open files. If INVALIDATE is true then also remove
|
||||
* everything from the cache.
|
||||
*
|
||||
* Return: Success: Non-negative
|
||||
*
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* Thursday, February 18, 1999
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5F_flush_all(hbool_t invalidate)
|
||||
{
|
||||
herr_t ret_value=SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(H5F_flush_all, FAIL)
|
||||
|
||||
H5I_search(H5I_FILE,H5F_flush_all_cb,&invalidate);
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
}
|
||||
#endif /* NOT_YET */
|
||||
|
||||
#ifdef NOT_YET
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5F_encode_length_unusual -- encode an unusual length size
|
||||
USAGE
|
||||
void H5F_encode_length_unusual(f, p, l)
|
||||
const H5F_t *f; IN: pointer to the file record
|
||||
uint8_t **p; IN: pointer to buffer pointer to encode length in
|
||||
uint8_t *l; IN: pointer to length to encode
|
||||
|
||||
ERRORS
|
||||
|
||||
RETURNS
|
||||
none
|
||||
DESCRIPTION
|
||||
Encode non-standard (i.e. not 2, 4 or 8-byte) lengths in file meta-data.
|
||||
--------------------------------------------------------------------------*/
|
||||
void
|
||||
H5F_encode_length_unusual(const H5F_t *f, uint8_t **p, uint8_t *l)
|
||||
{
|
||||
int i = (int)H5F_SIZEOF_SIZE(f)-1;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
/*
|
||||
* For non-little-endian platforms, encode each byte in memory backwards.
|
||||
*/
|
||||
for (/*void*/; i>=0; i--, (*p)++)*(*p) = *(l+i);
|
||||
#else
|
||||
/* platform has little-endian integers */
|
||||
HDmemcpy(*p,l,(size_t)(i+1));
|
||||
*p+=(i+1);
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif /* NOT_YET */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5Fget_create_plist
|
||||
|
@ -36,7 +36,7 @@ RETURNS
|
||||
Non-negative on success/Negative on failure
|
||||
DESCRIPTION
|
||||
Initializes any interface-specific data or routines. (Just calls
|
||||
H5F_init_iterface currently).
|
||||
H5F_init() currently).
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
static herr_t
|
||||
|
@ -44,7 +44,7 @@ RETURNS
|
||||
Non-negative on success/Negative on failure
|
||||
DESCRIPTION
|
||||
Initializes any interface-specific data or routines. (Just calls
|
||||
H5F_init_iterface currently).
|
||||
H5F_init() currently).
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
static herr_t
|
||||
|
@ -172,11 +172,8 @@ H5FL_EXTERN(H5F_file_t);
|
||||
/******************************/
|
||||
|
||||
|
||||
#ifdef NOT_YET
|
||||
H5_DLL void H5F_encode_length_unusual(const H5F_t *f, uint8_t **p, uint8_t *l);
|
||||
#endif /* NOT_YET */
|
||||
|
||||
/* General routines */
|
||||
H5_DLL herr_t H5F_init(void);
|
||||
H5_DLL herr_t H5F_try_close(H5F_t *f);
|
||||
H5_DLL haddr_t H5F_locate_signature(H5FD_t *file, hid_t dxpl_id);
|
||||
|
||||
@ -195,5 +192,5 @@ H5_DLL herr_t H5F_sfile_add(H5F_file_t *shared);
|
||||
H5_DLL H5F_file_t * H5F_sfile_search(H5FD_t *lf);
|
||||
H5_DLL herr_t H5F_sfile_remove(H5F_file_t *shared);
|
||||
|
||||
#endif
|
||||
#endif /* _H5Fpkg_H */
|
||||
|
||||
|
@ -375,12 +375,8 @@ typedef struct H5F_t H5F_t;
|
||||
struct H5B_class_t;
|
||||
struct H5RC_t;
|
||||
|
||||
/* Private functions, not part of the publicly documented API */
|
||||
H5_DLL herr_t H5F_init(void);
|
||||
#ifdef NOT_YET
|
||||
H5_DLL herr_t H5F_flush_all(hbool_t invalidate);
|
||||
#endif /* NOT_YET */
|
||||
H5_DLL H5F_t * H5F_open(const char *name, unsigned flags, hid_t fcpl_id,
|
||||
/* Private functions */
|
||||
H5_DLL H5F_t *H5F_open(const char *name, unsigned flags, hid_t fcpl_id,
|
||||
hid_t fapl_id, hid_t dxpl_id);
|
||||
|
||||
/* Functions than retrieve values from the file struct */
|
||||
|
@ -33,8 +33,6 @@
|
||||
* We're assuming that these constants are used rather early in the hdf5
|
||||
* session.
|
||||
*
|
||||
* NOTE: When adding H5F_ACC_* macros, remember to redefine them in H5Fprivate.h
|
||||
*
|
||||
*/
|
||||
|
||||
/* When this header is included from a private header, don't make calls to H5check() */
|
||||
@ -104,20 +102,20 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* Functions in H5F.c */
|
||||
H5_DLL htri_t H5Fis_hdf5 (const char *filename);
|
||||
H5_DLL hid_t H5Fcreate (const char *filename, unsigned flags,
|
||||
H5_DLL htri_t H5Fis_hdf5(const char *filename);
|
||||
H5_DLL hid_t H5Fcreate(const char *filename, unsigned flags,
|
||||
hid_t create_plist, hid_t access_plist);
|
||||
H5_DLL hid_t H5Fopen (const char *filename, unsigned flags,
|
||||
H5_DLL hid_t H5Fopen(const char *filename, unsigned flags,
|
||||
hid_t access_plist);
|
||||
H5_DLL hid_t H5Freopen(hid_t file_id);
|
||||
H5_DLL herr_t H5Fflush(hid_t object_id, H5F_scope_t scope);
|
||||
H5_DLL herr_t H5Fclose (hid_t file_id);
|
||||
H5_DLL hid_t H5Fget_create_plist (hid_t file_id);
|
||||
H5_DLL hid_t H5Fget_access_plist (hid_t file_id);
|
||||
H5_DLL herr_t H5Fclose(hid_t file_id);
|
||||
H5_DLL hid_t H5Fget_create_plist(hid_t file_id);
|
||||
H5_DLL hid_t H5Fget_access_plist(hid_t file_id);
|
||||
H5_DLL herr_t H5Fget_intent(hid_t file_id, unsigned * intent);
|
||||
H5_DLL int H5Fget_obj_count(hid_t file_id, unsigned types);
|
||||
H5_DLL int H5Fget_obj_ids(hid_t file_id, unsigned types, int max_objs, hid_t *obj_id_list);
|
||||
H5_DLL herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void** file_handle);
|
||||
H5_DLL herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void **file_handle);
|
||||
H5_DLL herr_t H5Fmount(hid_t loc, const char *name, hid_t child, hid_t plist);
|
||||
H5_DLL herr_t H5Funmount(hid_t loc, const char *name);
|
||||
H5_DLL hssize_t H5Fget_freespace(hid_t file_id);
|
||||
@ -138,4 +136,5 @@ H5_DLL ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif /* _H5Fpublic_H */
|
||||
|
||||
|
@ -39,7 +39,7 @@ RETURNS
|
||||
Non-negative on success/Negative on failure
|
||||
DESCRIPTION
|
||||
Initializes any interface-specific data or routines. (Just calls
|
||||
H5F_init_iterface currently).
|
||||
H5F_init() currently).
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
static herr_t
|
||||
|
164
src/H5L.c
164
src/H5L.c
@ -159,21 +159,74 @@ static H5L_class_t *H5L_table_g = NULL;
|
||||
* Programmer: James Laird
|
||||
* Thursday, July 13, 2006
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5L_init(void)
|
||||
{
|
||||
herr_t ret_value=SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(H5L_init, FAIL);
|
||||
FUNC_ENTER_NOAPI(H5L_init, FAIL)
|
||||
/* FUNC_ENTER() does all the work */
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value);
|
||||
}
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5L_init() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5L_init_interface
|
||||
*
|
||||
* Purpose: Initialize information specific to H5L interface.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: James Laird
|
||||
* Tuesday, January 24, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5L_init_interface(void)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT(H5L_init_interface)
|
||||
|
||||
/* Initialize user-defined link classes */
|
||||
if(H5L_register_external() < 0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_NOTREGISTERED, FAIL, "unable to register external link class")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5L_init_interface() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5L_term_interface
|
||||
*
|
||||
* Purpose: Terminate any resources allocated in H5L_init_interface.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: James Laird
|
||||
* Tuesday, January 24, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int
|
||||
H5L_term_interface(void)
|
||||
{
|
||||
int n = 0;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5L_term_interface)
|
||||
|
||||
/* Free the table of link types */
|
||||
H5L_table_g = H5MM_xfree(H5L_table_g);
|
||||
H5L_table_used_g = H5L_table_alloc_g = 0;
|
||||
|
||||
FUNC_LEAVE_NOAPI(n)
|
||||
} /* H5L_term_interface() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -292,61 +345,6 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5L_find_class */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5L_init_interface
|
||||
*
|
||||
* Purpose: Initialize information specific to H5L interface.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: James Laird
|
||||
* Tuesday, January 24, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5L_init_interface(void)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT(H5L_init_interface)
|
||||
|
||||
/* Initialize user-defined link classes */
|
||||
if(H5L_register_external() <0)
|
||||
HGOTO_ERROR(H5E_LINK, H5E_NOTREGISTERED, FAIL, "unable to register external link class")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5L_init_interface() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5L_term_interface
|
||||
*
|
||||
* Purpose: Terminate any resources allocated in H5L_init_interface.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: James Laird
|
||||
* Tuesday, January 24, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int
|
||||
H5L_term_interface(void)
|
||||
{
|
||||
int n=0;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5L_term_interface)
|
||||
|
||||
/* Free the table of link types */
|
||||
H5L_table_g = H5MM_xfree(H5L_table_g);
|
||||
H5L_table_used_g = H5L_table_alloc_g = 0;
|
||||
|
||||
FUNC_LEAVE_NOAPI(n)
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5Lmove
|
||||
@ -634,7 +632,6 @@ done:
|
||||
} /* end H5Lcreate_hard() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5Lcreate_ud
|
||||
*
|
||||
@ -861,7 +858,8 @@ done:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
htri_t H5Lis_registered(H5L_type_t id)
|
||||
htri_t
|
||||
H5Lis_registered(H5L_type_t id)
|
||||
{
|
||||
size_t i; /* Local index variable */
|
||||
htri_t ret_value=FALSE; /* Return value */
|
||||
@ -881,8 +879,7 @@ htri_t H5Lis_registered(H5L_type_t id)
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
}
|
||||
/* end H5Lis_registered */
|
||||
} /* end H5Lis_registered() */
|
||||
|
||||
/*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -908,28 +905,28 @@ done:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5L_register (const H5L_class_t *cls)
|
||||
H5L_register(const H5L_class_t *cls)
|
||||
{
|
||||
size_t i;
|
||||
herr_t ret_value=SUCCEED; /* Return value */
|
||||
size_t i; /* Local index variable */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(H5L_register, FAIL)
|
||||
|
||||
assert (cls);
|
||||
assert (cls->id>=0 && cls->id<=H5L_TYPE_MAX);
|
||||
HDassert(cls);
|
||||
HDassert(cls->id >= 0 && cls->id <= H5L_TYPE_MAX);
|
||||
|
||||
/* Is the link type already registered? */
|
||||
for (i=0; i<H5L_table_used_g; i++)
|
||||
if (H5L_table_g[i].id==cls->id)
|
||||
for(i = 0; i < H5L_table_used_g; i++)
|
||||
if(H5L_table_g[i].id == cls->id)
|
||||
break;
|
||||
|
||||
/* Filter not already registered */
|
||||
if (i>=H5L_table_used_g) {
|
||||
if (H5L_table_used_g>=H5L_table_alloc_g) {
|
||||
size_t n = MAX(H5L_MIN_TABLE_SIZE, 2*H5L_table_alloc_g);
|
||||
if(i >= H5L_table_used_g) {
|
||||
if(H5L_table_used_g >= H5L_table_alloc_g) {
|
||||
size_t n = MAX(H5L_MIN_TABLE_SIZE, 2 * H5L_table_alloc_g);
|
||||
H5L_class_t *table = H5MM_realloc(H5L_table_g,
|
||||
n*sizeof(H5L_class_t));
|
||||
if (!table)
|
||||
n * sizeof(H5L_class_t));
|
||||
if(!table)
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to extend link type table")
|
||||
H5L_table_g = table;
|
||||
H5L_table_alloc_g = n;
|
||||
@ -937,13 +934,10 @@ H5L_register (const H5L_class_t *cls)
|
||||
|
||||
/* Initialize */
|
||||
i = H5L_table_used_g++;
|
||||
HDmemcpy(H5L_table_g+i, cls, sizeof(H5L_class_t));
|
||||
} /* end if */
|
||||
/* Filter already registered */
|
||||
else {
|
||||
/* Replace old contents */
|
||||
HDmemcpy(H5L_table_g+i, cls, sizeof(H5L_class_t));
|
||||
} /* end else */
|
||||
|
||||
/* Copy link class info into table */
|
||||
HDmemcpy(H5L_table_g + i, cls, sizeof(H5L_class_t));
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -965,7 +959,7 @@ done:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5L_unregister (H5L_type_t id)
|
||||
H5L_unregister(H5L_type_t id)
|
||||
{
|
||||
size_t i; /* Local index variable */
|
||||
herr_t ret_value=SUCCEED; /* Return value */
|
||||
@ -2129,4 +2123,4 @@ H5L_get_default_lcpl(void)
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5L_get_default_lcpl */
|
||||
|
||||
|
||||
|
@ -56,7 +56,7 @@ RETURNS
|
||||
|
||||
DESCRIPTION
|
||||
Initializes any interface-specific data or routines. (Just calls
|
||||
H5L_init currently).
|
||||
H5L_init() currently).
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
static herr_t
|
||||
|
Loading…
Reference in New Issue
Block a user