summaryrefslogtreecommitdiffstats
path: root/src/H5Gnode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Gnode.c')
-rw-r--r--src/H5Gnode.c137
1 files changed, 72 insertions, 65 deletions
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index 091dfe3..e28ecb3 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -41,35 +41,34 @@ static herr_t H5G_node_encode_key(H5F_t *f, H5B_t *bt, uint8_t *raw,
static size_t H5G_node_size(H5F_t *f);
static herr_t H5G_node_create(H5F_t *f, H5B_ins_t op, void *_lt_key,
void *_udata, void *_rt_key,
- haddr_t *addr/*out*/);
-static herr_t H5G_node_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr,
+ haddr_t *addr_p/*out*/);
+static herr_t H5G_node_flush(H5F_t *f, hbool_t destroy, haddr_t addr,
H5G_node_t *sym);
-static H5G_node_t *H5G_node_load(H5F_t *f, const haddr_t *addr,
- const void *_udata1, void *_udata2);
+static H5G_node_t *H5G_node_load(H5F_t *f, haddr_t addr, const void *_udata1,
+ void *_udata2);
static intn H5G_node_cmp2(H5F_t *f, void *_lt_key, void *_udata,
void *_rt_key);
static intn H5G_node_cmp3(H5F_t *f, void *_lt_key, void *_udata,
void *_rt_key);
-static herr_t H5G_node_found(H5F_t *f, const haddr_t *addr,
- const void *_lt_key, void *_udata,
- const void *_rt_key);
-static H5B_ins_t H5G_node_insert(H5F_t *f, const haddr_t *addr,
- void *_lt_key, hbool_t *lt_key_changed,
- void *_md_key, void *_udata,
- void *_rt_key, hbool_t *rt_key_changed,
- haddr_t *new_node/*out*/);
-static H5B_ins_t H5G_node_remove(H5F_t *f, const haddr_t *addr, void *lt_key,
+static herr_t H5G_node_found(H5F_t *f, haddr_t addr, const void *_lt_key,
+ void *_udata, const void *_rt_key);
+static H5B_ins_t H5G_node_insert(H5F_t *f, haddr_t addr, void *_lt_key,
+ hbool_t *lt_key_changed, void *_md_key,
+ void *_udata, void *_rt_key,
+ hbool_t *rt_key_changed,
+ haddr_t *new_node_p/*out*/);
+static H5B_ins_t H5G_node_remove(H5F_t *f, haddr_t addr, void *lt_key,
hbool_t *lt_key_changed, void *udata,
void *rt_key, hbool_t *rt_key_changed);
-static herr_t H5G_node_iterate(H5F_t *f, void *_lt_key, const haddr_t *addr,
+static herr_t H5G_node_iterate(H5F_t *f, void *_lt_key, haddr_t addr,
void *_rt_key, void *_udata);
static size_t H5G_node_sizeof_rkey(H5F_t *f, const void *_udata);
/* H5G inherits cache-like properties from H5AC */
const H5AC_class_t H5AC_SNODE[1] = {{
H5AC_SNODE_ID,
- (void *(*)(H5F_t*, const haddr_t*, const void*, void*))H5G_node_load,
- (herr_t (*)(H5F_t*, hbool_t, const haddr_t*, void*))H5G_node_flush,
+ (void *(*)(H5F_t*, haddr_t, const void*, void*))H5G_node_load,
+ (herr_t (*)(H5F_t*, hbool_t, haddr_t, void*))H5G_node_flush,
}};
/* H5G inherits B-tree like properties from H5B */
@@ -218,8 +217,8 @@ H5G_node_size(H5F_t *f)
* is also called internally to split a symbol node with LT_KEY
* and RT_KEY null pointers.
*
- * Return: Success: Non-negative. The address of symbol table node is
- * returned through the ADDR argument.
+ * Return: Success: Non-negative. The address of symbol table
+ * node is returned through the ADDR_P argument.
*
* Failure: Negative
*
@@ -233,7 +232,7 @@ H5G_node_size(H5F_t *f)
*/
static herr_t
H5G_node_create(H5F_t *f, H5B_ins_t UNUSED op, void *_lt_key,
- void UNUSED *_udata, void *_rt_key, haddr_t *addr/*out*/)
+ void UNUSED *_udata, void *_rt_key, haddr_t *addr_p/*out*/)
{
H5G_node_key_t *lt_key = (H5G_node_key_t *) _lt_key;
H5G_node_key_t *rt_key = (H5G_node_key_t *) _rt_key;
@@ -253,7 +252,7 @@ H5G_node_create(H5F_t *f, H5B_ins_t UNUSED op, void *_lt_key,
"memory allocation failed");
}
size = H5G_node_size(f);
- if (H5MF_alloc(f, H5MF_META, size, addr/*out*/) < 0) {
+ if (H5MF_alloc(f, H5MF_META, size, addr_p/*out*/) < 0) {
H5MM_xfree(sym);
HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL,
"unable to allocate file space");
@@ -265,7 +264,7 @@ H5G_node_create(H5F_t *f, H5B_ins_t UNUSED op, void *_lt_key,
HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL,
"memory allocation failed");
}
- if (H5AC_set(f, H5AC_SNODE, addr, sym) < 0) {
+ if (H5AC_set(f, H5AC_SNODE, *addr_p, sym) < 0) {
H5MM_xfree(sym->entry);
H5MM_xfree(sym);
HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL,
@@ -296,13 +295,15 @@ H5G_node_create(H5F_t *f, H5B_ins_t UNUSED op, void *_lt_key,
* Jun 23 1997
*
* Modifications:
- * rky 980828 Only p0 writes metadata to disk.
+ * rky, 1998-08-28
+ * Only p0 writes metadata to disk.
*
+ * Robb Matzke, 1999-07-28
+ * The ADDR argument is passed by value.
*-------------------------------------------------------------------------
*/
static herr_t
-H5G_node_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr,
- H5G_node_t *sym)
+H5G_node_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5G_node_t *sym)
{
uint8_t *buf = NULL, *p = NULL;
size_t size;
@@ -315,7 +316,7 @@ H5G_node_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr,
* Check arguments.
*/
assert(f);
- assert(addr && H5F_addr_defined(addr));
+ assert(H5F_addr_defined(addr));
assert(sym);
/*
@@ -387,11 +388,12 @@ H5G_node_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr,
* Jun 23 1997
*
* Modifications:
- *
+ * Robb Matzke, 1999-07-28
+ * The ADDR argument is passed by value.
*-------------------------------------------------------------------------
*/
static H5G_node_t *
-H5G_node_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1,
+H5G_node_load(H5F_t *f, haddr_t addr, const void UNUSED *_udata1,
void UNUSED *_udata2)
{
H5G_node_t *sym = NULL;
@@ -406,7 +408,7 @@ H5G_node_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1,
* Check arguments.
*/
assert(f);
- assert(addr && H5F_addr_defined(addr));
+ assert(H5F_addr_defined(addr));
assert(!_udata1);
assert(NULL == _udata2);
@@ -504,11 +506,11 @@ H5G_node_cmp2(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key)
assert(lt_key);
assert(rt_key);
- if (NULL == (s1 = H5HL_peek(f, &(udata->heap_addr), lt_key->offset))) {
+ if (NULL == (s1 = H5HL_peek(f, udata->heap_addr, lt_key->offset))) {
HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL,
"unable to read symbol name");
}
- if (NULL == (s2 = H5HL_peek(f, &(udata->heap_addr), rt_key->offset))) {
+ if (NULL == (s2 = H5HL_peek(f, udata->heap_addr, rt_key->offset))) {
HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL,
"unable to read symbol name");
}
@@ -556,7 +558,7 @@ H5G_node_cmp3(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key)
FUNC_ENTER(H5G_node_cmp3, FAIL);
/* left side */
- if (NULL == (s = H5HL_peek(f, &(udata->heap_addr), lt_key->offset))) {
+ if (NULL == (s = H5HL_peek(f, udata->heap_addr, lt_key->offset))) {
HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL,
"unable to read symbol name");
}
@@ -564,7 +566,7 @@ H5G_node_cmp3(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key)
HRETURN(-1);
/* right side */
- if (NULL == (s = H5HL_peek(f, &(udata->heap_addr), rt_key->offset))) {
+ if (NULL == (s = H5HL_peek(f, udata->heap_addr, rt_key->offset))) {
HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL,
"unable to read symbol name");
}
@@ -600,11 +602,12 @@ H5G_node_cmp3(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key)
* Jun 23 1997
*
* Modifications:
- *
+ * Robb Matzke, 1999-07-28
+ * The ADDR argument is passed by value.
*-------------------------------------------------------------------------
*/
static herr_t
-H5G_node_found(H5F_t *f, const haddr_t *addr, const void UNUSED *_lt_key,
+H5G_node_found(H5F_t *f, haddr_t addr, const void UNUSED *_lt_key,
void *_udata, const void UNUSED *_rt_key)
{
H5G_bt_ud1_t *bt_udata = (H5G_bt_ud1_t *) _udata;
@@ -619,7 +622,7 @@ H5G_node_found(H5F_t *f, const haddr_t *addr, const void UNUSED *_lt_key,
* Check arguments.
*/
assert(f);
- assert(addr && H5F_addr_defined(addr));
+ assert(H5F_addr_defined(addr));
assert(bt_udata);
/*
@@ -636,7 +639,7 @@ H5G_node_found(H5F_t *f, const haddr_t *addr, const void UNUSED *_lt_key,
rt = sn->nsyms;
while (lt < rt && cmp) {
idx = (lt + rt) / 2;
- if (NULL == (s = H5HL_peek(f, &(bt_udata->heap_addr),
+ if (NULL == (s = H5HL_peek(f, bt_udata->heap_addr,
sn->entry[idx].name_off))) {
HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL,
"unable to read symbol name");
@@ -696,11 +699,11 @@ H5G_node_found(H5F_t *f, const haddr_t *addr, const void UNUSED *_lt_key,
* Return: Success: An insertion command for the caller, one of
* the H5B_INS_* constants. The address of the
* new node, if any, is returned through the
- * NEW_NODE argument. NEW_NODE might not be
+ * NEW_NODE_P argument. NEW_NODE_P might not be
* initialized if the return value is
* H5B_INS_NOOP.
*
- * Failure: H5B_INS_ERROR, NEW_NODE might not be
+ * Failure: H5B_INS_ERROR, NEW_NODE_P might not be
* initialized.
*
* Programmer: Robb Matzke
@@ -708,14 +711,15 @@ H5G_node_found(H5F_t *f, const haddr_t *addr, const void UNUSED *_lt_key,
* Jun 24 1997
*
* Modifications:
- *
+ * Robb Matzke, 1999-07-28
+ * The ADDR argument is passed by value.
*-------------------------------------------------------------------------
*/
static H5B_ins_t
-H5G_node_insert(H5F_t *f, const haddr_t *addr, void UNUSED *_lt_key,
+H5G_node_insert(H5F_t *f, haddr_t addr, void UNUSED *_lt_key,
hbool_t UNUSED *lt_key_changed, void *_md_key,
- void *_udata, void *_rt_key,
- hbool_t UNUSED *rt_key_changed, haddr_t *new_node)
+ void *_udata, void *_rt_key, hbool_t UNUSED *rt_key_changed,
+ haddr_t *new_node_p)
{
H5G_node_key_t *md_key = (H5G_node_key_t *) _md_key;
H5G_node_key_t *rt_key = (H5G_node_key_t *) _rt_key;
@@ -735,11 +739,11 @@ H5G_node_insert(H5F_t *f, const haddr_t *addr, void UNUSED *_lt_key,
* Check arguments.
*/
assert(f);
- assert(addr && H5F_addr_defined(addr));
+ assert(H5F_addr_defined(addr));
assert(md_key);
assert(rt_key);
assert(bt_udata);
- assert(new_node);
+ assert(new_node_p);
/*
* Load the symbol node.
@@ -755,7 +759,7 @@ H5G_node_insert(H5F_t *f, const haddr_t *addr, void UNUSED *_lt_key,
rt = sn->nsyms;
while (lt < rt) {
idx = (lt + rt) / 2;
- if (NULL == (s = H5HL_peek(f, &(bt_udata->heap_addr),
+ if (NULL == (s = H5HL_peek(f, bt_udata->heap_addr,
sn->entry[idx].name_off))) {
HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, H5B_INS_ERROR,
"unable to read symbol name");
@@ -776,7 +780,7 @@ H5G_node_insert(H5F_t *f, const haddr_t *addr, void UNUSED *_lt_key,
/*
* Add the new name to the heap.
*/
- offset = H5HL_insert(f, &(bt_udata->heap_addr), HDstrlen(bt_udata->name)+1,
+ offset = H5HL_insert(f, bt_udata->heap_addr, HDstrlen(bt_udata->name)+1,
bt_udata->name);
bt_udata->ent.name_off = offset;
if (0==offset || (size_t)(-1)==offset) {
@@ -793,11 +797,11 @@ H5G_node_insert(H5F_t *f, const haddr_t *addr, void UNUSED *_lt_key,
/* The right node */
if (H5G_node_create(f, H5B_INS_FIRST, NULL, NULL, NULL,
- new_node/*out*/)<0) {
+ new_node_p/*out*/)<0) {
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, H5B_INS_ERROR,
"unable to split symbol table node");
}
- if (NULL == (snrt = H5AC_find(f, H5AC_SNODE, new_node, NULL, NULL))) {
+ if (NULL==(snrt=H5AC_find(f, H5AC_SNODE, *new_node_p, NULL, NULL))) {
HGOTO_ERROR(H5E_SYM, H5E_CANTLOAD, H5B_INS_ERROR,
"unable to split symbol table node");
}
@@ -876,11 +880,12 @@ H5G_node_insert(H5F_t *f, const haddr_t *addr, void UNUSED *_lt_key,
* Thursday, September 24, 1998
*
* Modifications:
- *
+ * Robb Matzke, 1999-07-28
+ * The ADDR argument is passed by value.
*-------------------------------------------------------------------------
*/
static H5B_ins_t
-H5G_node_remove(H5F_t *f, const haddr_t *addr, void *_lt_key/*in,out*/,
+H5G_node_remove(H5F_t *f, haddr_t addr, void *_lt_key/*in,out*/,
hbool_t UNUSED *lt_key_changed/*out*/,
void *_udata/*in,out*/, void *_rt_key/*in,out*/,
hbool_t *rt_key_changed/*out*/)
@@ -897,7 +902,7 @@ H5G_node_remove(H5F_t *f, const haddr_t *addr, void *_lt_key/*in,out*/,
/* Check arguments */
assert(f);
- assert(addr && H5F_addr_defined(addr));
+ assert(H5F_addr_defined(addr));
assert(lt_key);
assert(rt_key);
assert(bt_udata);
@@ -912,7 +917,7 @@ H5G_node_remove(H5F_t *f, const haddr_t *addr, void *_lt_key/*in,out*/,
rt = sn->nsyms;
while (lt<rt && cmp) {
idx = (lt+rt)/2;
- if (NULL==(s=H5HL_peek(f, &(bt_udata->heap_addr),
+ if (NULL==(s=H5HL_peek(f, bt_udata->heap_addr,
sn->entry[idx].name_off))) {
HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, H5B_INS_ERROR,
"unable to read symbol name");
@@ -928,16 +933,16 @@ H5G_node_remove(H5F_t *f, const haddr_t *addr, void *_lt_key/*in,out*/,
if (H5G_CACHED_SLINK==sn->entry[idx].type) {
/* Remove the symbolic link value */
- if ((s=H5HL_peek(f, &(bt_udata->heap_addr),
+ if ((s=H5HL_peek(f, bt_udata->heap_addr,
sn->entry[idx].cache.slink.lval_offset))) {
- H5HL_remove(f, &(bt_udata->heap_addr),
+ H5HL_remove(f, bt_udata->heap_addr,
sn->entry[idx].cache.slink.lval_offset,
HDstrlen(s)+1);
}
H5E_clear(); /*no big deal*/
} else {
/* Decrement the reference count */
- assert(H5F_addr_defined(&(sn->entry[idx].header)));
+ assert(H5F_addr_defined(sn->entry[idx].header));
if (H5O_link(sn->entry+idx, -1)<0) {
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, H5B_INS_ERROR,
"unable to decrement object link count");
@@ -945,8 +950,8 @@ H5G_node_remove(H5F_t *f, const haddr_t *addr, void *_lt_key/*in,out*/,
}
/* Remove the name from the local heap */
- if ((s=H5HL_peek(f, &(bt_udata->heap_addr), sn->entry[idx].name_off))) {
- H5HL_remove(f, &(bt_udata->heap_addr), sn->entry[idx].name_off,
+ if ((s=H5HL_peek(f, bt_udata->heap_addr, sn->entry[idx].name_off))) {
+ H5HL_remove(f, bt_udata->heap_addr, sn->entry[idx].name_off,
HDstrlen(s)+1);
}
H5E_clear(); /*no big deal*/
@@ -1031,11 +1036,12 @@ H5G_node_remove(H5F_t *f, const haddr_t *addr, void *_lt_key/*in,out*/,
* Jun 24 1997
*
* Modifications:
- *
+ * Robb Matzke, 1999-07-28
+ * The ADDR argument is passed by value.
*-------------------------------------------------------------------------
*/
static herr_t
-H5G_node_iterate (H5F_t *f, void UNUSED *_lt_key, const haddr_t *addr,
+H5G_node_iterate (H5F_t *f, void UNUSED *_lt_key, haddr_t addr,
void UNUSED *_rt_key, void *_udata)
{
H5G_bt_ud2_t *bt_udata = (H5G_bt_ud2_t *)_udata;
@@ -1052,7 +1058,7 @@ H5G_node_iterate (H5F_t *f, void UNUSED *_lt_key, const haddr_t *addr,
* Check arguments.
*/
assert(f);
- assert(addr && H5F_addr_defined(addr));
+ assert(H5F_addr_defined(addr));
assert(bt_udata);
/*
@@ -1078,7 +1084,7 @@ H5G_node_iterate (H5F_t *f, void UNUSED *_lt_key, const haddr_t *addr,
if (bt_udata->skip>0) {
--bt_udata->skip;
} else {
- name = H5HL_peek (f, &(bt_udata->group->ent.cache.stab.heap_addr),
+ name = H5HL_peek (f, bt_udata->group->ent.cache.stab.heap_addr,
name_off[i]);
assert (name);
n = HDstrlen (name);
@@ -1119,12 +1125,13 @@ H5G_node_iterate (H5F_t *f, void UNUSED *_lt_key, const haddr_t *addr,
* Aug 4 1997
*
* Modifications:
- *
+ * Robb Matzke, 1999-07-28
+ * The ADDR and HEAP arguments are passed by value.
*-------------------------------------------------------------------------
*/
herr_t
-H5G_node_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent,
- intn fwidth, const haddr_t *heap)
+H5G_node_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent,
+ intn fwidth, haddr_t heap)
{
int i;
H5G_node_t *sn = NULL;
@@ -1137,7 +1144,7 @@ H5G_node_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent,
* Check arguments.
*/
assert(f);
- assert(addr && H5F_addr_defined(addr));
+ assert(H5F_addr_defined(addr));
assert(stream);
assert(indent >= 0);
assert(fwidth >= 0);