diff options
author | Robb Matzke <matzke@llnl.gov> | 1999-07-28 18:25:43 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1999-07-28 18:25:43 (GMT) |
commit | e4834c43ce6528308ebd5375bd4c7a0df88af427 (patch) | |
tree | 0039040d95cc92fdb197b2902436e32a020a7b6f | |
parent | 139688863f191366fe27fbab9654a52285e63c11 (diff) | |
download | hdf5-e4834c43ce6528308ebd5375bd4c7a0df88af427.zip hdf5-e4834c43ce6528308ebd5375bd4c7a0df88af427.tar.gz hdf5-e4834c43ce6528308ebd5375bd4c7a0df88af427.tar.bz2 |
[svn-r1548] Changes since 19990727
----------------------
./src/H5.c [1.3]
./src/H5AC.c [1.3]
./src/H5ACprivate.h [1.3]
./src/H5B.c [1.3]
./src/H5Bprivate.h [1.3]
./src/H5D.c [1.3]
./src/H5F.c [1.3]
./src/H5Farray.c [1.3]
./src/H5Fcore.c [1.3]
./src/H5Ffamily.c [1.3]
./src/H5Fistore.c [1.3]
./src/H5Flow.c [1.3]
./src/H5Fmpio.c [1.3]
./src/H5Fprivate.h [1.3]
./src/H5Fsec2.c [1.3]
./src/H5Fsplit.c [1.3]
./src/H5Fstdio.c [1.3]
./src/H5G.c [1.3]
./src/H5Gent.c [1.3]
./src/H5Gnode.c [1.3]
./src/H5Gprivate.h [1.3]
./src/H5Gstab.c [1.3]
./src/H5HG.c [1.3]
./src/H5HGprivate.h [1.3]
./src/H5HL.c [1.3]
./src/H5HLprivate.h [1.3]
./src/H5MF.c [1.3]
./src/H5MFprivate.h [1.3]
./src/H5O.c [1.3]
./src/H5Oattr.c [1.3]
./src/H5Ocont.c [1.3]
./src/H5Odtype.c [1.3]
./src/H5Oefl.c [1.3]
./src/H5Olayout.c [1.3]
./src/H5Oprivate.h [1.3]
./src/H5Oshared.c [1.3]
./src/H5Ostab.c [1.3]
./src/H5P.c [1.3]
./src/H5R.c [1.3]
./src/H5Smpio.c [1.3]
./src/H5T.c [1.3]
./src/H5Tvlen.c [1.3]
./src/H5private.h [1.3]
./test/dtypes.c [1.3]
./test/gheap.c [1.3]
./test/istore.c [1.3]
./test/lheap.c [1.3]
./test/ohdr.c [1.3]
./tools/h5debug.c [1.3]
File addresses (the `haddr_t' type) are passed by value
instead of by reference. The type is no longer a struct. This
is one of the preliminary changes needed for the Virtual File
Layer stuff.
./src/H5Fprivate.h [1.3]
./src/H5Flow.c [1.3]
Some address functions were rewritten as macros.
51 files changed, 1413 insertions, 1497 deletions
@@ -519,10 +519,7 @@ HDvsnprintf(char *buf, size_t size, const char *fmt, va_list ap) * prints an `hsize_t' value as a hex number right justified and * zero filled in an 18-character field. * - * The conversion `a' refers to an `haddr_t*' type. - * - * Bugs: Return value will be incorrect if `%a' appears in the format - * string. + * The conversion `a' refers to an `haddr_t' type. * * Return: Success: Number of characters printed * @@ -532,7 +529,9 @@ HDvsnprintf(char *buf, size_t size, const char *fmt, va_list ap) * Thursday, April 9, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-27 + * The `%a' format refers to an argument of `haddr_t' type + * instead of `haddr_t*' and the return value is correct. *------------------------------------------------------------------------- */ int @@ -732,8 +731,8 @@ HDfprintf (FILE *stream, const char *fmt, ...) case 'a': if (1) { - haddr_t *x = va_arg (ap, haddr_t*); - if (x && H5F_addr_defined(x)) { + haddr_t x = va_arg (ap, haddr_t); + if (H5F_addr_defined(x)) { sprintf(template, "%%%s%s%s%s%s", leftjust?"-":"", plussign?"+":"", ldspace?" ":"", prefix?"#":"", @@ -741,15 +740,15 @@ HDfprintf (FILE *stream, const char *fmt, ...) if (fwidth>0) { sprintf(template+HDstrlen(template), "%d", fwidth); } - if (sizeof(x->offset)==SIZEOF_INT) { + if (sizeof(x)==SIZEOF_INT) { HDstrcat(template, "d"); - } else if (sizeof(x->offset)==SIZEOF_LONG) { + } else if (sizeof(x)==SIZEOF_LONG) { HDstrcat(template, "ld"); - } else if (sizeof(x->offset)==SIZEOF_LONG_LONG) { + } else if (sizeof(x)==SIZEOF_LONG_LONG) { HDstrcat(template, PRINTF_LL_WIDTH); HDstrcat(template, "d"); } - n = fprintf(stream, template, x->offset); + n = fprintf(stream, template, x); } else { HDstrcpy(template, "%"); if (leftjust) HDstrcat(template, "-"); @@ -757,7 +756,7 @@ HDfprintf (FILE *stream, const char *fmt, ...) sprintf(template+HDstrlen(template), "%d", fwidth); } HDstrcat(template, "s"); - fprintf(stream, template, x?"UNDEF":"NULL"); + fprintf(stream, template, "UNDEF"); } } break; @@ -114,7 +114,7 @@ H5AC_dest(H5F_t *f) assert(f->shared->cache); cache = f->shared->cache; - if (H5AC_flush(f, NULL, NULL, TRUE) < 0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, TRUE) < 0) { HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache"); } @@ -175,17 +175,19 @@ H5AC_dest(H5F_t *f) * Keeps track of hits, misses, and flushes per object type so we have * some cache performance diagnostics. * + * Robb Matzke, 1999-07-27 + * The ADDR argument is passed by value. + * *------------------------------------------------------------------------- */ void * -H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, - const void *udata1, void *udata2) +H5AC_find_f(H5F_t *f, const H5AC_class_t *type, haddr_t addr, + const void *udata1, void *udata2) { unsigned idx; herr_t status; void *thing = NULL; - herr_t (*flush) (H5F_t *, hbool_t, const haddr_t *, - void *) = NULL; + herr_t (*flush) (H5F_t *, hbool_t, haddr_t, void*) = NULL; H5AC_slot_t *slot = NULL; H5AC_t *cache = NULL; @@ -196,7 +198,7 @@ H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, assert(type); assert(type->load); assert(type->flush); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); idx = H5AC_HASH(f, addr); cache = f->shared->cache; slot = cache->slot + idx; @@ -204,7 +206,7 @@ H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, /* * Return right away if the item is in the cache. */ - if (slot->type == type && H5F_addr_eq(&(slot->addr), addr)) { + if (slot->type == type && H5F_addr_eq(slot->addr, addr)) { cache->diagnostics[type->id].nhits++; HRETURN(slot->thing); } @@ -214,7 +216,7 @@ H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * Fail if the item in the cache is at the correct address but is * of the wrong type. */ - if (slot->type && slot->type != type && H5F_addr_eq(&(slot->addr), addr)) { + if (slot->type && slot->type != type && H5F_addr_eq(slot->addr, addr)) { HRETURN_ERROR(H5E_CACHE, H5E_BADTYPE, NULL, "internal error (correct address, wrong type)"); } @@ -227,7 +229,7 @@ H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, { intn i; for (i = 0; i < slot->nprots; i++) { - assert(H5F_addr_ne(addr, &(slot->prot[i].addr))); + assert(H5F_addr_ne(addr, slot->prot[i].addr)); } } #endif @@ -236,7 +238,7 @@ H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * Load a new thing. If it can't be loaded, then return an error * without preempting anything. */ - if (NULL == (thing = (type->load) (f, addr, udata1, udata2))) { + if (NULL == (thing = (type->load)(f, addr, udata1, udata2))) { HRETURN_ERROR(H5E_CACHE, H5E_CANTLOAD, NULL, "unable to load object"); } /* @@ -244,13 +246,13 @@ H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, */ if (slot->type) { flush = slot->type->flush; - status = (flush) (f, TRUE, &(slot->addr), slot->thing); + status = (flush)(f, TRUE, slot->addr, slot->thing); if (status < 0) { /* * The old thing could not be removed from the stack. * Release the new thing and fail. */ - if ((type->flush) (f, TRUE, addr, thing) < 0) { + if ((type->flush)(f, TRUE, addr, thing) < 0) { HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, NULL, "unable to flush just-loaded object"); } @@ -263,7 +265,7 @@ H5AC_find_f(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * Make the cache point to the new thing. */ slot->type = type; - slot->addr = *addr; + slot->addr = addr; slot->thing = thing; FUNC_LEAVE(thing); @@ -318,8 +320,8 @@ H5AC_compare(const void *_a, const void *_b) * * Purpose: Flushes (and destroys if DESTROY is non-zero) the specified * entry from the cache. If the entry TYPE is CACHE_FREE and - * ADDR is the null pointer then all types of entries are - * flushed. If TYPE is CACHE_FREE and ADDR is non-null, then + * ADDR is H5F_ADDR_UNDEF then all types of entries are + * flushed. If TYPE is CACHE_FREE and ADDR is defined then * whatever is cached at ADDR is flushed. Otherwise the thing * at ADDR is flushed if it is the correct type. * @@ -335,17 +337,16 @@ H5AC_compare(const void *_a, const void *_b) * Jul 9 1997 * * Modifications: - * + * Robb Matzke, 1999-07-27 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5AC_flush(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, - hbool_t destroy) +H5AC_flush(H5F_t *f, const H5AC_class_t *type, haddr_t addr, hbool_t destroy) { uintn i; herr_t status; - herr_t (*flush) (H5F_t *, hbool_t, const haddr_t *, - void *) = NULL; + herr_t (*flush)(H5F_t *, hbool_t, haddr_t, void*) = NULL; H5AC_slot_t *slot; intn *map = NULL; uintn nslots; @@ -357,7 +358,7 @@ H5AC_flush(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, assert(f->shared->cache); cache = f->shared->cache; - if (!addr) { + if (!H5F_addr_defined(addr)) { #ifdef H5AC_SORT_BY_ADDR /* @@ -378,8 +379,7 @@ H5AC_flush(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, current_cache_g = NULL; #ifdef NDEBUG for (i = 1; i < nslots; i++) { - assert(H5F_addr_lt(&(cache->slot[i - 1].addr), - &(cache->slot[i].addr))); + assert(H5F_addr_lt(cache->slot[i - 1].addr, cache->slot[i].addr)); } #endif #else @@ -399,7 +399,7 @@ H5AC_flush(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, #endif if (!type || type == slot->type) { flush = slot->type->flush; - status = (flush) (f, destroy, &(slot->addr), slot->thing); + status = (flush)(f, destroy, slot->addr, slot->thing); if (status < 0) { map = H5MM_xfree(map); HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, @@ -423,13 +423,13 @@ H5AC_flush(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, } else { i = H5AC_HASH(f, addr); if ((!type || cache->slot[i].type == type) && - H5F_addr_eq(&(cache->slot[i].addr), addr)) { + H5F_addr_eq(cache->slot[i].addr, addr)) { /* * Flush just this entry. */ flush = cache->slot[i].type->flush; - status = (flush) (f, destroy, &(cache->slot[i].addr), - cache->slot[i].thing); + status = (flush)(f, destroy, cache->slot[i].addr, + cache->slot[i].thing); if (status < 0) { HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush object"); @@ -460,16 +460,16 @@ H5AC_flush(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * Jul 9 1997 * * Modifications: - * + * Robb Matzke, 1999-07-27 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5AC_set(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, void *thing) +H5AC_set(H5F_t *f, const H5AC_class_t *type, haddr_t addr, void *thing) { herr_t status; uintn idx; - herr_t (*flush) (H5F_t *, hbool_t, const haddr_t *, - void *) = NULL; + herr_t (*flush)(H5F_t *, hbool_t, haddr_t, void*) = NULL; H5AC_slot_t *slot = NULL; H5AC_t *cache = NULL; @@ -479,7 +479,7 @@ H5AC_set(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, void *thing) assert(f->shared->cache); assert(type); assert(type->flush); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(thing); idx = H5AC_HASH(f, addr); cache = f->shared->cache; @@ -489,14 +489,14 @@ H5AC_set(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, void *thing) { intn i; for (i = 0; i < slot->nprots; i++) { - assert(H5F_addr_ne(addr, &(slot->prot[i].addr))); + assert(H5F_addr_ne(addr, slot->prot[i].addr)); } } #endif if (slot->type) { flush = slot->type->flush; - status = (flush) (f, TRUE, &(slot->addr), slot->thing); + status = (flush)(f, TRUE, slot->addr, slot->thing); if (status < 0) { HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush object"); @@ -504,7 +504,7 @@ H5AC_set(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, void *thing) cache->diagnostics[slot->type->id].nflushes++; } slot->type = type; - slot->addr = *addr; + slot->addr = addr; slot->thing = thing; cache->diagnostics[type->id].ninits++; @@ -528,16 +528,16 @@ H5AC_set(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, void *thing) * Jul 9 1997 * * Modifications: - * + * Robb Matzke, 1999-07-27 + * The OLD_ADDR and NEW_ADDR arguments are passed by value. *------------------------------------------------------------------------- */ herr_t -H5AC_rename(H5F_t *f, const H5AC_class_t *type, - const haddr_t *old_addr, const haddr_t *new_addr) +H5AC_rename(H5F_t *f, const H5AC_class_t *type, haddr_t old_addr, + haddr_t new_addr) { uintn old_idx, new_idx; - herr_t (*flush) (H5F_t *, hbool_t, const haddr_t *, - void *); + herr_t (*flush)(H5F_t *, hbool_t, haddr_t, void*); herr_t status; H5AC_t *cache = NULL; @@ -546,8 +546,6 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, assert(f); assert(f->shared->cache); assert(type); - assert(old_addr); - assert(new_addr); old_idx = H5AC_HASH(f, old_addr); new_idx = H5AC_HASH(f, new_addr); cache = f->shared->cache; @@ -557,12 +555,10 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, int i; for (i = 0; i < cache->slot[old_idx].nprots; i++) { - assert(H5F_addr_ne(old_addr, - &(cache->slot[old_idx].prot[i].addr))); + assert(H5F_addr_ne(old_addr, cache->slot[old_idx].prot[i].addr)); } for (i = 0; i < cache->slot[new_idx].nprots; i++) { - assert(H5F_addr_ne(new_addr, - &(cache->slot[new_idx].prot[i].addr))); + assert(H5F_addr_ne(new_addr, cache->slot[new_idx].prot[i].addr)); } } #endif @@ -572,11 +568,11 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, * new hash value is the same as the old one. */ if (cache->slot[old_idx].type != type || - H5F_addr_ne(&(cache->slot[old_idx].addr), old_addr)) { + H5F_addr_ne(cache->slot[old_idx].addr, old_addr)) { HRETURN(SUCCEED); } if (old_idx == new_idx) { - cache->slot[old_idx].addr = *new_addr; + cache->slot[old_idx].addr = new_addr; HRETURN(SUCCEED); } /* @@ -584,8 +580,8 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, */ if (cache->slot[new_idx].type) { flush = cache->slot[new_idx].type->flush; - status = (flush) (f, TRUE, &(cache->slot[new_idx].addr), - cache->slot[new_idx].thing); + status = (flush)(f, TRUE, cache->slot[new_idx].addr, + cache->slot[new_idx].thing); if (status < 0) { HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush object"); @@ -596,7 +592,7 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, * Move the source to the destination (it might not be cached) */ cache->slot[new_idx].type = cache->slot[old_idx].type; - cache->slot[new_idx].addr = *new_addr; + cache->slot[new_idx].addr = new_addr; cache->slot[new_idx].thing = cache->slot[old_idx].thing; cache->slot[old_idx].type = NULL; @@ -626,12 +622,13 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, * Sep 2 1997 * * Modifications: - * + * Robb Matzke, 1999-07-27 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ void * -H5AC_protect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, - const void *udata1, void *udata2) +H5AC_protect(H5F_t *f, const H5AC_class_t *type, haddr_t addr, + const void *udata1, void *udata2) { int idx; void *thing = NULL; @@ -657,22 +654,22 @@ H5AC_protect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, assert(type); assert(type->load); assert(type->flush); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); idx = H5AC_HASH(f, addr); cache = f->shared->cache; slot = cache->slot + idx; - if (slot->type == type && H5F_addr_eq(&(slot->addr), addr)) { + if (slot->type == type && H5F_addr_eq(slot->addr, addr)) { /* * The object is already cached; simply remove it from the cache. */ cache->diagnostics[slot->type->id].nhits++; thing = slot->thing; slot->type = NULL; - H5F_addr_undef(&(slot->addr)); + slot->addr = H5F_ADDR_UNDEF; slot->thing = NULL; - } else if (slot->type && H5F_addr_eq(&(slot->addr), addr)) { + } else if (slot->type && H5F_addr_eq(slot->addr, addr)) { /* * Right address but wrong object type. */ @@ -688,7 +685,7 @@ H5AC_protect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, */ intn i; for (i = 0; i < slot->nprots; i++) { - assert(H5F_addr_ne(addr, &(slot->prot[i].addr))); + assert(H5F_addr_ne(addr, slot->prot[i].addr)); } #endif @@ -697,7 +694,7 @@ H5AC_protect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * without preempting anything. */ cache->diagnostics[type->id].nmisses++; - if (NULL == (thing = (type->load) (f, addr, udata1, udata2))) { + if (NULL == (thing = (type->load)(f, addr, udata1, udata2))) { HRETURN_ERROR(H5E_CACHE, H5E_CANTLOAD, NULL, "unable to load object"); } @@ -720,7 +717,7 @@ H5AC_protect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, slot->prot = x; } slot->prot[slot->nprots].type = type; - slot->prot[slot->nprots].addr = *addr; + slot->prot[slot->nprots].addr = addr; slot->prot[slot->nprots].thing = thing; slot->nprots += 1; #endif @@ -748,17 +745,16 @@ H5AC_protect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * Sep 2 1997 * * Modifications: - * + * Robb Matzke, 1999-07-27 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, - void *thing) +H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, haddr_t addr, void *thing) { herr_t status; uintn idx; - herr_t (*flush) (H5F_t *, hbool_t, const haddr_t *, - void *) = NULL; + herr_t (*flush)(H5F_t*, hbool_t, haddr_t, void*) = NULL; H5AC_t *cache = NULL; H5AC_slot_t *slot = NULL; @@ -769,7 +765,7 @@ H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, assert(f->shared->cache); assert(type); assert(type->flush); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(thing); idx = H5AC_HASH(f, addr); cache = f->shared->cache; @@ -780,9 +776,9 @@ H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * better not be another copy of the protected object. */ if (slot->type) { - assert(H5F_addr_ne(&(slot->addr), addr)); + assert(H5F_addr_ne(slot->addr, addr)); flush = slot->type->flush; - status = (flush) (f, TRUE, &(slot->addr), slot->thing); + status = (flush)(f, TRUE, slot->addr, slot->thing); if (status < 0) { HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush object"); @@ -797,7 +793,7 @@ H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, { int found, i; for (i = 0, found = FALSE; i < slot->nprots && !found; i++) { - if (H5F_addr_eq(addr, &(slot->prot[i].addr))) { + if (H5F_addr_eq(addr, slot->prot[i].addr)) { assert(slot->prot[i].type == type); HDmemmove(slot->prot + i, slot->prot + i + 1, ((slot->nprots - i) - 1) * sizeof(H5AC_prot_t)); @@ -813,7 +809,7 @@ H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, const haddr_t *addr, * Insert the object back into the cache; it is no longer protected. */ slot->type = type; - slot->addr = *addr; + slot->addr = addr; slot->thing = thing; cache->nprots -= 1; diff --git a/src/H5ACprivate.h b/src/H5ACprivate.h index 3a911a7..17d9e06 100644 --- a/src/H5ACprivate.h +++ b/src/H5ACprivate.h @@ -60,10 +60,10 @@ typedef enum H5AC_subid_t { typedef struct H5AC_class_t { H5AC_subid_t id; - void *(*load)(H5F_t *, const haddr_t *addr, - const void *udata1, void *udata2); - herr_t (*flush)(H5F_t *, hbool_t dest, - const haddr_t *addr, void *thing); + void *(*load)(H5F_t*, haddr_t addr, const void *udata1, + void *udata2); + herr_t (*flush)(H5F_t*, hbool_t dest, haddr_t addr, + void *thing); } H5AC_class_t; /* @@ -72,7 +72,7 @@ typedef struct H5AC_class_t { * own cache, an array of slots. */ #define H5AC_NSLOTS 10330 /*prime number tend to work best */ -#define H5AC_HASH(F,ADDR_P) H5F_addr_hash(ADDR_P,(F)->shared->cache->nslots) +#define H5AC_HASH(F,ADDR) H5F_addr_hash(ADDR,(F)->shared->cache->nslots) typedef struct H5AC_prot_t { const H5AC_class_t *type; /*type of protected thing */ @@ -107,29 +107,26 @@ typedef struct H5AC_t { * Library prototypes. */ __DLL__ herr_t H5AC_dest(H5F_t *f); -__DLL__ void *H5AC_find_f(H5F_t *f, const H5AC_class_t *type, - const haddr_t *addr, const void *udata1, - void *udata2); -__DLL__ void *H5AC_protect(H5F_t *f, const H5AC_class_t *type, - const haddr_t *addr, const void *udata1, - void *udata2); -__DLL__ herr_t H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, - const haddr_t *addr, void *thing); -__DLL__ herr_t H5AC_flush(H5F_t *f, const H5AC_class_t *type, - const haddr_t *addr, hbool_t destroy); +__DLL__ void *H5AC_find_f(H5F_t *f, const H5AC_class_t *type, haddr_t addr, + const void *udata1, void *udata2); +__DLL__ void *H5AC_protect(H5F_t *f, const H5AC_class_t *type, haddr_t addr, + const void *udata1, void *udata2); +__DLL__ herr_t H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, haddr_t addr, + void *thing); +__DLL__ herr_t H5AC_flush(H5F_t *f, const H5AC_class_t *type, haddr_t addr, + hbool_t destroy); __DLL__ herr_t H5AC_create(H5F_t *f, intn size_hint); __DLL__ herr_t H5AC_rename(H5F_t *f, const H5AC_class_t *type, - const haddr_t *old_addr, const haddr_t *new_addr); -__DLL__ herr_t H5AC_set(H5F_t *f, const H5AC_class_t *type, - const haddr_t *addr, void *thing); + haddr_t old_addr, haddr_t new_addr); +__DLL__ herr_t H5AC_set(H5F_t *f, const H5AC_class_t *type, haddr_t addr, + void *thing); __DLL__ herr_t H5AC_debug(H5F_t *f); -#define H5AC_find(F,TYPE,ADDR_P,UDATA1,UDATA2) \ - (((F)->shared->cache->slot[H5AC_HASH(F,ADDR_P)].type==(TYPE) && \ - H5F_addr_eq (&((F)->shared->cache->slot[H5AC_HASH(F,ADDR_P)].addr), \ - ADDR_P)) ? \ +#define H5AC_find(F,TYPE,ADDR,UDATA1,UDATA2) \ + (((F)->shared->cache->slot[H5AC_HASH(F,ADDR)].type==(TYPE) && \ + (F)->shared->cache->slot[H5AC_HASH(F,ADDR)].addr==ADDR) ? \ ((F)->shared->cache->diagnostics[(TYPE)->id].nhits++, \ - (F)->shared->cache->slot[H5AC_HASH(F,ADDR_P)].thing) : \ - H5AC_find_f (F, TYPE, ADDR_P, UDATA1, UDATA2)) + (F)->shared->cache->slot[H5AC_HASH(F,ADDR)].thing) : \ + H5AC_find_f(F, TYPE, ADDR, UDATA1, UDATA2)) #endif /* !_H5ACprivate_H */ @@ -100,7 +100,7 @@ #define BOUND(MIN,X,MAX) ((X)<(MIN)?(MIN):((X)>(MAX)?(MAX):(X))) /* PRIVATE PROTOTYPES */ -static H5B_ins_t H5B_insert_helper(H5F_t *f, const haddr_t *addr, +static H5B_ins_t H5B_insert_helper(H5F_t *f, haddr_t addr, const H5B_class_t *type, const double split_ratios[], uint8_t *lt_key, @@ -110,31 +110,28 @@ static H5B_ins_t H5B_insert_helper(H5F_t *f, const haddr_t *addr, hbool_t *rt_key_changed, haddr_t *retval); static herr_t H5B_insert_child(H5F_t *f, const H5B_class_t *type, - H5B_t *bt, intn idx, - const haddr_t *child, + H5B_t *bt, intn idx, haddr_t child, H5B_ins_t anchor, void *md_key); -static herr_t H5B_flush(H5F_t *f, hbool_t destroy, - const haddr_t *addr, H5B_t *b); -static H5B_t *H5B_load(H5F_t *f, const haddr_t *addr, - const void *_type, void *udata); +static herr_t H5B_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5B_t *b); +static H5B_t *H5B_load(H5F_t *f, haddr_t addr, const void *_type, void *udata); static herr_t H5B_decode_key(H5F_t *f, H5B_t *bt, intn idx); static herr_t H5B_decode_keys(H5F_t *f, H5B_t *bt, intn idx); static size_t H5B_nodesize(H5F_t *f, const H5B_class_t *type, size_t *total_nkey_size, size_t sizeof_rkey); -static herr_t H5B_split(H5F_t *f, const H5B_class_t *type, - H5B_t *old_bt, const haddr_t *old_addr, intn idx, +static herr_t H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, + haddr_t old_addr, intn idx, const double split_ratios[], void *udata, haddr_t *new_addr/*out*/); #ifdef H5B_DEBUG -static herr_t H5B_assert(H5F_t *f, const haddr_t *addr, - const H5B_class_t *type, void *udata); +static herr_t H5B_assert(H5F_t *f, haddr_t addr, const H5B_class_t *type, + void *udata); #endif /* H5B inherits cache-like properties from H5AC */ static const H5AC_class_t H5AC_BT[1] = {{ H5AC_BT_ID, - (void *(*)(H5F_t*, const haddr_t*, const void*, void*))H5B_load, - (herr_t (*)(H5F_t*, hbool_t, const haddr_t*, void*))H5B_flush, + (void *(*)(H5F_t*, haddr_t, const void*, void*))H5B_load, + (herr_t (*)(H5F_t*, hbool_t, haddr_t, void*))H5B_flush, }}; /* Interface initialization? */ @@ -149,20 +146,25 @@ static intn interface_initialize_g = 0; * passed as an argument to the sizeof_rkey() method for the * B-tree. * - * Return: Non-negative on success (address of new node is returned - * through the RETVAL argument.) /Negative on failure + * Return: Success: Non-negative, and the address of new node is + * returned through the ADDR_P argument. + * + * Failure: Negative * * Programmer: Robb Matzke * matzke@llnl.gov * Jun 23 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * Changed the name of the ADDR argument to ADDR_P to make it + * obvious that the address is passed by reference unlike most + * other functions that take addresses. *------------------------------------------------------------------------- */ herr_t H5B_create(H5F_t *f, const H5B_class_t *type, void *udata, - haddr_t *addr/*out*/) + haddr_t *addr_p/*out*/) { H5B_t *bt = NULL; size_t size, sizeof_rkey; @@ -178,15 +180,15 @@ H5B_create(H5F_t *f, const H5B_class_t *type, void *udata, */ assert(f); assert(type); - assert(addr); + assert(addr_p); /* * Allocate file and memory data structures. */ sizeof_rkey = (type->get_sizeof_rkey) (f, udata); size = H5B_nodesize(f, type, &total_native_keysize, sizeof_rkey); - if (H5MF_alloc(f, H5MF_META, (hsize_t)size, addr/*out*/) < 0) { - H5F_addr_undef (addr); + if (H5MF_alloc(f, H5MF_META, (hsize_t)size, addr_p/*out*/) < 0) { + H5F_addr_undef(addr_p); HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "file allocation failed for B-tree root node"); } @@ -236,18 +238,18 @@ H5B_create(H5F_t *f, const H5B_class_t *type, void *udata, /* * Cache the new B-tree node. */ - if (H5AC_set(f, H5AC_BT, addr, bt) < 0) { + if (H5AC_set(f, H5AC_BT, *addr_p, bt) < 0) { HRETURN_ERROR(H5E_BTREE, H5E_CANTINIT, FAIL, "can't add B-tree root node to cache"); } #ifdef H5B_DEBUG - H5B_assert(f, addr, type, udata); + H5B_assert(f, *addr_p, type, udata); #endif ret_value = SUCCEED; done: if (ret_value<0) { - H5MF_xfree (f, addr, (hsize_t)size); + H5MF_xfree (f, *addr_p, (hsize_t)size); if (bt) { H5MM_xfree (bt->page); H5MM_xfree (bt->native); @@ -275,11 +277,12 @@ H5B_create(H5F_t *f, const H5B_class_t *type, void *udata, * Jun 23 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static H5B_t * -H5B_load(H5F_t *f, const haddr_t *addr, const void *_type, void *udata) +H5B_load(H5F_t *f, haddr_t addr, const void *_type, void *udata) { const H5B_class_t *type = (const H5B_class_t *) _type; size_t size, total_nkey_size; @@ -292,7 +295,7 @@ H5B_load(H5F_t *f, const haddr_t *addr, const void *_type, void *udata) /* Check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(type); assert(type->get_sizeof_rkey); @@ -383,12 +386,15 @@ H5B_load(H5F_t *f, const haddr_t *addr, const void *_type, void *udata) * Jun 23 1997 * * Modifications: - * rky 980828 Only p0 writes metadata to disk. + * rky 980828 + * Only p0 writes metadata to disk. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t -H5B_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5B_t *bt) +H5B_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5B_t *bt) { intn i; size_t size = 0; @@ -400,7 +406,7 @@ H5B_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5B_t *bt) * Check arguments. */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(bt); assert(bt->type); assert(bt->type->encode); @@ -421,8 +427,8 @@ H5B_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5B_t *bt) UINT16ENCODE(p, bt->nchildren); /* sibling pointers */ - H5F_addr_encode(f, &p, &(bt->left)); - H5F_addr_encode(f, &p, &(bt->right)); + H5F_addr_encode(f, &p, bt->left); + H5F_addr_encode(f, &p, bt->right); /* child keys and pointers */ for (i=0; i<=bt->nchildren; i++) { @@ -443,7 +449,7 @@ H5B_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5B_t *bt) /* encode the child address */ if (i < bt->ndirty) { - H5F_addr_encode(f, &p, &(bt->child[i])); + H5F_addr_encode(f, &p, bt->child[i]); } else { p += H5F_SIZEOF_ADDR(f); } @@ -498,11 +504,12 @@ H5B_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5B_t *bt) * Jun 23 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5B_find(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, void *udata) +H5B_find(H5F_t *f, const H5B_class_t *type, haddr_t addr, void *udata) { H5B_t *bt = NULL; intn idx = -1, lt = 0, rt, cmp = 1; @@ -518,7 +525,7 @@ H5B_find(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, void *udata) assert(type->decode); assert(type->cmp3); assert(type->found); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); /* * Perform a binary search to locate the child which contains @@ -554,12 +561,12 @@ H5B_find(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, void *udata) */ assert(idx >= 0 && idx < bt->nchildren); if (bt->level > 0) { - if ((ret_value = H5B_find(f, type, bt->child + idx, udata)) < 0) { + if ((ret_value = H5B_find(f, type, bt->child[idx], udata)) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_NOTFOUND, FAIL, "key not found in subtree"); } } else { - ret_value = (type->found) (f, bt->child + idx, bt->key[idx].nkey, + ret_value = (type->found) (f, bt->child[idx], bt->key[idx].nkey, udata, bt->key[idx+1].nkey); if (ret_value < 0) { HGOTO_ERROR(H5E_BTREE, H5E_NOTFOUND, FAIL, @@ -596,13 +603,15 @@ H5B_find(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, void *udata) * Jul 3 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The OLD_ADDR argument is passed by value. The NEW_ADDR + * argument has been renamed to NEW_ADDR_P *------------------------------------------------------------------------- */ static herr_t -H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, - const haddr_t *old_addr, intn idx, const double split_ratios[], - void *udata, haddr_t *new_addr/*out*/) +H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, haddr_t old_addr, + intn idx, const double split_ratios[], void *udata, + haddr_t *new_addr_p/*out*/) { H5B_t *new_bt = NULL, *tmp_bt = NULL; herr_t ret_value = FAIL; @@ -616,7 +625,7 @@ H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, */ assert(f); assert(type); - assert(old_addr && H5F_addr_defined(old_addr)); + assert(H5F_addr_defined(old_addr)); /* * Initialize variables. @@ -628,12 +637,12 @@ H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, #ifdef H5B_DEBUG if (H5DEBUG(B)) { const char *side; - if (!H5F_addr_defined(&(old_bt->left)) && - !H5F_addr_defined(&(old_bt->right))) { + if (!H5F_addr_defined(old_bt->left) && + !H5F_addr_defined(old_bt->right)) { side = "ONLY"; - } else if (!H5F_addr_defined(&(old_bt->right))) { + } else if (!H5F_addr_defined(old_bt->right)) { side = "RIGHT"; - } else if (!H5F_addr_defined(&(old_bt->left))) { + } else if (!H5F_addr_defined(old_bt->left)) { side = "LEFT"; } else { side = "MIDDLE"; @@ -647,9 +656,9 @@ H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, * Decide how to split the children of the old node among the old node * and the new node. */ - if (!H5F_addr_defined(&(old_bt->right))) { + if (!H5F_addr_defined(old_bt->right)) { nleft = 2 * k * split_ratios[2]; /*right*/ - } else if (!H5F_addr_defined(&(old_bt->left))) { + } else if (!H5F_addr_defined(old_bt->left)) { nleft = 2 * k * split_ratios[0]; /*left*/ } else { nleft = 2 * k * split_ratios[1]; /*middle*/ @@ -675,11 +684,11 @@ H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, /* * Create the new B-tree node. */ - if (H5B_create(f, type, udata, new_addr /*out */ ) < 0) { + if (H5B_create(f, type, udata, new_addr_p/*out*/) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINIT, FAIL, "unable to create B-tree"); } - if (NULL == (new_bt = H5AC_protect(f, H5AC_BT, new_addr, type, udata))) { + if (NULL==(new_bt=H5AC_protect(f, H5AC_BT, *new_addr_p, type, udata))) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, FAIL, "unable to protect B-tree"); } @@ -718,25 +727,25 @@ H5B_split(H5F_t *f, const H5B_class_t *type, H5B_t *old_bt, /* * Update sibling pointers. */ - new_bt->left = *old_addr; + new_bt->left = old_addr; new_bt->right = old_bt->right; - if (H5F_addr_defined(&(old_bt->right))) { - if (NULL == (tmp_bt = H5AC_find(f, H5AC_BT, &(old_bt->right), type, + if (H5F_addr_defined(old_bt->right)) { + if (NULL == (tmp_bt = H5AC_find(f, H5AC_BT, old_bt->right, type, udata))) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, FAIL, "unable to load right sibling"); } tmp_bt->dirty = TRUE; - tmp_bt->left = *new_addr; + tmp_bt->left = *new_addr_p; } - old_bt->right = *new_addr; + old_bt->right = *new_addr_p; HGOTO_DONE(SUCCEED); done: { - if (new_bt && H5AC_unprotect(f, H5AC_BT, new_addr, new_bt) < 0) { + if (new_bt && H5AC_unprotect(f, H5AC_BT, *new_addr_p, new_bt) < 0) { HRETURN_ERROR(H5E_BTREE, H5E_PROTECT, FAIL, "unable to release B-tree node"); } @@ -822,7 +831,6 @@ H5B_decode_keys(H5F_t *f, H5B_t *bt, intn idx) * Jun 23 1997 * * Modifications: - * * Robb Matzke, 28 Sep 1998 * The optional SPLIT_RATIOS[] indicates what percent of the child * pointers should go in the left node when a node splits. There are @@ -833,10 +841,12 @@ H5B_decode_keys(H5F_t *f, H5B_t *bt, intn idx) * When a node is an only node at its level then we use the right-most * rule. If SPLIT_RATIOS is null then default values are used. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5B_insert(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, +H5B_insert(H5F_t *f, const H5B_class_t *type, haddr_t addr, const double split_ratios[], void *udata) { /* @@ -864,7 +874,7 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, assert(f); assert(type); assert(type->sizeof_nkey <= sizeof _lt_key); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); if ((my_ins = H5B_insert_helper(f, addr, type, split_ratios, lt_key, <_key_changed, md_key, udata, rt_key, @@ -891,7 +901,7 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, } /* the new node */ - if (NULL == (bt = H5AC_find(f, H5AC_BT, &child, type, udata))) { + if (NULL == (bt = H5AC_find(f, H5AC_BT, child, type, udata))) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, FAIL, "unable to load new node"); } @@ -926,17 +936,17 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, HGOTO_ERROR(H5E_BTREE, H5E_READERROR, FAIL, "unable to read B-tree root node"); } - if (H5F_block_write(f, &old_root, (hsize_t)size, &H5F_xfer_dflt, buf)<0) { + if (H5F_block_write(f, old_root, (hsize_t)size, &H5F_xfer_dflt, buf)<0) { HGOTO_ERROR(H5E_BTREE, H5E_WRITEERROR, FAIL, "unable to move B-tree root node"); } - if (H5AC_rename(f, H5AC_BT, addr, &old_root) < 0) { + if (H5AC_rename(f, H5AC_BT, addr, old_root) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTSPLIT, FAIL, "unable to move B-tree root node"); } /* update the new child's left pointer */ - if (NULL == (bt = H5AC_find(f, H5AC_BT, &child, type, udata))) { + if (NULL == (bt = H5AC_find(f, H5AC_BT, child, type, udata))) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, FAIL, "unable to load new child"); } @@ -1002,20 +1012,19 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, * Jul 8 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The CHILD argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5B_insert_child(H5F_t *f, const H5B_class_t *type, H5B_t *bt, - intn idx, const haddr_t *child, H5B_ins_t anchor, - void *md_key) + intn idx, haddr_t child, H5B_ins_t anchor, void *md_key) { size_t recsize; intn i; FUNC_ENTER(H5B_insert_child, FAIL); assert(bt); - assert(child); assert(bt->nchildren<2*H5B_K(f, type)); bt->dirty = TRUE; @@ -1078,7 +1087,7 @@ H5B_insert_child(H5F_t *f, const H5B_class_t *type, H5B_t *bt, bt->child + idx, (bt->nchildren - idx) * sizeof(haddr_t)); - bt->child[idx] = *child; + bt->child[idx] = child; bt->nchildren += 1; bt->ndirty = bt->nchildren; @@ -1102,7 +1111,7 @@ H5B_insert_child(H5F_t *f, const H5B_class_t *type, H5B_t *bt, * * Return: Success: A B-tree operation. The address of the new * node, if the node splits, is returned through - * the NEW_NODE argument. The new node is always + * the NEW_NODE_P argument. The new node is always * to the right of the previous node. This * function is called recursively and the return * value influences the behavior of the caller. @@ -1126,14 +1135,17 @@ H5B_insert_child(H5F_t *f, const H5B_class_t *type, H5B_t *bt, * When a node is an only node at its level then we use the right-most * rule. If SPLIT_RATIOS is null then default values are used. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. The NEW_NODE argument is + * renamed NEW_NODE_P *------------------------------------------------------------------------- */ static H5B_ins_t -H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, +H5B_insert_helper(H5F_t *f, haddr_t addr, const H5B_class_t *type, const double split_ratios[], uint8_t *lt_key, hbool_t *lt_key_changed, uint8_t *md_key, void *udata, uint8_t *rt_key, hbool_t *rt_key_changed, - haddr_t *new_node/*out*/) + haddr_t *new_node_p/*out*/) { H5B_t *bt = NULL, *twin = NULL, *tmp_bt = NULL; intn lt = 0, idx = -1, rt, cmp = -1; @@ -1147,7 +1159,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * Check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(type); assert(type->decode); assert(type->cmp3); @@ -1156,7 +1168,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, assert(lt_key_changed); assert(rt_key); assert(rt_key_changed); - assert(new_node); + assert(new_node_p); *lt_key_changed = FALSE; *rt_key_changed = FALSE; @@ -1194,8 +1206,8 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, assert(0 == bt->level); bt->key[0].nkey = bt->native; bt->key[1].nkey = bt->native + type->sizeof_nkey; - if ((type->new_node) (f, H5B_INS_FIRST, bt->key[0].nkey, udata, - bt->key[1].nkey, bt->child + 0/*out*/) < 0) { + if ((type->new_node)(f, H5B_INS_FIRST, bt->key[0].nkey, udata, + bt->key[1].nkey, bt->child + 0/*out*/) < 0) { bt->key[0].nkey = bt->key[1].nkey = NULL; HGOTO_ERROR(H5E_BTREE, H5E_CANTINIT, H5B_INS_ERROR, "unable to create leaf node"); @@ -1208,10 +1220,10 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, idx = 0; if (type->follow_min) { - if ((my_ins = (type->insert) (f, bt->child+idx, bt->key[idx].nkey, - lt_key_changed, md_key, udata, - bt->key[idx+1].nkey, rt_key_changed, - &child_addr/*out*/)) < 0) { + if ((my_ins = (type->insert)(f, bt->child[idx], bt->key[idx].nkey, + lt_key_changed, md_key, udata, + bt->key[idx+1].nkey, rt_key_changed, + &child_addr/*out*/)) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINSERT, H5B_INS_ERROR, "unable to insert first leaf node"); } @@ -1229,7 +1241,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, HGOTO_ERROR(H5E_BTREE, H5E_CANTDECODE, H5B_INS_ERROR, "unable to decode key"); } - if ((my_ins = H5B_insert_helper(f, bt->child+idx, type, split_ratios, + if ((my_ins = H5B_insert_helper(f, bt->child[idx], type, split_ratios, bt->key[idx].nkey, lt_key_changed, md_key, udata, bt->key[idx+1].nkey, rt_key_changed, @@ -1248,10 +1260,10 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, HGOTO_ERROR(H5E_BTREE, H5E_CANTDECODE, H5B_INS_ERROR, "unable to decode key"); } - if ((my_ins = (type->insert) (f, bt->child+idx, bt->key[idx].nkey, - lt_key_changed, md_key, udata, - bt->key[idx+1].nkey, rt_key_changed, - &child_addr/*out*/)) < 0) { + if ((my_ins = (type->insert)(f, bt->child[idx], bt->key[idx].nkey, + lt_key_changed, md_key, udata, + bt->key[idx+1].nkey, rt_key_changed, + &child_addr/*out*/)) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINSERT, H5B_INS_ERROR, "can't insert minimum leaf node"); } @@ -1268,8 +1280,8 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, } my_ins = H5B_INS_LEFT; HDmemcpy(md_key, bt->key[idx].nkey, type->sizeof_nkey); - if ((type->new_node) (f, H5B_INS_LEFT, bt->key[idx].nkey, udata, - md_key, &child_addr/*out*/) < 0) { + if ((type->new_node)(f, H5B_INS_LEFT, bt->key[idx].nkey, udata, + md_key, &child_addr/*out*/) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINSERT, H5B_INS_ERROR, "can't insert minimum leaf node"); } @@ -1285,7 +1297,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, HGOTO_ERROR(H5E_BTREE, H5E_CANTDECODE, H5B_INS_ERROR, "unable to decode key"); } - if ((my_ins = H5B_insert_helper(f, bt->child+idx, type, split_ratios, + if ((my_ins = H5B_insert_helper(f, bt->child[idx], type, split_ratios, bt->key[idx].nkey, lt_key_changed, md_key, udata, bt->key[idx+1].nkey, rt_key_changed, @@ -1304,10 +1316,10 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, HGOTO_ERROR(H5E_BTREE, H5E_CANTDECODE, H5B_INS_ERROR, "unable to decode key"); } - if ((my_ins = (type->insert) (f, bt->child+idx, bt->key[idx].nkey, - lt_key_changed, md_key, udata, - bt->key[idx+1].nkey, rt_key_changed, - &child_addr/*out*/)) < 0) { + if ((my_ins = (type->insert)(f, bt->child[idx], bt->key[idx].nkey, + lt_key_changed, md_key, udata, + bt->key[idx+1].nkey, rt_key_changed, + &child_addr/*out*/)) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINSERT, H5B_INS_ERROR, "can't insert maximum leaf node"); } @@ -1324,8 +1336,8 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, } my_ins = H5B_INS_RIGHT; HDmemcpy(md_key, bt->key[idx+1].nkey, type->sizeof_nkey); - if ((type->new_node) (f, H5B_INS_RIGHT, md_key, udata, - bt->key[idx+1].nkey, &child_addr/*out*/) < 0) { + if ((type->new_node)(f, H5B_INS_RIGHT, md_key, udata, + bt->key[idx+1].nkey, &child_addr/*out*/) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINSERT, H5B_INS_ERROR, "can't insert maximum leaf node"); } @@ -1344,7 +1356,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * Follow a branch out of this node to another subtree. */ assert(idx >= 0 && idx < bt->nchildren); - if ((my_ins = H5B_insert_helper(f, bt->child+idx, type, split_ratios, + if ((my_ins = H5B_insert_helper(f, bt->child[idx], type, split_ratios, bt->key[idx].nkey, lt_key_changed, md_key, udata, bt->key[idx+1].nkey, rt_key_changed, @@ -1357,7 +1369,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * Follow a branch out of this node to a leaf node of some other type. */ assert(idx >= 0 && idx < bt->nchildren); - if ((my_ins = (type->insert) (f, bt->child+idx, bt->key[idx].nkey, + if ((my_ins = (type->insert)(f, bt->child[idx], bt->key[idx].nkey, lt_key_changed, md_key, udata, bt->key[idx+1].nkey, rt_key_changed, &child_addr/*out*/)) < 0) { @@ -1403,11 +1415,11 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, */ if (bt->nchildren == 2 * H5B_K(f, type)) { if (H5B_split(f, type, bt, addr, idx, split_ratios, udata, - new_node/*out*/)<0) { + new_node_p/*out*/)<0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTSPLIT, H5B_INS_ERROR, "unable to split node"); } - if (NULL == (twin = H5AC_protect(f, H5AC_BT, new_node, type, + if (NULL == (twin = H5AC_protect(f, H5AC_BT, *new_node_p, type, udata))) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, H5B_INS_ERROR, "unable to load node"); @@ -1423,7 +1435,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, } /* Insert the child */ - if (H5B_insert_child(f, type, tmp_bt, idx, &child_addr, my_ins, + if (H5B_insert_child(f, type, tmp_bt, idx, child_addr, my_ins, md_key) < 0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINSERT, H5B_INS_ERROR, "can't insert child"); @@ -1461,7 +1473,7 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, done: { herr_t e1 = (bt && H5AC_unprotect(f, H5AC_BT, addr, bt) < 0); - herr_t e2 = (twin && H5AC_unprotect(f, H5AC_BT, new_node, twin) < 0); + herr_t e2 = (twin && H5AC_unprotect(f, H5AC_BT, *new_node_p, twin)<0); if (e1 || e2) { /*use vars to prevent short-circuit of side effects */ HRETURN_ERROR(H5E_BTREE, H5E_PROTECT, H5B_INS_ERROR, "unable to release node(s)"); @@ -1487,15 +1499,16 @@ H5B_insert_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * Robb Matzke, 1999-04-21 * The key values are passed to the function which is called. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5B_iterate (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, - void *udata) +H5B_iterate (H5F_t *f, const H5B_class_t *type, haddr_t addr, void *udata) { H5B_t *bt = NULL; haddr_t next_addr; - const haddr_t *cur_addr = NULL; + haddr_t cur_addr = H5F_ADDR_UNDEF; haddr_t *child = NULL; uint8_t *key = NULL; intn i, nchildren; @@ -1509,7 +1522,7 @@ H5B_iterate (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, assert(f); assert(type); assert(type->list); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(udata); if (NULL == (bt=H5AC_find(f, H5AC_BT, addr, type, udata))) { @@ -1518,7 +1531,7 @@ H5B_iterate (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, } if (bt->level > 0) { /* Keep following the left-most child until we reach a leaf node. */ - if ((ret_value=H5B_iterate(f, type, bt->child+0, udata))<0) { + if ((ret_value=H5B_iterate(f, type, bt->child[0], udata))<0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLIST, FAIL, "unable to list B-tree node"); } @@ -1534,7 +1547,7 @@ H5B_iterate (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, } for (cur_addr=addr, ret_value=0; H5F_addr_defined(cur_addr); - cur_addr=&next_addr) { + cur_addr=next_addr) { /* * Save all the child addresses and native keys since we can't @@ -1562,7 +1575,7 @@ H5B_iterate (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, */ for (i=0, ret_value=0; i<nchildren && !ret_value; i++) { ret_value = (type->list)(f, key+i*type->sizeof_nkey, - child+i, key+(i+1)*type->sizeof_nkey, + child[i], key+(i+1)*type->sizeof_nkey, udata); if (ret_value<0) { HGOTO_ERROR(H5E_BTREE, H5E_CANTINIT, FAIL, @@ -1602,11 +1615,12 @@ H5B_iterate (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, * Wednesday, September 16, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static H5B_ins_t -H5B_remove_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, +H5B_remove_helper(H5F_t *f, haddr_t addr, const H5B_class_t *type, intn level, uint8_t *lt_key/*out*/, hbool_t *lt_key_changed/*out*/, void *udata, uint8_t *rt_key/*out*/, hbool_t *rt_key_changed/*out*/) @@ -1618,7 +1632,7 @@ H5B_remove_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, FUNC_ENTER(H5B_remove_helper, H5B_INS_ERROR); assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(type); assert(type->decode); assert(type->cmp3); @@ -1662,7 +1676,7 @@ H5B_remove_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, if (bt->level>0) { /* We're at an internal node -- call recursively */ if ((ret_value=H5B_remove_helper(f, - bt->child+idx, + bt->child[idx], type, level+1, bt->key[idx].nkey/*out*/, @@ -1680,7 +1694,7 @@ H5B_remove_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * object and let it decide how to progress. */ if ((ret_value=(type->remove)(f, - bt->child+idx, + bt->child[idx], bt->key[idx].nkey, lt_key_changed, udata, @@ -1742,8 +1756,8 @@ H5B_remove_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, bt->nchildren = 0; bt->ndirty = 0; if (level>0) { - if (H5F_addr_defined(&(bt->left))) { - if (NULL==(sibling=H5AC_find(f, H5AC_BT, &(bt->left), type, + if (H5F_addr_defined(bt->left)) { + if (NULL==(sibling=H5AC_find(f, H5AC_BT, bt->left, type, udata))) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, H5B_INS_ERROR, "unable to unlink node from tree"); @@ -1751,8 +1765,8 @@ H5B_remove_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, sibling->right = bt->right; sibling->dirty = TRUE; } - if (H5F_addr_defined(&(bt->right))) { - if (NULL==(sibling=H5AC_find(f, H5AC_BT, &(bt->right), type, + if (H5F_addr_defined(bt->right)) { + if (NULL==(sibling=H5AC_find(f, H5AC_BT, bt->right, type, udata))) { HGOTO_ERROR(H5E_BTREE, H5E_CANTLOAD, H5B_INS_ERROR, "unable to unlink node from tree"); @@ -1883,12 +1897,12 @@ H5B_remove_helper(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * Wednesday, September 16, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5B_remove(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, - void *udata) +H5B_remove(H5F_t *f, const H5B_class_t *type, haddr_t addr, void *udata) { /* These are defined this way to satisfy alignment constraints */ uint64_t _lt_key[128], _rt_key[128]; @@ -1905,7 +1919,7 @@ H5B_remove(H5F_t *f, const H5B_class_t *type, const haddr_t *addr, assert(f); assert(type); assert(type->sizeof_nkey <= sizeof _lt_key); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); /* The actual removal */ if (H5B_remove_helper(f, addr, type, 0, lt_key, <_key_changed, @@ -2002,12 +2016,13 @@ H5B_nodesize(H5F_t *f, const H5B_class_t *type, * Aug 4 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5B_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent, - intn fwidth, const H5B_class_t *type, void *udata) +H5B_debug(H5F_t *f, haddr_t addr, FILE *stream, intn indent, intn fwidth, + const H5B_class_t *type, void *udata) { H5B_t *bt = NULL; int i; @@ -2018,7 +2033,7 @@ H5B_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); @@ -2034,46 +2049,42 @@ H5B_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent, /* * Print the values. */ - fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, - "Tree type ID:", - (int) (bt->type->id)); - fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Size of raw (disk) key:", - (unsigned long) (bt->sizeof_rkey)); - fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, - "Dirty flag:", - bt->dirty ? "True" : "False"); - fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, - "Number of initial dirty children:", - (int) (bt->ndirty)); - fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, - "Level:", - (int) (bt->level)); - - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Address of left sibling:"); - H5F_addr_print(stream, &(bt->left)); - fprintf(stream, "\n"); - - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Address of right sibling:"); - H5F_addr_print(stream, &(bt->right)); - fprintf(stream, "\n"); - - fprintf(stream, "%*s%-*s %d (%d)\n", indent, "", fwidth, - "Number of children (max):", - (int) (bt->nchildren), - (int) (2 * H5B_K(f, type))); + HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Tree type ID:", + (int) (bt->type->id)); + HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Size of raw (disk) key:", + (unsigned long) (bt->sizeof_rkey)); + HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Dirty flag:", + bt->dirty ? "True" : "False"); + HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Number of initial dirty children:", + (int) (bt->ndirty)); + HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Level:", + (int) (bt->level)); + + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "Address of left sibling:", + bt->left); + + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "Address of right sibling:", + bt->right); + + HDfprintf(stream, "%*s%-*s %d (%d)\n", indent, "", fwidth, + "Number of children (max):", + (int) (bt->nchildren), + (int) (2 * H5B_K(f, type))); /* * Print the child addresses */ for (i = 0; i < bt->nchildren; i++) { - fprintf(stream, "%*sChild %d...\n", indent, "", i); - fprintf(stream, "%*s%-*s ", indent + 3, "", MAX(0, fwidth - 3), - "Address:"); - H5F_addr_print(stream, bt->child + i); - fprintf(stream, "\n"); + HDfprintf(stream, "%*sChild %d...\n", indent, "", i); + HDfprintf(stream, "%*s%-*s %a\n", indent + 3, "", MAX(0, fwidth - 3), + "Address:", bt->child[i]); H5B_decode_key(f, bt, i); if (type->debug_key) { @@ -2084,6 +2095,7 @@ H5B_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent, FUNC_LEAVE(SUCCEED); } + /*------------------------------------------------------------------------- * Function: H5B_assert @@ -2098,13 +2110,13 @@ H5B_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent, * Tuesday, November 4, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ #ifdef H5B_DEBUG static herr_t -H5B_assert(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, - void *udata) +H5B_assert(H5F_t *f, haddr_t addr, const H5B_class_t *type, void *udata) { H5B_t *bt = NULL; intn i, ncell, cmp; @@ -2131,7 +2143,7 @@ H5B_assert(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, assert(bt); cur = H5MM_calloc(sizeof(struct child_t)); assert (cur); - cur->addr = *addr; + cur->addr = addr; cur->level = bt->level; head = tail = cur; @@ -2142,21 +2154,21 @@ H5B_assert(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * test. */ for (ncell = 0; cur; ncell++) { - bt = H5AC_protect(f, H5AC_BT, &(cur->addr), type, udata); + bt = H5AC_protect(f, H5AC_BT, cur->addr, type, udata); assert(bt); /* Check node header */ assert(bt->ndirty >= 0 && bt->ndirty <= bt->nchildren); assert(bt->level == cur->level); if (cur->next && cur->next->level == bt->level) { - assert(H5F_addr_eq(&(bt->right), &(cur->next->addr))); + assert(H5F_addr_eq(bt->right, cur->next->addr)); } else { - assert(!H5F_addr_defined(&(bt->right))); + assert(!H5F_addr_defined(bt->right)); } if (prev && prev->level == bt->level) { - assert(H5F_addr_eq(&(bt->left), &(prev->addr))); + assert(H5F_addr_eq(bt->left, prev->addr)); } else { - assert(!H5F_addr_defined(&(bt->left))); + assert(!H5F_addr_defined(bt->left)); } if (cur->level > 0) { @@ -2167,7 +2179,7 @@ H5B_assert(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, * have then the tree has a cycle. */ for (tmp = head; tmp; tmp = tmp->next) { - assert(H5F_addr_ne(&(tmp->addr), bt->child + i)); + assert(H5F_addr_ne(tmp->addr, bt->child[i])); } /* Add the child node to the end of the queue */ @@ -2187,7 +2199,7 @@ H5B_assert(H5F_t *f, const haddr_t *addr, const H5B_class_t *type, } } /* Release node */ - status = H5AC_unprotect(f, H5AC_BT, &(cur->addr), bt); + status = H5AC_unprotect(f, H5AC_BT, cur->addr, bt); assert(status >= 0); /* Advance current location in queue */ diff --git a/src/H5Bprivate.h b/src/H5Bprivate.h index 8dcbaea..8ba0321 100644 --- a/src/H5Bprivate.h +++ b/src/H5Bprivate.h @@ -70,26 +70,25 @@ typedef struct H5B_class_t { H5B_subid_t id; /*id as found in file*/ size_t sizeof_nkey; /*size of native (memory) key*/ size_t (*get_sizeof_rkey)(H5F_t*, const void*); /*raw key size */ - herr_t (*new_node) (H5F_t*, H5B_ins_t, void*, void*, void*, haddr_t*); + herr_t (*new_node)(H5F_t*, H5B_ins_t, void*, void*, void*, haddr_t*); intn (*cmp2)(H5F_t*, void*, void*, void*); /*compare 2 keys */ intn (*cmp3)(H5F_t*, void*, void*, void*); /*compare 3 keys */ - herr_t (*found)(H5F_t*, const haddr_t*, const void*, void*, - const void*); + herr_t (*found)(H5F_t*, haddr_t, const void*, void*, const void*); /* insert new data */ - H5B_ins_t (*insert)(H5F_t*, const haddr_t*, void*, hbool_t*, - void*, void*, void*, hbool_t*, haddr_t*); + H5B_ins_t (*insert)(H5F_t*, haddr_t, void*, hbool_t*, void*, void*, + void*, hbool_t*, haddr_t*); /* min insert uses min leaf, not new(), similarily for max insert */ hbool_t follow_min; hbool_t follow_max; /* remove existing data */ - H5B_ins_t (*remove)(H5F_t*, const haddr_t*, void*, hbool_t*, - void*, void*, hbool_t*); + H5B_ins_t (*remove)(H5F_t*, haddr_t, void*, hbool_t*, void*, void*, + hbool_t*); /* iterate through the leaf nodes */ - herr_t (*list)(H5F_t*, void*, const haddr_t*, void*, void*); + herr_t (*list)(H5F_t*, void*, haddr_t, void*, void*); /* encode, decode, debug key values */ herr_t (*decode)(H5F_t*, struct H5B_t*, uint8_t*, void*); @@ -124,18 +123,17 @@ typedef struct H5B_t { /* * Library prototypes. */ -__DLL__ herr_t H5B_debug (H5F_t *f, const haddr_t *addr, FILE * stream, +__DLL__ herr_t H5B_debug (H5F_t *f, haddr_t addr, FILE * stream, intn indent, intn fwidth, const H5B_class_t *type, void *udata); __DLL__ herr_t H5B_create (H5F_t *f, const H5B_class_t *type, void *udata, - haddr_t *); -__DLL__ herr_t H5B_find (H5F_t *f, const H5B_class_t *type, - const haddr_t *addr, void *udata); -__DLL__ herr_t H5B_insert (H5F_t *f, const H5B_class_t *type, - const haddr_t *addr, const double split_ratios[], - void *udata); -__DLL__ herr_t H5B_remove(H5F_t *f, const H5B_class_t *type, - const haddr_t *addr, void *udata); -__DLL__ herr_t H5B_iterate (H5F_t *f, const H5B_class_t *type, - const haddr_t *addr, void *udata); + haddr_t *addr_p/*out*/); +__DLL__ herr_t H5B_find (H5F_t *f, const H5B_class_t *type, haddr_t addr, + void *udata); +__DLL__ herr_t H5B_insert (H5F_t *f, const H5B_class_t *type, haddr_t addr, + const double split_ratios[], void *udata); +__DLL__ herr_t H5B_remove(H5F_t *f, const H5B_class_t *type, haddr_t addr, + void *udata); +__DLL__ herr_t H5B_iterate (H5F_t *f, const H5B_class_t *type, haddr_t addr, + void *udata); #endif @@ -1055,8 +1055,8 @@ H5D_create(H5G_entry_t *loc, const char *name, const H5T_t *type, for (i=0; i<efl->nused; i++) { heap_size += H5HL_ALIGN (HDstrlen (efl->slot[i].name)+1); } - if (H5HL_create (f, heap_size, &(efl->heap_addr))<0 || - (size_t)(-1)==H5HL_insert (f, &(efl->heap_addr), 1, "")) { + if (H5HL_create (f, heap_size, &(efl->heap_addr)/*out*/)<0 || + (size_t)(-1)==H5HL_insert(f, efl->heap_addr, 1, "")) { HGOTO_ERROR (H5E_DATASET, H5E_CANTINIT, NULL, "unable to create external file list name heap"); } @@ -1088,7 +1088,7 @@ H5D_create(H5G_entry_t *loc, const char *name, const H5T_t *type, H5P_close (H5P_DATASET_CREATE, new_dset->create_parms); new_dset->create_parms = NULL; } - if (H5F_addr_defined(&(new_dset->ent.header))) { + if (H5F_addr_defined(new_dset->ent.header)) { H5O_close(&(new_dset->ent)); } new_dset->ent.file = NULL; @@ -1314,7 +1314,7 @@ H5D_open_oid(H5G_entry_t *ent) /* Get the external file list message, which might not exist */ if (NULL==H5O_read (&(dataset->ent), H5O_EFL, 0, &(dataset->create_parms->efl)) && - !H5F_addr_defined (&(dataset->layout.addr))) { + !H5F_addr_defined (dataset->layout.addr)) { HGOTO_ERROR (H5E_DATASET, H5E_CANTINIT, NULL, "storage address is undefined an no external file list"); } @@ -1338,7 +1338,7 @@ H5D_open_oid(H5G_entry_t *ent) done: if (space) H5S_close(space); if (ret_value==NULL && dataset) { - if (H5F_addr_defined(&(dataset->ent.header))) { + if (H5F_addr_defined(dataset->ent.header)) { H5O_close(&(dataset->ent)); } if (dataset->type) { @@ -2453,12 +2453,12 @@ H5D_init_storage(H5D_t *dset, const H5S_t *space) if (dset->create_parms->efl.nused) { if (H5O_efl_write(dset->ent.file, &(dset->create_parms->efl), - &addr, size, buf)<0) { + addr, size, buf)<0) { HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset"); } } else { - if (H5F_block_write(dset->ent.file, &addr, size, + if (H5F_block_write(dset->ent.file, addr, size, &H5F_xfer_dflt, buf)<0) { HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset"); @@ -2578,7 +2578,7 @@ H5D_get_storage_size(H5D_t *dset) if (H5D_CHUNKED==dset->layout.type) { size = H5F_istore_allocated(dset->ent.file, dset->layout.ndims, - &(dset->layout.addr)); + dset->layout.addr); } else { for (i=0, size=1; i<dset->layout.ndims; i++) { size *= dset->layout.dim[i]; @@ -2719,7 +2719,8 @@ H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf) } /* Call H5Diterate with args, etc. */ - ret_value=H5Diterate(buf,type_id,space_id,H5T_vlen_reclaim,(void *)xfer_parms); + ret_value=H5Diterate(buf,type_id,space_id,H5T_vlen_reclaim, + (void*)xfer_parms); FUNC_LEAVE(ret_value); } /* end H5Dvlen_reclaim() */ @@ -2759,10 +2760,10 @@ H5Ddebug(hid_t dset_id, unsigned UNUSED flags) /* Print B-tree information */ if (H5D_CHUNKED==dset->layout.type) { H5F_istore_dump_btree(dset->ent.file, stdout, dset->layout.ndims, - &(dset->layout.addr)); + dset->layout.addr); } else if (H5D_CONTIGUOUS==dset->layout.type) { HDfprintf(stdout, " %-10s %a\n", "Address:", - &(dset->layout.addr)); + dset->layout.addr); } FUNC_LEAVE(SUCCEED); diff --git a/src/H5Distore.c b/src/H5Distore.c index 5e60943..e8bc974 100644 --- a/src/H5Distore.c +++ b/src/H5Distore.c @@ -95,31 +95,31 @@ typedef struct H5F_rdcc_ent_t { /* Private prototypes */ static size_t H5F_istore_sizeof_rkey(H5F_t *f, const void *_udata); static herr_t H5F_istore_new_node(H5F_t *f, H5B_ins_t, void *_lt_key, - void *_udata, void *_rt_key, haddr_t *); + void *_udata, void *_rt_key, + haddr_t*/*out*/); static intn H5F_istore_cmp2(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key); static intn H5F_istore_cmp3(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key); -static herr_t H5F_istore_found(H5F_t *f, const haddr_t *addr, - const void *_lt_key, void *_udata, - const void *_rt_key); -static H5B_ins_t H5F_istore_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, +static herr_t H5F_istore_found(H5F_t *f, haddr_t addr, const void *_lt_key, + void *_udata, const void *_rt_key); +static H5B_ins_t H5F_istore_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/*out*/); -static herr_t H5F_istore_iterate (H5F_t *f, void *left_key, - const haddr_t *addr, void *right_key, - void *_udata); +static herr_t H5F_istore_iterate(H5F_t *f, void *left_key, haddr_t addr, + void *right_key, void *_udata); static herr_t H5F_istore_decode_key(H5F_t *f, H5B_t *bt, uint8_t *raw, void *_key); static herr_t H5F_istore_encode_key(H5F_t *f, H5B_t *bt, uint8_t *raw, void *_key); -static herr_t H5F_istore_debug_key (FILE *stream, intn indent, intn fwidth, - const void *key, const void *udata); +static herr_t H5F_istore_debug_key(FILE *stream, intn indent, intn fwidth, + const void *key, const void *udata); #ifdef HAVE_PARALLEL -static herr_t H5F_istore_get_addr (H5F_t *f, const H5O_layout_t *layout, - const hssize_t offset[], void *_udata/*out*/); +static herr_t H5F_istore_get_addr(H5F_t *f, const H5O_layout_t *layout, + const hssize_t offset[], + void *_udata/*out*/); #endif /* @@ -463,7 +463,7 @@ H5F_istore_cmp3(H5F_t UNUSED *f, void *_lt_key, void *_udata, static herr_t H5F_istore_new_node(H5F_t *f, H5B_ins_t op, void *_lt_key, void *_udata, void *_rt_key, - haddr_t *addr/*out*/) + haddr_t *addr_p/*out*/) { H5F_istore_key_t *lt_key = (H5F_istore_key_t *) _lt_key; H5F_istore_key_t *rt_key = (H5F_istore_key_t *) _rt_key; @@ -480,18 +480,18 @@ H5F_istore_new_node(H5F_t *f, H5B_ins_t op, assert(rt_key); assert(udata); assert(udata->mesg.ndims > 0 && udata->mesg.ndims < H5O_LAYOUT_NDIMS); - assert(addr); + assert(addr_p); /* Allocate new storage */ assert (udata->key.nbytes > 0); #ifdef AKC printf("calling H5MF_alloc for new chunk\n"); #endif - if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, addr /*out */ ) < 0) { + if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, addr_p/*out*/) < 0) { HRETURN_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "couldn't allocate new file storage"); } - udata->addr = *addr; + udata->addr = *addr_p; /* * The left key describes the storage of the UDATA chunk being @@ -546,13 +546,13 @@ H5F_istore_new_node(H5F_t *f, H5B_ins_t op, * Thursday, October 9, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t -H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, - const void *_lt_key, void *_udata, - const void UNUSED *_rt_key) +H5F_istore_found(H5F_t UNUSED *f, haddr_t addr, const void *_lt_key, + void *_udata, const void UNUSED *_rt_key) { H5F_istore_ud1_t *udata = (H5F_istore_ud1_t *) _udata; const H5F_istore_key_t *lt_key = (const H5F_istore_key_t *) _lt_key; @@ -562,7 +562,7 @@ H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, /* Check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(udata); assert(lt_key); @@ -575,7 +575,7 @@ H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, } /* Initialize return values */ - udata->addr = *addr; + udata->addr = addr; udata->key.nbytes = lt_key->nbytes; udata->key.filter_mask = lt_key->filter_mask; assert (lt_key->nbytes>0); @@ -614,15 +614,17 @@ H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, * Thursday, October 9, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. The NEW_NODE argument + * is renamed NEW_NODE_P. *------------------------------------------------------------------------- */ static H5B_ins_t -H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, +H5F_istore_insert(H5F_t *f, haddr_t addr, void *_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/*out*/) + haddr_t *new_node_p/*out*/) { H5F_istore_key_t *lt_key = (H5F_istore_key_t *) _lt_key; H5F_istore_key_t *md_key = (H5F_istore_key_t *) _md_key; @@ -638,14 +640,14 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, /* check args */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(lt_key); assert(lt_key_changed); assert(md_key); assert(udata); assert(rt_key); assert(rt_key_changed); - assert(new_node); + assert(new_node_p); cmp = H5F_istore_cmp3(f, lt_key, udata, rt_key); assert(cmp <= 0); @@ -668,17 +670,17 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, printf("calling H5MF_realloc for new chunk\n"); #endif if (H5MF_realloc (f, H5MF_RAW, lt_key->nbytes, addr, - udata->key.nbytes, new_node/*out*/)<0) { + udata->key.nbytes, new_node_p/*out*/)<0) { HRETURN_ERROR (H5E_STORAGE, H5E_WRITEERROR, H5B_INS_ERROR, "unable to reallocate chunk storage"); } lt_key->nbytes = udata->key.nbytes; lt_key->filter_mask = udata->key.filter_mask; *lt_key_changed = TRUE; - udata->addr = *new_node; + udata->addr = *new_node_p; ret_value = H5B_INS_CHANGE; } else { - udata->addr = *addr; + udata->addr = addr; ret_value = H5B_INS_NOOP; } @@ -705,11 +707,11 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, #ifdef AKC printf("calling H5MF_alloc for new chunk\n"); #endif - if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, new_node/*out*/)<0) { + if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, new_node_p/*out*/)<0) { HRETURN_ERROR(H5E_IO, H5E_CANTINIT, H5B_INS_ERROR, "file allocation failed"); } - udata->addr = *new_node; + udata->addr = *new_node_p; ret_value = H5B_INS_RIGHT; } else { @@ -737,12 +739,12 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, * Wednesday, April 21, 1999 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t -H5F_istore_iterate (H5F_t UNUSED *f, void *_lt_key, - const haddr_t UNUSED *addr, +H5F_istore_iterate (H5F_t UNUSED *f, void *_lt_key, haddr_t UNUSED addr, void UNUSED *_rt_key, void *_udata) { H5F_istore_ud1_t *bt_udata = (H5F_istore_ud1_t *)_udata; @@ -889,12 +891,12 @@ H5F_istore_flush_entry (H5F_t *f, H5F_rdcc_ent_t *ent, hbool_t reset) * Create the chunk it if it doesn't exist, or reallocate the chunk if * its size changed. Then write the data into the file. */ - if (H5B_insert(f, H5B_ISTORE, &(ent->layout->addr), ent->split_ratios, + if (H5B_insert(f, H5B_ISTORE, ent->layout->addr, ent->split_ratios, &udata)<0) { HGOTO_ERROR (H5E_IO, H5E_WRITEERROR, FAIL, "unable to allocate chunk"); } - if (H5F_block_write (f, &(udata.addr), udata.key.nbytes, + if (H5F_block_write (f, udata.addr, udata.key.nbytes, &H5F_xfer_dflt, buf)<0) { HGOTO_ERROR (H5E_IO, H5E_WRITEERROR, FAIL, "unable to write raw data to file"); @@ -1238,7 +1240,7 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, if (rdcc->nslots>0) { /* We don't care about loss of precision in the following statement. */ - idx = (uintn)(layout->addr.offset); + idx = (uintn)(layout->addr); H5F_MIXUP(idx); for (i=0; i<layout->ndims; i++) { idx += offset[i]; @@ -1249,7 +1251,7 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, if (ent && layout->ndims==ent->layout->ndims && - H5F_addr_eq(&(layout->addr), &(ent->layout->addr))) { + H5F_addr_eq(layout->addr, ent->layout->addr)) { for (i=0, found=TRUE; i<ent->layout->ndims; i++) { if (offset[i]!=ent->offset[i]) { found = FALSE; @@ -1298,17 +1300,17 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, chunk_alloc = chunk_size; udata.mesg = *layout; H5F_addr_undef (&(udata.addr)); - status = H5B_find (f, H5B_ISTORE, &(layout->addr), &udata); + status = H5B_find (f, H5B_ISTORE, layout->addr, &udata); H5E_clear (); if (NULL==(chunk = H5MM_malloc (chunk_alloc))) { HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for raw data chunk"); } - if (status>=0 && H5F_addr_defined (&(udata.addr))) { + if (status>=0 && H5F_addr_defined(udata.addr)) { /* * The chunk exists on disk. */ - if (H5F_block_read (f, &(udata.addr), udata.key.nbytes, + if (H5F_block_read(f, udata.addr, udata.key.nbytes, &H5F_xfer_dflt, chunk)<0) { HGOTO_ERROR (H5E_IO, H5E_READERROR, NULL, "unable to read raw data chunk"); @@ -1356,11 +1358,11 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, #endif #if 0 HDfprintf(stderr, "\ncollision %3d %10a {", - idx, &(ent->layout->addr)); + idx, ent->layout->addr); for (i=0; i<layout->ndims; i++) { HDfprintf(stderr, "%s%Zu", i?",":"", ent->offset[i]); } - HDfprintf(stderr, "}\n %10a {", &(layout->addr)); + HDfprintf(stderr, "}\n %10a {", layout->addr); for (i=0; i<layout->ndims; i++) { HDfprintf(stderr, "%s%Zu", i?",":"", offset[i]); } @@ -1593,7 +1595,7 @@ H5F_istore_read(H5F_t *f, const H5F_xfer_t *xfer, const H5O_layout_t *layout, assert (f); assert (layout && H5D_CHUNKED==layout->type); assert (layout->ndims>0 && layout->ndims<=H5O_LAYOUT_NDIMS); - assert (H5F_addr_defined(&(layout->addr))); + assert (H5F_addr_defined(layout->addr)); assert (offset_f); assert (size); assert (buf); @@ -1764,7 +1766,7 @@ H5F_istore_write(H5F_t *f, const H5F_xfer_t *xfer, const H5O_layout_t *layout, assert(f); assert(layout && H5D_CHUNKED==layout->type); assert(layout->ndims>0 && layout->ndims<=H5O_LAYOUT_NDIMS); - assert(H5F_addr_defined(&(layout->addr))); + assert(H5F_addr_defined(layout->addr)); assert(offset_f); assert(size); assert(buf); @@ -1965,11 +1967,12 @@ H5F_istore_create(H5F_t *f, H5O_layout_t *layout /*out */ ) * Wednesday, April 21, 1999 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ hsize_t -H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr) +H5F_istore_allocated(H5F_t *f, int ndims, haddr_t addr) { H5F_istore_ud1_t udata; @@ -1998,11 +2001,12 @@ H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr) * Wednesday, April 28, 1999 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims, haddr_t *addr) +H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims, haddr_t addr) { H5F_istore_ud1_t udata; @@ -2090,11 +2094,12 @@ H5F_istore_stats (H5F_t *f, hbool_t headers) * Thursday, April 16, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_istore_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, +H5F_istore_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent, intn fwidth, int ndims) { H5F_istore_ud1_t udata; @@ -2147,9 +2152,9 @@ H5F_istore_get_addr(H5F_t *f, const H5O_layout_t *layout, } udata->mesg = *layout; H5F_addr_undef (&(udata->addr)); - status = H5B_find (f, H5B_ISTORE, &(layout->addr), udata); + status = H5B_find (f, H5B_ISTORE, layout->addr, udata); H5E_clear (); - if (status>=0 && H5F_addr_defined (&(udata->addr))) + if (status>=0 && H5F_addr_defined(udata->addr)) HRETURN(SUCCEED); FUNC_LEAVE (FAIL); @@ -2211,7 +2216,7 @@ H5F_istore_allocate (H5F_t *f, const H5O_layout_t *layout, assert(pline); assert(layout && H5D_CHUNKED==layout->type); assert(layout->ndims>0 && layout->ndims<=H5O_LAYOUT_NDIMS); - assert(H5F_addr_defined(&(layout->addr))); + assert(H5F_addr_defined(layout->addr)); /* * Setup indice to go through all chunks. (Future improvement @@ -2281,7 +2286,7 @@ H5F_istore_allocate (H5F_t *f, const H5O_layout_t *layout, } else { #ifdef AKC printf("NO need for allocation\n"); - printf("udata.addr.offset=%d\n", udata.addr.offset); + HDfprintf(stdout, "udata.addr=%a\n", udata.addr); #endif } #endif @@ -110,7 +110,7 @@ static herr_t H5F_dest(H5F_t *f); static herr_t H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate); static herr_t H5F_locate_signature(H5F_low_t *f_handle, const H5F_access_t *access_parms, - haddr_t *addr/*out*/); + haddr_t *addr_p/*out*/); static intn H5F_flush_all_cb(H5F_t *f, const void *_invalidate); @@ -216,7 +216,7 @@ H5F_init_interface(void) H5F_access_dflt.u.mpio.info = MPI_INFO_NULL; H5F_access_dflt.u.mpio.btype = MPI_DATATYPE_NULL; H5F_access_dflt.u.mpio.ftype = MPI_DATATYPE_NULL; - H5F_addr_reset( &(H5F_access_dflt.u.mpio.disp) ); + H5F_addr_reset(&(H5F_access_dflt.u.mpio.disp)); H5F_access_dflt.u.mpio.use_types = 0; H5F_access_dflt.u.mpio.old_use_types = 0; #elif (H5F_LOW_DFLT == H5F_LOW_SPLIT) @@ -544,7 +544,7 @@ H5F_compare_files(void * _obj, const void * _key) */ static herr_t H5F_locate_signature(H5F_low_t *f_handle, const H5F_access_t *access_parms, - haddr_t *addr/*out*/) + haddr_t *addr_p/*out*/) { herr_t ret_value=FAIL; haddr_t max_addr; @@ -554,9 +554,9 @@ H5F_locate_signature(H5F_low_t *f_handle, const H5F_access_t *access_parms, FUNC_ENTER(H5F_locate_signature, FAIL); H5F_low_size(f_handle, &max_addr); - H5F_addr_reset(addr); - while (H5F_addr_lt(addr, &max_addr)) { - if (H5F_low_read(f_handle, access_parms, &H5F_xfer_dflt, addr, + H5F_addr_reset(addr_p); + while (H5F_addr_lt(*addr_p, max_addr)) { + if (H5F_low_read(f_handle, access_parms, &H5F_xfer_dflt, *addr_p, H5F_SIGNATURE_LEN, buf) < 0) { HRETURN_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to read file"); } @@ -564,7 +564,7 @@ H5F_locate_signature(H5F_low_t *f_handle, const H5F_access_t *access_parms, ret_value=SUCCEED; break; } - H5F_addr_pow2(n++, addr); + H5F_addr_pow2(n++, addr_p); } FUNC_LEAVE(ret_value); @@ -619,7 +619,7 @@ H5Fis_hdf5(const char *filename) HGOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "low-level file open failure"); } - if (H5F_locate_signature(f_handle, &H5F_access_dflt, &addr) >= 0) { + if (H5F_locate_signature(f_handle, &H5F_access_dflt, &addr/*out*/)>=0) { ret_value = TRUE; } @@ -1106,12 +1106,12 @@ H5F_open(const char *name, uintn flags, /* For existing files we must read the boot block. */ if (H5F_locate_signature(f->shared->lf, f->shared->access_parms, - &(f->shared->boot_addr)) < 0) { + &(f->shared->boot_addr)/*out*/) < 0) { HGOTO_ERROR(H5E_FILE, H5E_NOTHDF5, NULL, "unable to find signature"); } if (H5F_low_read(f->shared->lf, access_parms, &H5F_xfer_dflt, - &(f->shared->boot_addr), fixed_size, buf) < 0) { + f->shared->boot_addr, fixed_size, buf) < 0) { HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "unable to read boot block"); } @@ -1190,22 +1190,22 @@ H5F_open(const char *name, uintn flags, H5G_SIZEOF_ENTRY(f); assert(variable_size <= sizeof buf); addr1 = f->shared->boot_addr; - H5F_addr_inc(&addr1, (hsize_t)fixed_size); + H5F_addr_inc(&addr1/*in,out*/, (hsize_t)fixed_size); if (H5F_low_read(f->shared->lf, access_parms, &H5F_xfer_dflt, - &addr1, variable_size, buf) < 0) { + addr1, variable_size, buf) < 0) { HGOTO_ERROR(H5E_FILE, H5E_NOTHDF5, NULL, "unable to read boot block"); } p = buf; - H5F_addr_decode(f, &p, &(f->shared->base_addr)); - H5F_addr_decode(f, &p, &(f->shared->freespace_addr)); - H5F_addr_decode(f, &p, &(f->shared->hdf5_eof)); - H5F_addr_decode(f, &p, &reserved_addr); - if (H5G_ent_decode(f, &p, &root_ent) < 0) { + H5F_addr_decode(f, &p, &(f->shared->base_addr)/*out*/); + H5F_addr_decode(f, &p, &(f->shared->freespace_addr)/*out*/); + H5F_addr_decode(f, &p, &(f->shared->hdf5_eof)/*out*/); + H5F_addr_decode(f, &p, &reserved_addr/*out*/); + if (H5G_ent_decode(f, &p, &root_ent/*out*/) < 0) { HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to read root symbol entry"); } - if (H5G_mkroot (f, &root_ent)<0) { + if (H5G_mkroot(f, &root_ent)<0) { HGOTO_ERROR (H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to read root group"); } @@ -1214,24 +1214,24 @@ H5F_open(const char *name, uintn flags, * The userdefined data is the area of the file before the base * address. */ - f->shared->create_parms->userblock_size = f->shared->base_addr.offset; + f->shared->create_parms->userblock_size = f->shared->base_addr; } /* * What is the current size of the file? The max_addr field is a relative * address while H5F_low_size() returns an absolute address. */ - H5F_low_size(f->shared->lf, &addr1); + H5F_low_size(f->shared->lf, &addr1/*out*/); addr2 = f->shared->hdf5_eof; - H5F_addr_add(&addr2, &(f->shared->base_addr)); - if (H5F_addr_lt(&addr1, &addr2)) { + H5F_addr_add(&addr2/*in,out*/, f->shared->base_addr); + if (H5F_addr_lt(addr1, addr2)) { /* * Truncated file? This might happen if one tries to open the first * member of a file family. */ HGOTO_ERROR(H5E_FILE, H5E_TRUNCATED, NULL, "truncated file"); - } else if (H5F_addr_gt(&addr1, &addr2)) { + } else if (H5F_addr_gt(addr1, addr2)) { /* * The file is larger than the hdf5 data. It either has extra junk at * the end, or a wrapper. In either case, make the file think it's @@ -1243,10 +1243,10 @@ H5F_open(const char *name, uintn flags, #ifdef H5F_DEBUG if (H5DEBUG(F)) { HDfprintf(H5DEBUG(F), "H5F: resetting EOF from %a to %a (abs)\n", - &addr1, &addr2); + addr1, addr2); } #endif - H5F_low_seteof(f->shared->lf, &addr2); + H5F_low_seteof(f->shared->lf, addr2); } /* Create and/or open the root group if we haven't already done so */ @@ -1648,7 +1648,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate) } /* flush (and invalidate) the entire meta data cache */ - if (H5AC_flush(f, NULL, 0, invalidate) < 0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, invalidate) < 0) { HRETURN_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush meta data cache"); } @@ -1670,15 +1670,15 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate) UINT16ENCODE(p, f->shared->create_parms->sym_leaf_k); UINT16ENCODE(p, f->shared->create_parms->btree_k[H5B_SNODE_ID]); UINT32ENCODE(p, f->shared->consist_flags); - H5F_addr_encode(f, &p, &(f->shared->base_addr)); - H5F_addr_encode(f, &p, &(f->shared->freespace_addr)); - H5F_addr_encode(f, &p, &(f->shared->hdf5_eof)); + H5F_addr_encode(f, &p, f->shared->base_addr); + H5F_addr_encode(f, &p, f->shared->freespace_addr); + H5F_addr_encode(f, &p, f->shared->hdf5_eof); H5F_addr_undef(&reserved_addr); - H5F_addr_encode(f, &p, &reserved_addr); + H5F_addr_encode(f, &p, reserved_addr); H5G_ent_encode(f, &p, H5G_entof(f->shared->root_grp)); /* update file length if necessary */ - if (!H5F_addr_defined(&(f->shared->hdf5_eof))) { + if (!H5F_addr_defined(f->shared->hdf5_eof)) { haddr_t t_addr; /*temporary address */ /* Set the HDF5 file size */ @@ -1687,8 +1687,8 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate) /* Set the logical file size, including the userblock data */ t_addr = f->shared->hdf5_eof; - H5F_addr_add(&t_addr, &(f->shared->base_addr)); - H5F_low_seteof(f->shared->lf, &t_addr); + H5F_addr_add(&t_addr/*in,out*/, f->shared->base_addr); + H5F_low_seteof(f->shared->lf, t_addr); /* Indicate that the boot block needs to be flushed out */ firsttime_bootblock=1; @@ -1699,9 +1699,11 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate) #ifdef HAVE_PARALLEL H5F_mpio_tas_allsame(f->shared->lf, TRUE); /* only p0 will write */ #endif - if (H5F_low_write(f->shared->lf, f->shared->access_parms, &H5F_xfer_dflt, - &(f->shared->boot_addr), (size_t)(p-buf), buf)<0) { - HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to write header"); + if (H5F_low_write(f->shared->lf, f->shared->access_parms, + &H5F_xfer_dflt, f->shared->boot_addr, + (size_t)(p-buf), buf)<0) { + HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, + "unable to write header"); } /* Flush file buffers to disk */ @@ -1974,7 +1976,7 @@ H5F_mount(H5G_entry_t *loc, const char *name, H5F_t *child, while (lt<rt && cmp) { md = (lt+rt)/2; ent = H5G_entof(parent->mtab.child[md].group); - cmp = H5F_addr_cmp(&(mp_ent->header), &(ent->header)); + cmp = H5F_addr_cmp(mp_ent->header, ent->header); if (cmp<0) { rt = md; } else if (cmp>0) { @@ -2071,7 +2073,7 @@ H5F_unmount(H5G_entry_t *loc, const char *name) ent = H5G_entof(child->shared->root_grp); if (child->mtab.parent && - H5F_addr_eq(&(mnt_ent->header), &(ent->header))) { + H5F_addr_eq(mnt_ent->header, ent->header)) { /* * We've been given the root group of the child. We do a reverse * lookup in the parent's mount table to find the correct entry. @@ -2105,7 +2107,7 @@ H5F_unmount(H5G_entry_t *loc, const char *name) while (lt<rt && cmp) { md = (lt+rt)/2; ent = H5G_entof(parent->mtab.child[md].group); - cmp = H5F_addr_cmp(&(mnt_ent->header), &(ent->header)); + cmp = H5F_addr_cmp(mnt_ent->header, ent->header); if (cmp<0) { rt = md; } else { @@ -2173,7 +2175,7 @@ H5F_mountpoint(H5G_entry_t *find/*in,out*/) while (lt<rt && cmp) { md = (lt+rt)/2; ent = H5G_entof(parent->mtab.child[md].group); - cmp = H5F_addr_cmp(&(find->header), &(ent->header)); + cmp = H5F_addr_cmp(find->header, ent->header); if (cmp<0) { rt = md; } else { @@ -2362,13 +2364,15 @@ H5Freopen(hid_t file_id) * Jul 10 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_block_read(H5F_t *f, const haddr_t *addr, hsize_t size, +H5F_block_read(H5F_t *f, haddr_t addr, hsize_t size, const H5F_xfer_t *xfer_parms, void *buf) { haddr_t abs_addr; @@ -2379,11 +2383,11 @@ H5F_block_read(H5F_t *f, const haddr_t *addr, hsize_t size, /* convert the relative address to an absolute address */ abs_addr = f->shared->base_addr; - H5F_addr_add(&abs_addr, addr); + H5F_addr_add(&abs_addr/*in,out*/, addr); /* Read the data */ if (H5F_low_read(f->shared->lf, f->shared->access_parms, xfer_parms, - &abs_addr, (size_t)size, buf) < 0) { + abs_addr, (size_t)size, buf) < 0) { HRETURN_ERROR(H5E_IO, H5E_READERROR, FAIL, "low-level read failed"); } FUNC_LEAVE(SUCCEED); @@ -2407,13 +2411,15 @@ H5F_block_read(H5F_t *f, const haddr_t *addr, hsize_t size, * Jul 10 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_block_write(H5F_t *f, const haddr_t *addr, hsize_t size, +H5F_block_write(H5F_t *f, haddr_t addr, hsize_t size, const H5F_xfer_t *xfer_parms, const void *buf) { haddr_t abs_addr; @@ -2428,11 +2434,11 @@ H5F_block_write(H5F_t *f, const haddr_t *addr, hsize_t size, /* Convert the relative address to an absolute address */ abs_addr = f->shared->base_addr; - H5F_addr_add(&abs_addr, addr); + H5F_addr_add(&abs_addr/*in,out*/, addr); /* Write the data */ if (H5F_low_write(f->shared->lf, f->shared->access_parms, xfer_parms, - &abs_addr, (size_t)size, buf)) { + abs_addr, (size_t)size, buf)) { HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "low-level write failed"); } @@ -2455,92 +2461,85 @@ H5F_block_write(H5F_t *f, const haddr_t *addr, hsize_t size, * Aug 1 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_debug(H5F_t *f, const haddr_t UNUSED *addr, FILE * stream, - intn indent, intn fwidth) +H5F_debug(H5F_t *f, haddr_t UNUSED addr, FILE * stream, intn indent, + intn fwidth) { FUNC_ENTER(H5F_debug, FAIL); /* check args */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(stream); assert(indent >= 0); assert(fwidth >= 0); /* debug */ - fprintf(stream, "%*sFile Boot Block...\n", indent, ""); - - fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, - "File name:", - f->name); - fprintf(stream, "%*s%-*s 0x%08x\n", indent, "", fwidth, - "Flags", - (unsigned) (f->shared->flags)); - fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, - "Reference count:", - (unsigned) (f->shared->nrefs)); - fprintf(stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth, - "Consistency flags:", - (unsigned long) (f->shared->consist_flags)); - - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Address of boot block:"); - H5F_addr_print(stream, &(f->shared->boot_addr)); - fprintf(stream, " (abs)\n"); - - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Base address:"); - H5F_addr_print(stream, &(f->shared->base_addr)); - fprintf(stream, " (abs)\n"); - - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Free list address:"); - H5F_addr_print(stream, &(f->shared->freespace_addr)); - fprintf(stream, " (rel)\n"); - - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Total size of hdf5 data:"); - H5F_addr_print(stream, &(f->shared->hdf5_eof)); - fprintf(stream, " bytes\n"); - - fprintf(stream, "%*s%-*s %lu bytes\n", indent, "", fwidth, - "Size of user block:", - (unsigned long) (f->shared->create_parms->userblock_size)); - fprintf(stream, "%*s%-*s %u bytes\n", indent, "", fwidth, - "Size of file size_t type:", - (unsigned) (f->shared->create_parms->sizeof_size)); - fprintf(stream, "%*s%-*s %u bytes\n", indent, "", fwidth, - "Size of file haddr_t type:", - (unsigned) (f->shared->create_parms->sizeof_addr)); - fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, - "Symbol table leaf node 1/2 rank:", - (unsigned) (f->shared->create_parms->sym_leaf_k)); - fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, - "Symbol table internal node 1/2 rank:", - (unsigned) (f->shared->create_parms->btree_k[H5B_SNODE_ID])); - fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, - "Boot block version number:", - (unsigned) (f->shared->create_parms->bootblock_ver)); - fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, - "Free list version number:", - (unsigned) (f->shared->create_parms->freespace_ver)); - fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, - "Object directory version number:", - (unsigned) (f->shared->create_parms->objectdir_ver)); - fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, - "Shared header version number:", - (unsigned) (f->shared->create_parms->sharedheader_ver)); - - fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, - "Root group symbol table entry:", - f->shared->root_grp ? "" : "(none)"); + HDfprintf(stream, "%*sFile Boot Block...\n", indent, ""); + + HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "File name:", + f->name); + HDfprintf(stream, "%*s%-*s 0x%08x\n", indent, "", fwidth, + "Flags", + (unsigned) (f->shared->flags)); + HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, + "Reference count:", + (unsigned) (f->shared->nrefs)); + HDfprintf(stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth, + "Consistency flags:", + (unsigned long) (f->shared->consist_flags)); + + HDfprintf(stream, "%*s%-*s %a (abs)\n", indent, "", fwidth, + "Address of boot block:", f->shared->boot_addr); + + HDfprintf(stream, "%*s%-*s %a (abs)\n", indent, "", fwidth, + "Base address:", f->shared->base_addr); + + HDfprintf(stream, "%*s%-*s %a (rel)\n", indent, "", fwidth, + "Free list address:", f->shared->freespace_addr); + + HDfprintf(stream, "%*s%-*s %a bytes\n", indent, "", fwidth, + "Total size of hdf5 data:", f->shared->hdf5_eof); + + HDfprintf(stream, "%*s%-*s %lu bytes\n", indent, "", fwidth, + "Size of user block:", + (unsigned long) (f->shared->create_parms->userblock_size)); + HDfprintf(stream, "%*s%-*s %u bytes\n", indent, "", fwidth, + "Size of file size_t type:", + (unsigned) (f->shared->create_parms->sizeof_size)); + HDfprintf(stream, "%*s%-*s %u bytes\n", indent, "", fwidth, + "Size of file haddr_t type:", + (unsigned) (f->shared->create_parms->sizeof_addr)); + HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, + "Symbol table leaf node 1/2 rank:", + (unsigned) (f->shared->create_parms->sym_leaf_k)); + HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, + "Symbol table internal node 1/2 rank:", + (unsigned) (f->shared->create_parms->btree_k[H5B_SNODE_ID])); + HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, + "Boot block version number:", + (unsigned) (f->shared->create_parms->bootblock_ver)); + HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, + "Free list version number:", + (unsigned) (f->shared->create_parms->freespace_ver)); + HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, + "Object directory version number:", + (unsigned) (f->shared->create_parms->objectdir_ver)); + HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, + "Shared header version number:", + (unsigned) (f->shared->create_parms->sharedheader_ver)); + + HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Root group symbol table entry:", + f->shared->root_grp ? "" : "(none)"); if (f->shared->root_grp) { - H5G_ent_debug(f, H5G_entof (f->shared->root_grp), stream, - indent+3, MAX(0, fwidth-3), NULL); + H5G_ent_debug(f, H5G_entof(f->shared->root_grp), stream, + indent+3, MAX(0, fwidth-3), H5F_ADDR_UNDEF); } FUNC_LEAVE(SUCCEED); } diff --git a/src/H5Farray.c b/src/H5Farray.c index 00446b6..b2c9551 100644 --- a/src/H5Farray.c +++ b/src/H5Farray.c @@ -51,7 +51,7 @@ H5F_arr_create (H5F_t *f, struct H5O_layout_t *layout/*in,out*/) /* check args */ assert (f); assert (layout); - H5F_addr_undef (&(layout->addr)); /*just in case we fail*/ + H5F_addr_undef(&(layout->addr)); /*just in case we fail*/ switch (layout->type) { case H5D_CONTIGUOUS: @@ -250,11 +250,11 @@ H5F_arr_read (H5F_t *f, const H5F_xfer_t *xfer, /* Read from file */ if (efl && efl->nused>0) { - if (H5O_efl_read (f, efl, &addr, elmt_size, buf)<0) { + if (H5O_efl_read (f, efl, addr, elmt_size, buf)<0) { HRETURN_ERROR (H5E_IO, H5E_READERROR, FAIL, "external data read failed"); } - } else if (H5F_block_read (f, &addr, elmt_size, xfer, buf)<0) { + } else if (H5F_block_read (f, addr, elmt_size, xfer, buf)<0) { HRETURN_ERROR (H5E_IO, H5E_READERROR, FAIL, "block read failed"); } @@ -262,7 +262,7 @@ H5F_arr_read (H5F_t *f, const H5F_xfer_t *xfer, /* Decrement indices and advance pointers */ for (j=ndims-1, carray=TRUE; j>=0 && carray; --j) { - H5F_addr_adj (&addr, file_stride[j]); + H5F_addr_adj(&addr, file_stride[j]); buf += mem_stride[j]; if (--idx[j]) carray = FALSE; @@ -477,11 +477,11 @@ H5F_arr_write (H5F_t *f, const H5F_xfer_t *xfer, /* Write to file */ if (efl && efl->nused>0) { - if (H5O_efl_write (f, efl, &addr, elmt_size, buf)<0) { + if (H5O_efl_write (f, efl, addr, elmt_size, buf)<0) { HRETURN_ERROR (H5E_IO, H5E_READERROR, FAIL, "external data write failed"); } - } else if (H5F_block_write(f, &addr, elmt_size, xfer, buf)<0) { + } else if (H5F_block_write(f, addr, elmt_size, xfer, buf)<0) { HRETURN_ERROR (H5E_IO, H5E_WRITEERROR, FAIL, "block write failed"); } diff --git a/src/H5Fcore.c b/src/H5Fcore.c index 85378b2..021490c 100644 --- a/src/H5Fcore.c +++ b/src/H5Fcore.c @@ -33,10 +33,10 @@ static H5F_low_t *H5F_core_open(const char *name, H5F_search_t *key/*out*/); static herr_t H5F_core_close(H5F_low_t *lf, const H5F_access_t *access_parms); static herr_t H5F_core_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf); static herr_t H5F_core_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf); const H5F_low_class_t H5F_LOW_CORE_g[1] = {{ @@ -176,14 +176,16 @@ H5F_core_close(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms) * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_core_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, - const H5F_xfer_t UNUSED *xfer_parms, const haddr_t *addr, + const H5F_xfer_t UNUSED *xfer_parms, haddr_t addr, size_t size, uint8_t *buf) { size_t n; @@ -192,16 +194,16 @@ H5F_core_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, FUNC_ENTER(H5F_core_read, FAIL); assert(lf); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); - eof = MIN(lf->eof.offset, lf->u.core.size); + eof = MIN(lf->eof, lf->u.core.size); - if (addr->offset >= eof) { + if (addr >= eof) { HDmemset(buf, 0, size); } else { - n = MIN(size, eof-addr->offset); - HDmemcpy(buf, lf->u.core.mem + addr->offset, n); + n = MIN(size, eof-addr); + HDmemcpy(buf, lf->u.core.mem + addr, n); HDmemset(buf+n, 0, size-n); } @@ -224,14 +226,16 @@ H5F_core_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_core_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t UNUSED *xfer_parms, const haddr_t *addr, + const H5F_xfer_t UNUSED *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf) { size_t need_more, na; @@ -241,7 +245,7 @@ H5F_core_write(H5F_low_t *lf, const H5F_access_t *access_parms, FUNC_ENTER(H5F_core_write, FAIL); assert(lf); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); assert (!access_parms || H5F_LOW_CORE==access_parms->driver); @@ -250,9 +254,9 @@ H5F_core_write(H5F_low_t *lf, const H5F_access_t *access_parms, * size, which is either defined in the file access property list or * which defaults to one. */ - if (addr->offset + size > lf->u.core.alloc) { + if (addr + size > lf->u.core.alloc) { if (access_parms) increment = access_parms->u.core.increment; - need_more = addr->offset+size - lf->u.core.alloc; + need_more = addr+size - lf->u.core.alloc; need_more = increment*((need_more+increment-1)/increment); na = lf->u.core.alloc + need_more; @@ -265,12 +269,12 @@ H5F_core_write(H5F_low_t *lf, const H5F_access_t *access_parms, } /* Move the physical EOF marker */ - if (addr->offset + size > lf->u.core.size) { - lf->u.core.size = addr->offset + size; + if (addr + size > lf->u.core.size) { + lf->u.core.size = addr + size; } /* Copy data */ - HDmemcpy(lf->u.core.mem+addr->offset, buf, size); + HDmemcpy(lf->u.core.mem+addr, buf, size); FUNC_LEAVE(SUCCEED); } diff --git a/src/H5Ffamily.c b/src/H5Ffamily.c index f2fa689..d871e69 100644 --- a/src/H5Ffamily.c +++ b/src/H5Ffamily.c @@ -30,10 +30,8 @@ static intn interface_initialize_g = 0; #define INTERFACE_INIT NULL -#define H5F_FAM_OFFSET(LF,ADDR) ((off_t)((ADDR)->offset % \ - (LF)->u.fam.memb_size.offset)) -#define H5F_FAM_MEMBNO(LF,ADDR) ((intn)((ADDR)->offset / \ - (LF)->u.fam.memb_size.offset)) +#define H5F_FAM_OFFSET(LF,ADDR) ((off_t)((ADDR) % (LF)->u.fam.memb_size)) +#define H5F_FAM_MEMBNO(LF,ADDR) ((intn)((ADDR) / (LF)->u.fam.memb_size)) static htri_t H5F_fam_access(const char *name, const H5F_access_t *access_parms, int mode, @@ -43,10 +41,10 @@ static H5F_low_t *H5F_fam_open(const char *name, H5F_search_t *key/*out*/); static herr_t H5F_fam_close(H5F_low_t *lf, const H5F_access_t *access_parms); static herr_t H5F_fam_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf); static herr_t H5F_fam_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf); static herr_t H5F_fam_flush(H5F_low_t *lf, const H5F_access_t *access_parms); @@ -167,9 +165,9 @@ H5F_fam_open(const char *name, const H5F_access_t *access_parms, member = NULL; } - H5F_low_size (lf->u.fam.memb[0], &tmp_addr); + H5F_low_size (lf->u.fam.memb[0], &tmp_addr/*out*/); if (1==lf->u.fam.nmemb && - H5F_addr_gt (&tmp_addr, &(access_parms->u.fam.memb_size))) { + H5F_addr_gt (tmp_addr, access_parms->u.fam.memb_size)) { /* * If there's only one member and the member is larger than the * specified member size, then adjust the specified member size to be @@ -179,10 +177,10 @@ H5F_fam_open(const char *name, const H5F_access_t *access_parms, if (H5DEBUG(F)) { HDfprintf (H5DEBUG(F), "H5F: family member size has been " "increased from %a to %a\n", - &(access_parms->u.fam.memb_size), &tmp_addr); + access_parms->u.fam.memb_size, tmp_addr); } #endif - if (tmp_addr.offset<1024) tmp_addr.offset = 1024; + if (tmp_addr<1024) tmp_addr = 1024; lf->u.fam.memb_size = tmp_addr; } else if (1==lf->u.fam.nmemb) { @@ -193,7 +191,7 @@ H5F_fam_open(const char *name, const H5F_access_t *access_parms, lf->u.fam.memb_size = access_parms->u.fam.memb_size; } else if (lf->u.fam.nmemb>1 && - H5F_addr_ne (&tmp_addr, &(access_parms->u.fam.memb_size))) { + H5F_addr_ne(tmp_addr, access_parms->u.fam.memb_size)) { /* * If there are more than one member then use the size of the first * member as the member size. @@ -201,14 +199,13 @@ H5F_fam_open(const char *name, const H5F_access_t *access_parms, #ifdef H5F_DEBUG if (H5DEBUG(F)) { HDfprintf (H5DEBUG(F), "H5F: family member size adjusted from " - "%a to %a\n", &(access_parms->u.fam.memb_size), - &tmp_addr); + "%a to %a\n", access_parms->u.fam.memb_size, tmp_addr); } #endif lf->u.fam.memb_size = tmp_addr; for (membno=1; membno<lf->u.fam.nmemb; membno++) { - H5F_low_size (lf->u.fam.memb[membno], &tmp_addr); - if (H5F_addr_gt (&tmp_addr, &(lf->u.fam.memb_size))) { + H5F_low_size(lf->u.fam.memb[membno], &tmp_addr/*out*/); + if (H5F_addr_gt(tmp_addr, lf->u.fam.memb_size)) { HGOTO_ERROR (H5E_IO, H5E_CANTINIT, NULL, "family contains " "member(s) larger than first member"); } @@ -226,9 +223,9 @@ H5F_fam_open(const char *name, const H5F_access_t *access_parms, * file on a 32-bit machine is 2^32-1. */ if (H5DEBUG(F) && - lf->u.fam.memb_size.offset == ((size_t)1<<(sizeof(off_t)-1))) { + lf->u.fam.memb_size == ((size_t)1<<(sizeof(off_t)-1))) { HDfprintf(H5DEBUG(F), "H5F: family member size may be too large: %a\n", - &(lf->u.fam.memb_size)); + lf->u.fam.memb_size); } #endif @@ -237,8 +234,8 @@ H5F_fam_open(const char *name, const H5F_access_t *access_parms, */ assert(lf->u.fam.nmemb >= 1); lf->eof = lf->u.fam.memb_size; - lf->eof.offset *= (lf->u.fam.nmemb-1); - lf->eof.offset += lf->u.fam.memb[lf->u.fam.nmemb-1]->eof.offset; + lf->eof *= (lf->u.fam.nmemb-1); + lf->eof += lf->u.fam.memb[lf->u.fam.nmemb-1]->eof; HRETURN(lf); @@ -305,15 +302,17 @@ H5F_fam_close(H5F_low_t *lf, const H5F_access_t *access_parms) * Monday, November 10, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_fam_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, uint8_t *buf) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + uint8_t *buf) { size_t nbytes; haddr_t cur_addr; @@ -323,25 +322,25 @@ H5F_fam_read(H5F_low_t *lf, const H5F_access_t *access_parms, FUNC_ENTER(H5F_fam_read, FAIL); assert(lf); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); member_size = lf->u.fam.memb_size; membno = H5F_FAM_MEMBNO(lf, addr); H5F_addr_reset (&offset); - offset.offset = H5F_FAM_OFFSET(lf, addr); - cur_addr = *addr; + offset = H5F_FAM_OFFSET(lf, addr); + cur_addr = addr; while (size > 0) { if (membno >= lf->u.fam.nmemb) { HDmemset(buf, 0, size); break; } else { - nbytes = MIN(size, member_size.offset-offset.offset); + nbytes = MIN(size, member_size-offset); cur_addr = offset; if (H5F_low_read(lf->u.fam.memb[membno], access_parms->u.fam.memb_access, xfer_parms, - &cur_addr, nbytes, buf) < 0) { + cur_addr, nbytes, buf) < 0) { HRETURN_ERROR(H5E_IO, H5E_READERROR, FAIL, "can't read from family member"); } @@ -370,15 +369,17 @@ H5F_fam_read(H5F_low_t *lf, const H5F_access_t *access_parms, * Monday, November 10, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_fam_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, const uint8_t *buf) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + const uint8_t *buf) { size_t nbytes; haddr_t cur_addr, max_addr; @@ -393,7 +394,7 @@ H5F_fam_write(H5F_low_t *lf, const H5F_access_t *access_parms, /* Check args */ assert(lf); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); assert (access_parms); assert (H5F_LOW_FAMILY==access_parms->driver); @@ -404,11 +405,11 @@ H5F_fam_write(H5F_low_t *lf, const H5F_access_t *access_parms, member_size = lf->u.fam.memb_size; membno = H5F_FAM_MEMBNO(lf, addr); H5F_addr_reset (&offset); - offset.offset = H5F_FAM_OFFSET(lf, addr); - cur_addr = *addr; + offset = H5F_FAM_OFFSET(lf, addr); + cur_addr = addr; while (size > 0) { - nbytes = MIN(size, member_size.offset - offset.offset); + nbytes = MIN(size, member_size-offset); cur_addr = offset; if (membno >= lf->u.fam.nmemb) { @@ -444,8 +445,8 @@ H5F_fam_write(H5F_low_t *lf, const H5F_access_t *access_parms, */ if (i < membno) { H5F_addr_reset(&max_addr); - H5F_addr_inc(&max_addr, member_size.offset); - H5F_low_seteof(member, &max_addr); + H5F_addr_inc(&max_addr, member_size); + H5F_low_seteof(member, max_addr); } lf->u.fam.memb[lf->u.fam.nmemb++] = member; } @@ -457,14 +458,14 @@ H5F_fam_write(H5F_low_t *lf, const H5F_access_t *access_parms, */ max_addr = cur_addr; H5F_addr_inc(&max_addr, (hsize_t)nbytes); - if (H5F_addr_gt(&max_addr, &(lf->u.fam.memb[membno]->eof))) { - H5F_low_seteof(lf->u.fam.memb[membno], &max_addr); + if (H5F_addr_gt(max_addr, lf->u.fam.memb[membno]->eof)) { + H5F_low_seteof(lf->u.fam.memb[membno], max_addr); } /* Write the data to the member */ if (H5F_low_write(lf->u.fam.memb[membno], access_parms->u.fam.memb_access, xfer_parms, - &cur_addr, nbytes, buf) < 0) { + cur_addr, nbytes, buf) < 0) { HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "can't write to family member"); } @@ -512,24 +513,24 @@ H5F_fam_flush(H5F_low_t *lf, const H5F_access_t *access_parms) * byte from the member (which defaults to zero if we're reading past the * end of the member) and then writing it back. */ - max_offset = lf->u.fam.memb_size.offset - 1; + max_offset = lf->u.fam.memb_size - 1; H5F_addr_reset(&addr1); H5F_addr_inc(&addr1, max_offset); - H5F_low_size(lf->u.fam.memb[0], &addr2); /*remember logical eof */ + H5F_low_size(lf->u.fam.memb[0], &addr2/*out*/);/*remember logical eof */ addr3 = addr1; H5F_addr_inc(&addr3, (hsize_t)1); - H5F_low_seteof(lf->u.fam.memb[0], &addr3); /*prevent a warning */ + H5F_low_seteof(lf->u.fam.memb[0], addr3); /*prevent a warning */ if (H5F_low_read(lf->u.fam.memb[0], access_parms->u.fam.memb_access, - &H5F_xfer_dflt, &addr1, 1, buf) < 0) { + &H5F_xfer_dflt, addr1, 1, buf) < 0) { HRETURN_ERROR(H5E_IO, H5E_READERROR, FAIL, "can't read from first family member"); } if (H5F_low_write(lf->u.fam.memb[0], access_parms->u.fam.memb_access, - &H5F_xfer_dflt, &addr1, 1, buf) < 0) { + &H5F_xfer_dflt, addr1, 1, buf) < 0) { HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "can't write to first family member"); } - H5F_low_seteof(lf->u.fam.memb[0], &addr2); /*reset old eof */ + H5F_low_seteof(lf->u.fam.memb[0], addr2); /*reset old eof */ /* * Flush each member file. Don't return an error status until we've diff --git a/src/H5Fistore.c b/src/H5Fistore.c index 5e60943..e8bc974 100644 --- a/src/H5Fistore.c +++ b/src/H5Fistore.c @@ -95,31 +95,31 @@ typedef struct H5F_rdcc_ent_t { /* Private prototypes */ static size_t H5F_istore_sizeof_rkey(H5F_t *f, const void *_udata); static herr_t H5F_istore_new_node(H5F_t *f, H5B_ins_t, void *_lt_key, - void *_udata, void *_rt_key, haddr_t *); + void *_udata, void *_rt_key, + haddr_t*/*out*/); static intn H5F_istore_cmp2(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key); static intn H5F_istore_cmp3(H5F_t *f, void *_lt_key, void *_udata, void *_rt_key); -static herr_t H5F_istore_found(H5F_t *f, const haddr_t *addr, - const void *_lt_key, void *_udata, - const void *_rt_key); -static H5B_ins_t H5F_istore_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, +static herr_t H5F_istore_found(H5F_t *f, haddr_t addr, const void *_lt_key, + void *_udata, const void *_rt_key); +static H5B_ins_t H5F_istore_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/*out*/); -static herr_t H5F_istore_iterate (H5F_t *f, void *left_key, - const haddr_t *addr, void *right_key, - void *_udata); +static herr_t H5F_istore_iterate(H5F_t *f, void *left_key, haddr_t addr, + void *right_key, void *_udata); static herr_t H5F_istore_decode_key(H5F_t *f, H5B_t *bt, uint8_t *raw, void *_key); static herr_t H5F_istore_encode_key(H5F_t *f, H5B_t *bt, uint8_t *raw, void *_key); -static herr_t H5F_istore_debug_key (FILE *stream, intn indent, intn fwidth, - const void *key, const void *udata); +static herr_t H5F_istore_debug_key(FILE *stream, intn indent, intn fwidth, + const void *key, const void *udata); #ifdef HAVE_PARALLEL -static herr_t H5F_istore_get_addr (H5F_t *f, const H5O_layout_t *layout, - const hssize_t offset[], void *_udata/*out*/); +static herr_t H5F_istore_get_addr(H5F_t *f, const H5O_layout_t *layout, + const hssize_t offset[], + void *_udata/*out*/); #endif /* @@ -463,7 +463,7 @@ H5F_istore_cmp3(H5F_t UNUSED *f, void *_lt_key, void *_udata, static herr_t H5F_istore_new_node(H5F_t *f, H5B_ins_t op, void *_lt_key, void *_udata, void *_rt_key, - haddr_t *addr/*out*/) + haddr_t *addr_p/*out*/) { H5F_istore_key_t *lt_key = (H5F_istore_key_t *) _lt_key; H5F_istore_key_t *rt_key = (H5F_istore_key_t *) _rt_key; @@ -480,18 +480,18 @@ H5F_istore_new_node(H5F_t *f, H5B_ins_t op, assert(rt_key); assert(udata); assert(udata->mesg.ndims > 0 && udata->mesg.ndims < H5O_LAYOUT_NDIMS); - assert(addr); + assert(addr_p); /* Allocate new storage */ assert (udata->key.nbytes > 0); #ifdef AKC printf("calling H5MF_alloc for new chunk\n"); #endif - if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, addr /*out */ ) < 0) { + if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, addr_p/*out*/) < 0) { HRETURN_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "couldn't allocate new file storage"); } - udata->addr = *addr; + udata->addr = *addr_p; /* * The left key describes the storage of the UDATA chunk being @@ -546,13 +546,13 @@ H5F_istore_new_node(H5F_t *f, H5B_ins_t op, * Thursday, October 9, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t -H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, - const void *_lt_key, void *_udata, - const void UNUSED *_rt_key) +H5F_istore_found(H5F_t UNUSED *f, haddr_t addr, const void *_lt_key, + void *_udata, const void UNUSED *_rt_key) { H5F_istore_ud1_t *udata = (H5F_istore_ud1_t *) _udata; const H5F_istore_key_t *lt_key = (const H5F_istore_key_t *) _lt_key; @@ -562,7 +562,7 @@ H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, /* Check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(udata); assert(lt_key); @@ -575,7 +575,7 @@ H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, } /* Initialize return values */ - udata->addr = *addr; + udata->addr = addr; udata->key.nbytes = lt_key->nbytes; udata->key.filter_mask = lt_key->filter_mask; assert (lt_key->nbytes>0); @@ -614,15 +614,17 @@ H5F_istore_found(H5F_t UNUSED *f, const haddr_t *addr, * Thursday, October 9, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. The NEW_NODE argument + * is renamed NEW_NODE_P. *------------------------------------------------------------------------- */ static H5B_ins_t -H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, +H5F_istore_insert(H5F_t *f, haddr_t addr, void *_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/*out*/) + haddr_t *new_node_p/*out*/) { H5F_istore_key_t *lt_key = (H5F_istore_key_t *) _lt_key; H5F_istore_key_t *md_key = (H5F_istore_key_t *) _md_key; @@ -638,14 +640,14 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, /* check args */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(lt_key); assert(lt_key_changed); assert(md_key); assert(udata); assert(rt_key); assert(rt_key_changed); - assert(new_node); + assert(new_node_p); cmp = H5F_istore_cmp3(f, lt_key, udata, rt_key); assert(cmp <= 0); @@ -668,17 +670,17 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, printf("calling H5MF_realloc for new chunk\n"); #endif if (H5MF_realloc (f, H5MF_RAW, lt_key->nbytes, addr, - udata->key.nbytes, new_node/*out*/)<0) { + udata->key.nbytes, new_node_p/*out*/)<0) { HRETURN_ERROR (H5E_STORAGE, H5E_WRITEERROR, H5B_INS_ERROR, "unable to reallocate chunk storage"); } lt_key->nbytes = udata->key.nbytes; lt_key->filter_mask = udata->key.filter_mask; *lt_key_changed = TRUE; - udata->addr = *new_node; + udata->addr = *new_node_p; ret_value = H5B_INS_CHANGE; } else { - udata->addr = *addr; + udata->addr = addr; ret_value = H5B_INS_NOOP; } @@ -705,11 +707,11 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, #ifdef AKC printf("calling H5MF_alloc for new chunk\n"); #endif - if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, new_node/*out*/)<0) { + if (H5MF_alloc(f, H5MF_RAW, udata->key.nbytes, new_node_p/*out*/)<0) { HRETURN_ERROR(H5E_IO, H5E_CANTINIT, H5B_INS_ERROR, "file allocation failed"); } - udata->addr = *new_node; + udata->addr = *new_node_p; ret_value = H5B_INS_RIGHT; } else { @@ -737,12 +739,12 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key, * Wednesday, April 21, 1999 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t -H5F_istore_iterate (H5F_t UNUSED *f, void *_lt_key, - const haddr_t UNUSED *addr, +H5F_istore_iterate (H5F_t UNUSED *f, void *_lt_key, haddr_t UNUSED addr, void UNUSED *_rt_key, void *_udata) { H5F_istore_ud1_t *bt_udata = (H5F_istore_ud1_t *)_udata; @@ -889,12 +891,12 @@ H5F_istore_flush_entry (H5F_t *f, H5F_rdcc_ent_t *ent, hbool_t reset) * Create the chunk it if it doesn't exist, or reallocate the chunk if * its size changed. Then write the data into the file. */ - if (H5B_insert(f, H5B_ISTORE, &(ent->layout->addr), ent->split_ratios, + if (H5B_insert(f, H5B_ISTORE, ent->layout->addr, ent->split_ratios, &udata)<0) { HGOTO_ERROR (H5E_IO, H5E_WRITEERROR, FAIL, "unable to allocate chunk"); } - if (H5F_block_write (f, &(udata.addr), udata.key.nbytes, + if (H5F_block_write (f, udata.addr, udata.key.nbytes, &H5F_xfer_dflt, buf)<0) { HGOTO_ERROR (H5E_IO, H5E_WRITEERROR, FAIL, "unable to write raw data to file"); @@ -1238,7 +1240,7 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, if (rdcc->nslots>0) { /* We don't care about loss of precision in the following statement. */ - idx = (uintn)(layout->addr.offset); + idx = (uintn)(layout->addr); H5F_MIXUP(idx); for (i=0; i<layout->ndims; i++) { idx += offset[i]; @@ -1249,7 +1251,7 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, if (ent && layout->ndims==ent->layout->ndims && - H5F_addr_eq(&(layout->addr), &(ent->layout->addr))) { + H5F_addr_eq(layout->addr, ent->layout->addr)) { for (i=0, found=TRUE; i<ent->layout->ndims; i++) { if (offset[i]!=ent->offset[i]) { found = FALSE; @@ -1298,17 +1300,17 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, chunk_alloc = chunk_size; udata.mesg = *layout; H5F_addr_undef (&(udata.addr)); - status = H5B_find (f, H5B_ISTORE, &(layout->addr), &udata); + status = H5B_find (f, H5B_ISTORE, layout->addr, &udata); H5E_clear (); if (NULL==(chunk = H5MM_malloc (chunk_alloc))) { HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for raw data chunk"); } - if (status>=0 && H5F_addr_defined (&(udata.addr))) { + if (status>=0 && H5F_addr_defined(udata.addr)) { /* * The chunk exists on disk. */ - if (H5F_block_read (f, &(udata.addr), udata.key.nbytes, + if (H5F_block_read(f, udata.addr, udata.key.nbytes, &H5F_xfer_dflt, chunk)<0) { HGOTO_ERROR (H5E_IO, H5E_READERROR, NULL, "unable to read raw data chunk"); @@ -1356,11 +1358,11 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, #endif #if 0 HDfprintf(stderr, "\ncollision %3d %10a {", - idx, &(ent->layout->addr)); + idx, ent->layout->addr); for (i=0; i<layout->ndims; i++) { HDfprintf(stderr, "%s%Zu", i?",":"", ent->offset[i]); } - HDfprintf(stderr, "}\n %10a {", &(layout->addr)); + HDfprintf(stderr, "}\n %10a {", layout->addr); for (i=0; i<layout->ndims; i++) { HDfprintf(stderr, "%s%Zu", i?",":"", offset[i]); } @@ -1593,7 +1595,7 @@ H5F_istore_read(H5F_t *f, const H5F_xfer_t *xfer, const H5O_layout_t *layout, assert (f); assert (layout && H5D_CHUNKED==layout->type); assert (layout->ndims>0 && layout->ndims<=H5O_LAYOUT_NDIMS); - assert (H5F_addr_defined(&(layout->addr))); + assert (H5F_addr_defined(layout->addr)); assert (offset_f); assert (size); assert (buf); @@ -1764,7 +1766,7 @@ H5F_istore_write(H5F_t *f, const H5F_xfer_t *xfer, const H5O_layout_t *layout, assert(f); assert(layout && H5D_CHUNKED==layout->type); assert(layout->ndims>0 && layout->ndims<=H5O_LAYOUT_NDIMS); - assert(H5F_addr_defined(&(layout->addr))); + assert(H5F_addr_defined(layout->addr)); assert(offset_f); assert(size); assert(buf); @@ -1965,11 +1967,12 @@ H5F_istore_create(H5F_t *f, H5O_layout_t *layout /*out */ ) * Wednesday, April 21, 1999 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ hsize_t -H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr) +H5F_istore_allocated(H5F_t *f, int ndims, haddr_t addr) { H5F_istore_ud1_t udata; @@ -1998,11 +2001,12 @@ H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr) * Wednesday, April 28, 1999 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims, haddr_t *addr) +H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims, haddr_t addr) { H5F_istore_ud1_t udata; @@ -2090,11 +2094,12 @@ H5F_istore_stats (H5F_t *f, hbool_t headers) * Thursday, April 16, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_istore_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, +H5F_istore_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent, intn fwidth, int ndims) { H5F_istore_ud1_t udata; @@ -2147,9 +2152,9 @@ H5F_istore_get_addr(H5F_t *f, const H5O_layout_t *layout, } udata->mesg = *layout; H5F_addr_undef (&(udata->addr)); - status = H5B_find (f, H5B_ISTORE, &(layout->addr), udata); + status = H5B_find (f, H5B_ISTORE, layout->addr, udata); H5E_clear (); - if (status>=0 && H5F_addr_defined (&(udata->addr))) + if (status>=0 && H5F_addr_defined(udata->addr)) HRETURN(SUCCEED); FUNC_LEAVE (FAIL); @@ -2211,7 +2216,7 @@ H5F_istore_allocate (H5F_t *f, const H5O_layout_t *layout, assert(pline); assert(layout && H5D_CHUNKED==layout->type); assert(layout->ndims>0 && layout->ndims<=H5O_LAYOUT_NDIMS); - assert(H5F_addr_defined(&(layout->addr))); + assert(H5F_addr_defined(layout->addr)); /* * Setup indice to go through all chunks. (Future improvement @@ -2281,7 +2286,7 @@ H5F_istore_allocate (H5F_t *f, const H5O_layout_t *layout, } else { #ifdef AKC printf("NO need for allocation\n"); - printf("udata.addr.offset=%d\n", udata.addr.offset); + HDfprintf(stdout, "udata.addr=%a\n", udata.addr); #endif } #endif diff --git a/src/H5Flow.c b/src/H5Flow.c index 3ac4cf1..c54f845 100644 --- a/src/H5Flow.c +++ b/src/H5Flow.c @@ -15,8 +15,6 @@ #include <H5Fprivate.h> #include <H5MMprivate.h> -#define addr_defined(X) (((uint64_t)(-1)!=(X)->offset) ? TRUE : FALSE) - #define PABLO_MASK H5Flow_mask static intn interface_initialize_g = 0; #define INTERFACE_INIT NULL @@ -209,22 +207,24 @@ H5F_low_close(H5F_low_t *lf, const H5F_access_t *access_parms) * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t H5F_low_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, uint8_t *buf/*out*/) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + uint8_t *buf/*out*/) { herr_t ret_value = FAIL; FUNC_ENTER(H5F_low_read, FAIL); assert(lf && lf->type); - assert(addr && addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); if (lf->type->read) { @@ -259,20 +259,23 @@ H5F_low_read(H5F_low_t *lf, const H5F_access_t *access_parms, * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * - * rky 980816 + * rky, 1998-08-16 * Accommodate fancy MPI derived datatype writes. * - * rky 980902 + * rky, 1998-09-02 * For non-block parallel writes, don't change value of lf->eof. + * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t H5F_low_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, const uint8_t *buf) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + const uint8_t *buf) { herr_t ret_value = FAIL; haddr_t tmp_addr; @@ -280,17 +283,17 @@ H5F_low_write(H5F_low_t *lf, const H5F_access_t *access_parms, FUNC_ENTER(H5F_low_write, FAIL); assert(lf && lf->type); - assert(addr && addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); /* check for writing past the end of file marker */ - tmp_addr = *addr; + tmp_addr = addr; H5F_addr_inc(&tmp_addr, (hsize_t)size); - if (H5F_addr_gt(&tmp_addr, &(lf->eof))) + if (H5F_addr_gt(tmp_addr, lf->eof)) HRETURN_ERROR(H5E_IO, H5E_OVERFLOW, ret_value, "write past end of logical file"); /* Check if the last byte of the logical file has been written */ - if (!lf->eof_written && H5F_addr_eq(&tmp_addr, &(lf->eof))) + if (!lf->eof_written && H5F_addr_eq(tmp_addr, lf->eof)) lf->eof_written=1; /* Write the data */ @@ -342,15 +345,16 @@ H5F_low_flush(H5F_low_t *lf, const H5F_access_t *access_parms) /* Make sure the last block of the file has been allocated on disk */ H5F_addr_reset(&last_byte); - if (!lf->eof_written && addr_defined(&(lf->eof)) && H5F_addr_gt(&(lf->eof), &last_byte)) { + if (!lf->eof_written && H5F_addr_defined(lf->eof) && + H5F_addr_gt(lf->eof, last_byte)) { last_byte = lf->eof; - last_byte.offset -= 1; - if (H5F_low_read(lf, access_parms, &H5F_xfer_dflt, &last_byte, + last_byte -= 1; + if (H5F_low_read(lf, access_parms, &H5F_xfer_dflt, last_byte, 1, buf) >= 0) { #ifdef HAVE_PARALLEL H5F_mpio_tas_allsame( lf, TRUE ); /* only p0 will write */ #endif /* HAVE_PARALLEL */ - H5F_low_write(lf, access_parms, &H5F_xfer_dflt, &last_byte, + H5F_low_write(lf, access_parms, &H5F_xfer_dflt, last_byte, 1, buf); } else @@ -401,17 +405,17 @@ H5F_low_flush(H5F_low_t *lf, const H5F_access_t *access_parms) *------------------------------------------------------------------------- */ hsize_t -H5F_low_size(H5F_low_t *lf, haddr_t *eof/*out*/) +H5F_low_size(H5F_low_t *lf, haddr_t *eof_p/*out*/) { hsize_t size = (hsize_t)(-1); /*max possible size */ FUNC_ENTER(H5F_low_size, 0); assert(lf && lf->type); - assert(eof); + assert(eof_p); - *eof = lf->eof; - if (eof->offset < size) size = eof->offset; + *eof_p = lf->eof; + if (*eof_p < size) size = *eof_p; FUNC_LEAVE(size); } @@ -516,7 +520,7 @@ H5F_low_access(const H5F_low_class_t *type, const char *name, * providing its own allocation method. * * Return: Success: Non-negative. The address of the old - * end-of-file is returned through the ADDR + * end-of-file is returned through the ADDR_P * argument and the logical size of the file has * been extended by SIZE bytes. * @@ -531,24 +535,24 @@ H5F_low_access(const H5F_low_class_t *type, const char *name, */ herr_t H5F_low_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, - hsize_t size, haddr_t *addr/*out*/) + hsize_t size, haddr_t *addr_p/*out*/) { FUNC_ENTER(H5F_low_alloc, FAIL); assert(lf); assert(size > 0); - assert(addr); + assert(addr_p); /* Reset the EOF written flag */ lf->eof_written=0; if (lf->type->extend) { - if ((lf->type->extend) (lf, access_parms, op, size, addr/*out*/) < 0) { + if ((lf->type->extend) (lf, access_parms, op, size, addr_p/*out*/)<0) { HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to extend file"); } } else { - *addr = lf->eof; + *addr_p = lf->eof; H5F_addr_inc(&(lf->eof), size); } @@ -572,7 +576,8 @@ H5F_low_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, * ADDR will be the address within the free * block where the request can be satisfied. * - * Failure: Negative with the output value of ADDR undefined. + * Failure: Negative with the output value of ADDR_P + * undefined. * * Programmer: Robb Matzke * Tuesday, June 9, 1998 @@ -583,7 +588,7 @@ H5F_low_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, */ intn H5F_low_alloc (H5F_low_t *lf, intn op, hsize_t alignment, hsize_t threshold, - hsize_t size, H5MF_free_t *blk, haddr_t *addr/*out*/) + hsize_t size, H5MF_free_t *blk, haddr_t *addr_p/*out*/) { intn ret_value = FAIL; hsize_t wasted; @@ -593,25 +598,25 @@ H5F_low_alloc (H5F_low_t *lf, intn op, hsize_t alignment, hsize_t threshold, assert (alignment>0); assert (size>0); assert (blk); - assert (addr); + assert (addr_p); if (lf->type->alloc) { ret_value = (lf->type->alloc)(lf, op, alignment, threshold, size, blk, - addr/*out*/); + addr_p/*out*/); } else { if (size>=threshold) { - wasted = blk->addr.offset % alignment; + wasted = blk->addr % alignment; } else { wasted = 0; } if (0==wasted && size==blk->size) { /* exact match */ - *addr = blk->addr; + *addr_p = blk->addr; ret_value = 1; } else if (blk->size>wasted && blk->size-wasted>=size) { /* over-satisfied */ - *addr = blk->addr; - H5F_addr_inc (addr, wasted); + *addr_p = blk->addr; + H5F_addr_inc (addr_p, wasted); ret_value = 0; } } @@ -631,18 +636,19 @@ H5F_low_alloc (H5F_low_t *lf, intn op, hsize_t alignment, hsize_t threshold, * Thursday, November 13, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5F_low_seteof(H5F_low_t *lf, const haddr_t *addr) +H5F_low_seteof(H5F_low_t *lf, haddr_t addr) { FUNC_ENTER(H5F_low_seteof, FAIL); assert(lf); - assert(addr && addr_defined(addr)); + assert(H5F_addr_defined(addr)); - lf->eof = *addr; + lf->eof = addr; FUNC_LEAVE(SUCCEED); } @@ -662,113 +668,24 @@ H5F_low_seteof(H5F_low_t *lf, const haddr_t *addr) * Friday, November 7, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The A1 and A2 arguments are passed by value. *------------------------------------------------------------------------- */ intn -H5F_addr_cmp(const haddr_t *a1, const haddr_t *a2) +H5F_addr_cmp(haddr_t a1, haddr_t a2) { FUNC_ENTER(H5F_addr_cmp, FAIL); - assert(a1 && addr_defined(a1)); - assert(a2 && addr_defined(a2)); + assert(H5F_addr_defined(a1)); + assert(H5F_addr_defined(a2)); - if (a1->offset < a2->offset) - HRETURN(-1); - if (a1->offset > a2->offset) - HRETURN(1); + if (a1 < a2) HRETURN(-1); + if (a1 > a2) HRETURN(1); FUNC_LEAVE(0); } - -/*------------------------------------------------------------------------- - * Function: H5F_addr_undef - * - * Purpose: Cause an address to become undefined. - * - * Return: void - * - * Programmer: Robb Matzke - * Friday, November 7, 1997 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -H5F_addr_undef(haddr_t *addr/*out*/) -{ - assert(addr); - addr->offset = (uint64_t)(-1); -} - -/*------------------------------------------------------------------------- - * Function: H5F_addr_defined - * - * Purpose: Determines if an address has a defined value. - * - * Return: Success: TRUE or FALSE - * - * Failure: FAIL - * - * Programmer: Robb Matzke - * Friday, November 7, 1997 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -htri_t -H5F_addr_defined(const haddr_t *addr) -{ - FUNC_ENTER(H5F_addr_defined, FAIL); - FUNC_LEAVE(addr_defined(addr)); -} - -/*------------------------------------------------------------------------- - * Function: H5F_addr_reset - * - * Purpose: Reset the address to zero. - * - * Return: void - * - * Programmer: Robb Matzke - * Friday, November 7, 1997 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -H5F_addr_reset(haddr_t *addr/*out*/) -{ - assert(addr); - addr->offset = 0; -} - -/*------------------------------------------------------------------------- - * Function: H5F_addr_zerop - * - * Purpose: Determines if an address is zero. - * - * Return: Success: TRUE or FALSE - * - * Failure: FAIL - * - * Programmer: Robb Matzke - * Friday, November 7, 1997 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -htri_t -H5F_addr_zerop(const haddr_t *addr) -{ - FUNC_ENTER(H5F_addr_zerop, FAIL); - FUNC_LEAVE(0 == addr->offset ? TRUE : FALSE); -} /*------------------------------------------------------------------------- * Function: H5F_addr_encode @@ -783,26 +700,26 @@ H5F_addr_zerop(const haddr_t *addr) * Friday, November 7, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ void -H5F_addr_encode(H5F_t *f, uint8_t **pp, const haddr_t *addr) +H5F_addr_encode(H5F_t *f, uint8_t **pp/*in,out*/, haddr_t addr) { uintn i; haddr_t tmp; assert(f); assert(pp && *pp); - assert(addr); - if (addr_defined(addr)) { - tmp = *addr; + if (H5F_addr_defined(addr)) { + tmp = addr; for (i=0; i<H5F_SIZEOF_ADDR(f); i++) { - *(*pp)++ = (uint8_t)(tmp.offset & 0xff); - tmp.offset >>= 8; + *(*pp)++ = (uint8_t)(tmp & 0xff); + tmp >>= 8; } - assert("overflow" && 0 == tmp.offset); + assert("overflow" && 0 == tmp); } else { for (i=0; i<H5F_SIZEOF_ADDR(f); i++) { @@ -810,6 +727,7 @@ H5F_addr_encode(H5F_t *f, uint8_t **pp, const haddr_t *addr) } } } + /*------------------------------------------------------------------------- * Function: H5F_addr_decode @@ -831,7 +749,7 @@ H5F_addr_encode(H5F_t *f, uint8_t **pp, const haddr_t *addr) *------------------------------------------------------------------------- */ void -H5F_addr_decode(H5F_t *f, const uint8_t **pp, haddr_t *addr/*out*/) +H5F_addr_decode(H5F_t *f, const uint8_t **pp/*in,out*/, haddr_t *addr_p/*out*/) { uintn i; haddr_t tmp; @@ -840,46 +758,23 @@ H5F_addr_decode(H5F_t *f, const uint8_t **pp, haddr_t *addr/*out*/) assert(f); assert(pp && *pp); - assert(addr); + assert(addr_p); - addr->offset = 0; + *addr_p = 0; for (i=0; i<H5F_SIZEOF_ADDR(f); i++) { c = *(*pp)++; if (c != 0xff) all_zero = FALSE; - if (i<sizeof(addr->offset)) { - tmp.offset = c; - tmp.offset <<= i * 8; /*use tmp to get casting right */ - addr->offset |= tmp.offset; + if (i<sizeof(*addr_p)) { + tmp = c; + tmp <<= i * 8; /*use tmp to get casting right */ + *addr_p |= tmp; } else if (!all_zero) { assert(0 == **pp); /*overflow */ } } - if (all_zero) H5F_addr_undef(addr); -} - -/*------------------------------------------------------------------------- - * Function: H5F_addr_print - * - * Purpose: Print an address - * - * Return: void - * - * Programmer: Robb Matzke - * Friday, November 7, 1997 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void -H5F_addr_print(FILE *stream, const haddr_t *addr) -{ - assert(stream); - assert(addr); - - HDfprintf(stream, "%a", addr); + if (all_zero) H5F_addr_undef(addr_p); } @@ -898,14 +793,15 @@ H5F_addr_print(FILE *stream, const haddr_t *addr) *------------------------------------------------------------------------- */ void -H5F_addr_pow2(uintn n, haddr_t *addr /*out */ ) +H5F_addr_pow2(uintn n, haddr_t *addr_p/*out*/) { - assert(addr); - assert(n < 8 * sizeof(addr->offset)); + assert(addr_p); + assert(n < 8*sizeof(haddr_t)); - addr->offset = 1; - addr->offset <<= n; + *addr_p = 1; + *addr_p <<= n; } + /*------------------------------------------------------------------------- * Function: H5F_addr_inc @@ -922,12 +818,12 @@ H5F_addr_pow2(uintn n, haddr_t *addr /*out */ ) *------------------------------------------------------------------------- */ void -H5F_addr_inc(haddr_t *addr/*in,out*/, hsize_t inc) +H5F_addr_inc(haddr_t *addr_p/*in,out*/, hsize_t inc) { - assert(addr && addr_defined(addr)); - assert(addr->offset <= addr->offset + inc); + assert(addr_p && H5F_addr_defined(*addr_p)); + assert(*addr_p <= *addr_p + inc); - addr->offset += inc; + *addr_p += inc; } @@ -946,18 +842,18 @@ H5F_addr_inc(haddr_t *addr/*in,out*/, hsize_t inc) *------------------------------------------------------------------------- */ void -H5F_addr_adj(haddr_t *addr/*in,out */, hssize_t adj) +H5F_addr_adj(haddr_t *addr_p/*in,out */, hssize_t adj) { #ifndef NDEBUG - assert(addr && addr_defined(addr)); + assert(addr_p && H5F_addr_defined(*addr_p)); if (adj>=0) { - assert(addr->offset <= addr->offset + adj); + assert(*addr_p <= *addr_p + adj); } else { - assert (addr->offset > addr->offset + adj); + assert (*addr_p > *addr_p + adj); } #endif - addr->offset += adj; + *addr_p += adj; } @@ -972,42 +868,18 @@ H5F_addr_adj(haddr_t *addr/*in,out */, hssize_t adj) * Friday, November 7, 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The A2 argument is passed by value. *------------------------------------------------------------------------- */ void -H5F_addr_add(haddr_t *a1 /*in,out */ , const haddr_t *a2) +H5F_addr_add(haddr_t *a1/*in,out*/, haddr_t a2) { - assert(a1 && addr_defined(a1)); - assert(a2 && addr_defined(a2)); - a1->offset += a2->offset; + assert(a1 && H5F_addr_defined(*a1)); + assert(H5F_addr_defined(a2)); + *a1 += a2; } - -/*------------------------------------------------------------------------- - * Function: H5F_addr_hash - * - * Purpose: Computes a hash value of an address between 0 and MOD-1, - * inclusive. - * - * Return: Success: The hash value - * - * Failure: never fails - * - * Programmer: Robb Matzke - * Friday, November 7, 1997 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -uintn -H5F_addr_hash(const haddr_t *addr, uintn mod) -{ - assert(addr && addr_defined(addr)); - assert(mod > 0); - return (unsigned)(addr->offset % mod); /*ignore file number */ -} /*------------------------------------------------------------------------- * Function: H5F_addr_pack @@ -1028,15 +900,16 @@ H5F_addr_hash(const haddr_t *addr, uintn mod) *------------------------------------------------------------------------- */ herr_t -H5F_addr_pack(H5F_t UNUSED *f, haddr_t *addr, const unsigned long objno[2]) +H5F_addr_pack(H5F_t UNUSED *f, haddr_t *addr_p/*out*/, + const unsigned long objno[2]) { assert(f); assert(objno); - assert(addr); + assert(addr_p); - addr->offset = objno[0]; + *addr_p = objno[0]; #if SIZEOF_LONG<SIZEOF_UINT64_T - addr->offset |= ((uint64_t)objno[1]) << (8*sizeof(long)); + *addr_p |= ((uint64_t)objno[1]) << (8*sizeof(long)); #endif return(SUCCEED); diff --git a/src/H5Fmpio.c b/src/H5Fmpio.c index b5f3858..11f8da5 100644 --- a/src/H5Fmpio.c +++ b/src/H5Fmpio.c @@ -104,16 +104,15 @@ static H5F_low_t *H5F_mpio_open(const char *name, H5F_search_t *key/*out*/); static herr_t H5F_mpio_close(H5F_low_t *lf, const H5F_access_t *access_parms); static herr_t H5F_mpio_read(H5F_low_t *lf, H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf/*out*/); htri_t H5F_mpio_tas_allsame(H5F_low_t *lf, hbool_t newval ); static herr_t H5F_mpio_write(H5F_low_t *lf, H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf); static herr_t H5F_mpio_flush(H5F_low_t *lf, const H5F_access_t *access_parms); -static herr_t H5F_MPIOff_to_haddr(MPI_Offset mpi_off, haddr_t *addr/*out*/); -static herr_t H5F_haddr_to_MPIOff(const haddr_t *addr, - MPI_Offset *mpi_off/*out*/); +static herr_t H5F_MPIOff_to_haddr(MPI_Offset mpi_off, haddr_t *addr_p/*out*/); +static herr_t H5F_haddr_to_MPIOff(haddr_t addr, MPI_Offset *mpi_off/*out*/); const H5F_low_class_t H5F_LOW_MPIO_g[1] = {{ H5F_mpio_access, /*access method */ @@ -125,8 +124,8 @@ const H5F_low_class_t H5F_LOW_MPIO_g[1] = {{ * in the parameter list of the write function in H5F_low_class_t * would propagate to a lot of functions that don't change that param */ (int(*)(struct H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, uint8_t *buf)) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + uint8_t *buf)) H5F_mpio_read, /*read method */ /* rky 980816 @@ -134,8 +133,8 @@ const H5F_low_class_t H5F_LOW_MPIO_g[1] = {{ * in the parameter list of the write function in H5F_low_class_t * would propagate to a lot of functions that don't change that param */ (int(*)(struct H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, const uint8_t *buf)) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + const uint8_t *buf)) H5F_mpio_write, /*write method */ H5F_mpio_flush, /*flush method */ @@ -509,15 +508,17 @@ H5F_mpio_close(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms) * The guts of H5F_mpio_read and H5F_mpio_write * should be replaced by a single dual-purpose routine. * - * Robb Matzke, 19990421 + * Robb Matzke, 1999-04-21 * Changed xfer_mode to xfer_parms for all H5F_*_read() callbacks. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_mpio_read(H5F_low_t *lf, H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, - const haddr_t *addr, size_t size, uint8_t *buf/*out*/) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + uint8_t *buf/*out*/) { MPI_Offset mpi_off, mpi_disp; MPI_Status mpi_stat; @@ -761,15 +762,17 @@ H5F_mpio_tas_allsame(H5F_low_t *lf, hbool_t newval ) * rky, 980828 * Added allsame parameter to make all but proc 0 skip the actual write. * - * Robb Matzke, 19990421 - * Changed xfer_mode to xfer_parms for all H5F_*_write() callbacks. + * Robb Matzke, 1999-04-21 + * Changed XFER_MODE to XFER_PARMS for all H5F_*_write() callbacks. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_mpio_write(H5F_low_t *lf, H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, - const haddr_t *addr, size_t size, const uint8_t *buf) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + const uint8_t *buf) { MPI_Offset mpi_off, mpi_disp; MPI_Status mpi_stat; @@ -989,11 +992,11 @@ H5F_mpio_flush(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms) *------------------------------------------------------------------------- */ static herr_t -H5F_MPIOff_to_haddr(MPI_Offset mpi_off, haddr_t *addr/*out*/) +H5F_MPIOff_to_haddr(MPI_Offset mpi_off, haddr_t *addr_p/*out*/) { FUNC_ENTER(H5F_MPIOff_to_haddr, FAIL); - if (addr) addr->offset = (uint64_t) mpi_off; + if (addr_p) *addr_p = (uint64_t) mpi_off; if (mpi_off != (MPI_Offset)(uint64_t)mpi_off) { HRETURN_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "bad MPI address"); } @@ -1020,15 +1023,17 @@ H5F_MPIOff_to_haddr(MPI_Offset mpi_off, haddr_t *addr/*out*/) * An error is reported for address overflows. The ADDR output * argument is optional. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t -H5F_haddr_to_MPIOff(const haddr_t *addr, MPI_Offset *mpi_off/*out*/) +H5F_haddr_to_MPIOff(haddr_t addr, MPI_Offset *mpi_off/*out*/) { FUNC_ENTER(H5F_haddr_to_MPIOff, FAIL); - if (mpi_off) *mpi_off = (MPI_Offset)addr->offset; - if (addr->offset != (uint64_t)(MPI_Offset)(addr->offset)) { + if (mpi_off) *mpi_off = (MPI_Offset)addr; + if (addr != (uint64_t)(MPI_Offset)(addr)) { HRETURN_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "hdf5 address overflows MPI address"); } diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h index ae0d0a6..ab5b748 100644 --- a/src/H5Fprivate.h +++ b/src/H5Fprivate.h @@ -361,11 +361,11 @@ typedef struct H5F_low_class_t { herr_t (*close)(struct H5F_low_t *lf, const H5F_access_t *access_parms); herr_t (*read)(struct H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf); herr_t (*write)(struct H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf); herr_t (*flush)(struct H5F_low_t *lf, const H5F_access_t *access_parms); @@ -611,9 +611,9 @@ __DLL__ H5F_t *H5F_open(const char *name, uintn flags, __DLL__ herr_t H5F_close(H5F_t *f); __DLL__ herr_t H5F_close_all(void); __DLL__ herr_t H5F_flush_all(hbool_t invalidate); -__DLL__ herr_t H5F_debug(H5F_t *f, const haddr_t *addr, FILE * stream, +__DLL__ herr_t H5F_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent, intn fwidth); -__DLL__ herr_t H5F_istore_debug(H5F_t *f, const haddr_t *addr, FILE * stream, +__DLL__ herr_t H5F_istore_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent, intn fwidth, int ndims); __DLL__ herr_t H5F_mountpoint(struct H5G_entry_t *find/*in,out*/); @@ -643,7 +643,7 @@ __DLL__ herr_t H5F_arr_write (H5F_t *f, const struct H5F_xfer_t *xfer, __DLL__ herr_t H5F_istore_init (H5F_t *f); __DLL__ herr_t H5F_istore_flush (H5F_t *f, hbool_t preempt); __DLL__ herr_t H5F_istore_dest (H5F_t *f); -__DLL__ hsize_t H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr); +__DLL__ hsize_t H5F_istore_allocated(H5F_t *f, int ndims, haddr_t addr); __DLL__ herr_t H5F_istore_stats (H5F_t *f, hbool_t headers); __DLL__ herr_t H5F_istore_create(H5F_t *f, struct H5O_layout_t *layout/*in,out*/); @@ -666,19 +666,19 @@ __DLL__ herr_t H5F_istore_allocate (H5F_t *f, const struct H5O_pline_t *pline, const struct H5O_fill_t *fill); __DLL__ herr_t H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims, - haddr_t *addr); + haddr_t addr); /* Functions that operate on contiguous storage wrt boot block */ -__DLL__ herr_t H5F_block_read(H5F_t *f, const haddr_t *addr, hsize_t size, +__DLL__ herr_t H5F_block_read(H5F_t *f, haddr_t addr, hsize_t size, const H5F_xfer_t *xfer_parms, void *buf); -__DLL__ herr_t H5F_block_write(H5F_t *f, const haddr_t *addr, hsize_t size, +__DLL__ herr_t H5F_block_write(H5F_t *f, haddr_t addr, hsize_t size, const H5F_xfer_t *xfer_parms, const void *buf); /* Functions that operate directly on low-level files */ __DLL__ const H5F_low_class_t *H5F_low_class (H5F_driver_t driver); __DLL__ herr_t H5F_low_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, hsize_t size, haddr_t *addr/*out*/); -__DLL__ herr_t H5F_low_seteof(H5F_low_t *lf, const haddr_t *addr); +__DLL__ herr_t H5F_low_seteof(H5F_low_t *lf, haddr_t addr); __DLL__ intn H5F_low_alloc (H5F_low_t *lf, intn op, hsize_t alignment, hsize_t threshold, hsize_t size, H5MF_free_t *blk, haddr_t *addr/*out*/); @@ -692,35 +692,45 @@ __DLL__ H5F_low_t *H5F_low_close(H5F_low_t *lf, const H5F_access_t *access_parms); __DLL__ hsize_t H5F_low_size(H5F_low_t *lf, haddr_t *addr); __DLL__ herr_t H5F_low_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf); __DLL__ herr_t H5F_low_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf); __DLL__ herr_t H5F_low_flush(H5F_low_t *lf, const H5F_access_t *access_parms); -/* Functions that operate on addresses */ -#define H5F_addr_eq(A1,A2) (H5F_addr_cmp(A1,A2)==0) -#define H5F_addr_ne(A1,A2) (H5F_addr_cmp(A1,A2)!=0) -#define H5F_addr_lt(A1,A2) (H5F_addr_cmp(A1,A2)<0) -#define H5F_addr_le(A1,A2) (H5F_addr_cmp(A1,A2)<=0) -#define H5F_addr_gt(A1,A2) (H5F_addr_cmp(A1,A2)>0) -#define H5F_addr_ge(A1,A2) (H5F_addr_cmp(A1,A2)>=0) - -__DLL__ intn H5F_addr_cmp(const haddr_t *, const haddr_t *); -__DLL__ htri_t H5F_addr_defined(const haddr_t *); -__DLL__ void H5F_addr_undef(haddr_t *); -__DLL__ void H5F_addr_reset(haddr_t *); -__DLL__ htri_t H5F_addr_zerop(const haddr_t *); -__DLL__ void H5F_addr_encode(H5F_t *, uint8_t **, const haddr_t *); -__DLL__ void H5F_addr_decode(H5F_t *, const uint8_t **, haddr_t *); -__DLL__ void H5F_addr_print(FILE *, const haddr_t *); -__DLL__ void H5F_addr_pow2(uintn, haddr_t *); +/* Address-related macros and functions */ +#define H5F_ADDR_UNDEF ((uint64_t)(-1L)) +#define H5F_addr_defined(X) (X!=H5F_ADDR_UNDEF) +#define H5F_addr_hash(X,M) ((unsigned)((X)%(M))) +#define H5F_addr_eq(X,Y) ((X)!=H5F_ADDR_UNDEF && \ + (Y)!=H5F_ADDR_UNDEF && \ + (X)==(Y)) +#define H5F_addr_ne(X,Y) (!H5F_addr_eq((X),(Y))) +#define H5F_addr_lt(X,Y) ((X)!=H5F_ADDR_UNDEF && \ + (Y)!=H5F_ADDR_UNDEF && \ + (X)<(Y)) +#define H5F_addr_le(X,Y) ((X)!=H5F_ADDR_UNDEF && \ + (Y)!=H5F_ADDR_UNDEF && \ + (X)<=(Y)) +#define H5F_addr_gt(X,Y) ((X)!=H5F_ADDR_UNDEF && \ + (Y)!=H5F_ADDR_UNDEF && \ + (X)>(Y)) +#define H5F_addr_ge(X,Y) ((X)!=H5F_ADDR_UNDEF && \ + (Y)!=H5F_ADDR_UNDEF && \ + (X)>=(Y)) +#define H5F_addr_undef(XP) (*(XP)=H5F_ADDR_UNDEF) +#define H5F_addr_reset(XP) (*(XP)=0) +#define H5F_addr_zerop(X) ((X)==0) __DLL__ void H5F_addr_inc(haddr_t *addr/*in,out*/, hsize_t inc); -__DLL__ void H5F_addr_adj(haddr_t *addr/*in,out*/, hssize_t adj); -__DLL__ void H5F_addr_add(haddr_t *, const haddr_t *); -__DLL__ uintn H5F_addr_hash(const haddr_t *, uintn mod); -__DLL__ herr_t H5F_addr_pack(H5F_t *f, haddr_t *addr, +__DLL__ void H5F_addr_encode(H5F_t *, uint8_t**/*in,out*/, haddr_t); +__DLL__ void H5F_addr_decode(H5F_t *, const uint8_t**/*in,out*/, + haddr_t*/*out*/); +__DLL__ void H5F_addr_pow2(uintn n, haddr_t *addr/*out*/); +__DLL__ void H5F_addr_add(haddr_t *a1/*in,out*/, haddr_t a2); +__DLL__ intn H5F_addr_cmp(haddr_t a1, haddr_t a2); +__DLL__ void H5F_addr_adj(haddr_t *addr/*in,out */, hssize_t adj); +__DLL__ herr_t H5F_addr_pack(H5F_t UNUSED *f, haddr_t *addr_p/*out*/, const unsigned long objno[2]); /* Functions for MPI-IO */ diff --git a/src/H5Fsec2.c b/src/H5Fsec2.c index add8e1f..cacbff2 100644 --- a/src/H5Fsec2.c +++ b/src/H5Fsec2.c @@ -28,10 +28,10 @@ static H5F_low_t *H5F_sec2_open(const char *name, H5F_search_t *key/*out*/); static herr_t H5F_sec2_close(H5F_low_t *lf, const H5F_access_t *access_parms); static herr_t H5F_sec2_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf/*out*/); static herr_t H5F_sec2_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf); const H5F_low_class_t H5F_LOW_SEC2_g[1] = {{ @@ -93,7 +93,7 @@ H5F_sec2_open(const char *name, const H5F_access_t UNUSED *access_parms, lf->u.sec2.op = H5F_OP_SEEK; lf->u.sec2.cur = 0; HDfstat(fd, &sb); - lf->eof.offset = sb.st_size; + lf->eof = sb.st_size; if (key) { #if WIN32 @@ -179,15 +179,17 @@ H5F_sec2_close(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms) * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_sec2_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, - const H5F_xfer_t UNUSED *xfer_parms, const haddr_t *addr, - size_t size, uint8_t *buf) + const H5F_xfer_t UNUSED *xfer_parms, haddr_t addr, size_t size, + uint8_t *buf) { ssize_t n; uint64_t mask; @@ -201,20 +203,20 @@ H5F_sec2_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, /* Check for overflow */ mask = (uint64_t)1 << (8*sizeof(offset)-1); - if (addr->offset >= mask || - addr->offset+size < addr->offset || - addr->offset+size >= mask) { + if (addr >= mask || + addr+size < addr || + addr+size >= mask) { HRETURN_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed"); } #ifdef HAVE_LSEEK64 - offset = (off64_t)(addr->offset); /*checked for overflow above*/ + offset = (off64_t)(addr); /*checked for overflow above*/ #else - offset = (off_t)(addr->offset); /*checked for overflow above*/ + offset = (off_t)(addr); /*checked for overflow above*/ #endif /* Check easy cases */ if (0 == size) HRETURN(SUCCEED); - if ((uint64_t)offset >= lf->eof.offset) { + if ((uint64_t)offset >= lf->eof) { HDmemset(buf, 0, size); HRETURN(SUCCEED); } @@ -241,8 +243,8 @@ H5F_sec2_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, /* * Read zeros past the logical end of file (physical is handled below) */ - if ((size_t) offset + size > lf->eof.offset) { - size_t nbytes = (size_t)offset + size - lf->eof.offset; + if ((size_t) offset + size > lf->eof) { + size_t nbytes = (size_t)offset + size - lf->eof; HDmemset(buf + size - nbytes, 0, nbytes); size -= nbytes; } @@ -284,15 +286,17 @@ H5F_sec2_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_sec2_write(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, - const H5F_xfer_t UNUSED *xfer_parms, const haddr_t *addr, - size_t size, const uint8_t *buf) + const H5F_xfer_t UNUSED *xfer_parms, haddr_t addr, size_t size, + const uint8_t *buf) { uint64_t mask; ssize_t n; @@ -306,16 +310,16 @@ H5F_sec2_write(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, /* Check for overflow */ mask = (uint64_t)1 << (8*sizeof(offset)-1); - if (addr->offset >= mask || - addr->offset+size < addr->offset || - addr->offset+size >= mask) { + if (addr >= mask || + addr+size < addr || + addr+size >= mask) { HRETURN_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed"); } #ifdef HAVE_LSEEK64 - offset = (off64_t)(addr->offset); /*checked for overflow*/ + offset = (off64_t)(addr); /*checked for overflow*/ n = (off64_t)size; /*checked for overflow*/ #else - offset = (off_t)(addr->offset); /*checked for overflow*/ + offset = (off_t)(addr); /*checked for overflow*/ n = (off_t)size; /*checked for overflow*/ #endif diff --git a/src/H5Fsplit.c b/src/H5Fsplit.c index 13dcc06..8d3a8f9 100644 --- a/src/H5Fsplit.c +++ b/src/H5Fsplit.c @@ -33,12 +33,11 @@ static H5F_low_t *H5F_split_open(const char *name, H5F_search_t *key/*out*/); static herr_t H5F_split_close(H5F_low_t *lf, const H5F_access_t *access_parms); static herr_t H5F_split_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf/*out*/); static herr_t H5F_split_write(H5F_low_t *lf, const H5F_access_t *access_parms, const H5F_xfer_t *xfer_parms, - const haddr_t *addr, size_t size, - const uint8_t *buf); + haddr_t addr, size_t size, const uint8_t *buf); static herr_t H5F_split_flush(H5F_low_t *lf, const H5F_access_t *access_parms); static herr_t H5F_split_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, hsize_t size, haddr_t *addr/*out*/); @@ -148,7 +147,7 @@ H5F_split_open(const char *name, const H5F_access_t *access_parms, /* Initialize the file size */ H5F_low_size(lf->u.split.raw, &(lf->eof)); - lf->eof.offset |= lf->u.split.mask; + lf->eof |= lf->u.split.mask; HRETURN(lf); @@ -204,15 +203,17 @@ H5F_split_close(H5F_low_t *lf, const H5F_access_t *access_parms) * Monday, November 13, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_split_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, uint8_t *buf/*out*/) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + uint8_t *buf/*out*/) { haddr_t tmp_addr; H5F_low_t *sub = NULL; @@ -222,24 +223,24 @@ H5F_split_read(H5F_low_t *lf, const H5F_access_t *access_parms, FUNC_ENTER(H5F_split_read, FAIL); assert(lf); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); /* no collective support */ assert(xfer_parms->xfer_mode != H5D_XFER_COLLECTIVE); /* Which file to we actually read from? */ - if (addr->offset & lf->u.split.mask) { + if (addr & lf->u.split.mask) { sub = lf->u.split.raw; sub_parms = access_parms->u.split.raw_access; - tmp_addr.offset = addr->offset & (lf->u.split.mask - 1); + tmp_addr = addr & (lf->u.split.mask - 1); } else { sub = lf->u.split.meta; sub_parms = access_parms->u.split.meta_access; - tmp_addr = *addr; + tmp_addr = addr; } /* Read the data */ - status = H5F_low_read(sub, sub_parms, xfer_parms, &tmp_addr, size, + status = H5F_low_read(sub, sub_parms, xfer_parms, tmp_addr, size, buf/*out*/); FUNC_LEAVE(status); } @@ -256,15 +257,17 @@ H5F_split_read(H5F_low_t *lf, const H5F_access_t *access_parms, * Monday, November 13, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_split_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, - size_t size, const uint8_t *buf) + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, + const uint8_t *buf) { haddr_t tmp_addr; H5F_low_t *sub = NULL; @@ -274,24 +277,24 @@ H5F_split_write(H5F_low_t *lf, const H5F_access_t *access_parms, FUNC_ENTER(H5F_split_write, FAIL); assert(lf); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); /* no collective support */ assert(xfer_parms->xfer_mode != H5D_XFER_COLLECTIVE); /* Which file to we actually write to? */ - if (addr->offset & lf->u.split.mask) { + if (addr & lf->u.split.mask) { sub = lf->u.split.raw; sub_parms = access_parms->u.split.raw_access; - tmp_addr.offset = addr->offset & (lf->u.split.mask - 1); + tmp_addr = addr & (lf->u.split.mask - 1); } else { sub = lf->u.split.meta; sub_parms = access_parms->u.split.meta_access; - tmp_addr = *addr; + tmp_addr = addr; } /* Write the data */ - status = H5F_low_write(sub, sub_parms, xfer_parms, &tmp_addr, size, buf); + status = H5F_low_write(sub, sub_parms, xfer_parms, tmp_addr, size, buf); FUNC_LEAVE(status); } @@ -408,7 +411,7 @@ H5F_split_access(const char *name, const H5F_access_t *access_parms, * data file. * * Return: Non-negative on success (with the address of the allocated - * memory returned through the ADDR argument.) /Negative + * memory returned through the ADDR_P argument.) /Negative * on failure * * Programmer: Robb Matzke @@ -420,33 +423,33 @@ H5F_split_access(const char *name, const H5F_access_t *access_parms, */ static herr_t H5F_split_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, - hsize_t size, haddr_t *addr/*out*/) + hsize_t size, haddr_t *addr_p/*out*/) { FUNC_ENTER(H5F_split_extend, FAIL); assert(lf); assert(H5MF_META == op || H5MF_RAW == op); assert(size > 0); - assert(addr); + assert(addr_p); if (H5MF_META == op) { if (H5F_low_extend(lf->u.split.meta, access_parms->u.split.meta_access, - op, size, addr/*out*/)<0) { + op, size, addr_p/*out*/)<0) { HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "meta data allocation failed"); } - if (addr->offset + size > lf->eof.offset) { - lf->eof.offset = addr->offset + size; + if (*addr_p + size > lf->eof) { + lf->eof = *addr_p + size; } } else { if (H5F_low_extend(lf->u.split.raw, access_parms->u.split.raw_access, - op, size, addr/*out*/)<0) { + op, size, addr_p/*out*/)<0) { HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "raw data allocation failed"); } - addr->offset |= lf->u.split.mask; + *addr_p |= lf->u.split.mask; lf->eof = lf->u.split.raw->eof; - lf->eof.offset |= lf->u.split.mask; + lf->eof |= lf->u.split.mask; } FUNC_LEAVE(SUCCEED); @@ -465,7 +468,7 @@ H5F_split_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, * * Return: Success: Positive if the free block satisfies the * request exactly, zero if the free block - * over-satisfies the request. The ADDR will + * over-satisfies the request. The ADDR_P will * contain the address within the free block * where the request starts. * @@ -480,7 +483,7 @@ H5F_split_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op, */ static intn H5F_split_alloc (H5F_low_t *lf, intn op, hsize_t alignment, hsize_t threshold, - hsize_t size, H5MF_free_t *blk, haddr_t *addr/*out*/) + hsize_t size, H5MF_free_t *blk, haddr_t *addr_p/*out*/) { intn ret_value = FAIL; hsize_t wasted; @@ -490,30 +493,30 @@ H5F_split_alloc (H5F_low_t *lf, intn op, hsize_t alignment, hsize_t threshold, assert (alignment>0); assert (size>0); assert (blk); - assert (addr); + assert (addr_p); switch (op) { case H5MF_META: - if (blk->addr.offset & lf->u.split.mask) HRETURN(FAIL); + if (blk->addr & lf->u.split.mask) HRETURN(FAIL); break; case H5MF_RAW: - if (0==(blk->addr.offset & lf->u.split.mask)) HRETURN(FAIL); + if (0==(blk->addr & lf->u.split.mask)) HRETURN(FAIL); break; } if (size>=threshold) { - wasted = blk->addr.offset % alignment; + wasted = blk->addr % alignment; } else { wasted = 0; } if (0==wasted && size==blk->size) { /* exact match */ - *addr = blk->addr; + *addr_p = blk->addr; ret_value = 1; } else if (blk->size>wasted && blk->size-wasted>=size) { /* over-satisfied */ - *addr = blk->addr; - H5F_addr_inc (addr, wasted); + *addr_p = blk->addr; + H5F_addr_inc (addr_p, wasted); ret_value = 0; } diff --git a/src/H5Fstdio.c b/src/H5Fstdio.c index 6f3e059..5804a92 100644 --- a/src/H5Fstdio.c +++ b/src/H5Fstdio.c @@ -22,12 +22,11 @@ static H5F_low_t *H5F_stdio_open(const char *name, H5F_search_t *key/*out*/); static herr_t H5F_stdio_close(H5F_low_t *lf, const H5F_access_t *access_parms); static herr_t H5F_stdio_read(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, const haddr_t *addr, + const H5F_xfer_t *xfer_parms, haddr_t addr, size_t size, uint8_t *buf/*out*/); static herr_t H5F_stdio_write(H5F_low_t *lf, const H5F_access_t *access_parms, - const H5F_xfer_t *xfer_parms, - const haddr_t *addr, size_t size, - const uint8_t *buf); + const H5F_xfer_t *xfer_parms, haddr_t addr, + size_t size, const uint8_t *buf); static herr_t H5F_stdio_flush(H5F_low_t *lf, const H5F_access_t *access_parms); const H5F_low_class_t H5F_LOW_STDIO_g[1] = {{ @@ -175,14 +174,16 @@ H5F_stdio_close(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms) * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_stdio_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, - const H5F_xfer_t UNUSED *xfer_parms, const haddr_t *addr, + const H5F_xfer_t UNUSED *xfer_parms, haddr_t addr, size_t size, uint8_t *buf/*out*/) { size_t n; @@ -197,20 +198,20 @@ H5F_stdio_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, /* Check for overflow */ mask = (uint64_t)1 << (8*sizeof(offset)-1); - if (addr->offset >= mask || - addr->offset + size < addr->offset || - addr->offset+size >= mask) { + if (addr >= mask || + addr + size < addr || + addr+size >= mask) { HRETURN_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed"); } #ifdef HAVE_FSEEK64 - offset = (int64_t)(addr->offset); /*checked for overflow*/ + offset = (int64_t)(addr); /*checked for overflow*/ #else - offset = (long)(addr->offset); /*checked for overflow*/ + offset = (long)(addr); /*checked for overflow*/ #endif /* Check easy cases */ if (0 == size) HRETURN(SUCCEED); - if ((uint64_t)offset >= lf->eof.offset) { + if ((uint64_t)offset >= lf->eof) { HDmemset(buf, 0, size); HRETURN(SUCCEED); } @@ -236,8 +237,8 @@ H5F_stdio_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, /* * Read zeros past the logical end of file (physical is handled below) */ - if ((size_t) offset + size > lf->eof.offset) { - size_t nbytes = (size_t) offset + size - lf->eof.offset; + if ((size_t) offset + size > lf->eof) { + size_t nbytes = (size_t) offset + size - lf->eof; HDmemset(buf + size - nbytes, 0, nbytes); size -= nbytes; } @@ -284,14 +285,16 @@ H5F_stdio_read(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, * Wednesday, October 22, 1997 * * Modifications: - * June 2, 1998 Albert Cheng - * Added xfer_mode argument + * Albert Cheng, 1998-06-02 + * Added XFER_MODE argument. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t H5F_stdio_write(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, - const H5F_xfer_t UNUSED *xfer_parms, const haddr_t *addr, + const H5F_xfer_t UNUSED *xfer_parms, haddr_t addr, size_t size, const uint8_t *buf) { uint64_t mask; @@ -307,16 +310,16 @@ H5F_stdio_write(H5F_low_t *lf, const H5F_access_t UNUSED *access_parms, /* Check for overflow */ mask = (uint64_t)1 << (8*sizeof(offset)-1); - if (addr->offset >= mask || - addr->offset+size < addr->offset || - addr->offset+size >= mask) { + if (addr >= mask || + addr+size < addr || + addr+size >= mask) { HRETURN_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed"); } #ifdef HAVE_FSEEK64 - offset = (int64_t)(addr->offset); /*checked for overflow*/ + offset = (int64_t)(addr); /*checked for overflow*/ n = size; /*checked for overflow*/ #else - offset = (long)(addr->offset); /*checked for overflow*/ + offset = (long)(addr); /*checked for overflow*/ n = size; /*checked for overflow*/ #endif @@ -318,7 +318,7 @@ H5Giterate(hid_t loc_id, const char *name, int *idx, /* Iterate over the group members */ if ((ret_value = H5B_iterate (H5G_fileof(udata.group), H5B_SNODE, - &(udata.group->ent.cache.stab.btree_addr), + udata.group->ent.cache.stab.btree_addr, &udata))<0) { HERROR (H5E_SYM, H5E_CANTINIT, "iteration operator failed"); } @@ -1124,7 +1124,7 @@ H5G_traverse_slink (H5G_entry_t *grp_ent/*in,out*/, HGOTO_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL, "unable to determine local heap address"); } - if (NULL==(clv=H5HL_peek (grp_ent->file, &(stab_mesg.heap_addr), + if (NULL==(clv=H5HL_peek (grp_ent->file, stab_mesg.heap_addr, obj_ent->cache.slink.lval_offset))) { HGOTO_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL, "unable to read symbolic link value"); @@ -1268,7 +1268,7 @@ H5G_create(H5G_entry_t *loc, const char *name, size_t size_hint) HRETURN_ERROR(H5E_SYM, H5E_EXISTS, NULL, "already exists"); } H5E_clear(); /*it's OK that we didn't find it */ - assert(H5F_addr_defined(&(grp_ent.header))); + assert(H5F_addr_defined(grp_ent.header)); /* should be one null-terminated component left */ rest = H5G_component(rest, &nchars); @@ -1913,7 +1913,7 @@ H5G_link (H5G_entry_t *loc, H5G_link_t type, const char *cur_name, "unable to determine local heap address"); } if ((size_t)(-1)==(offset=H5HL_insert (grp_ent.file, - &(stab_mesg.heap_addr), + stab_mesg.heap_addr, HDstrlen(cur_name)+1, cur_name))) { HRETURN_ERROR (H5E_SYM, H5E_CANTINIT, FAIL, @@ -2053,7 +2053,7 @@ H5G_get_objinfo (H5G_entry_t *loc, const char *name, hbool_t follow_link, if (H5G_CACHED_SLINK==obj_ent.type) { /* Named object is a symbolic link */ if (NULL==H5O_read (&grp_ent, H5O_STAB, 0, &stab_mesg) || - NULL==(s=H5HL_peek (grp_ent.file, &(stab_mesg.heap_addr), + NULL==(s=H5HL_peek (grp_ent.file, stab_mesg.heap_addr, obj_ent.cache.slink.lval_offset))) { HRETURN_ERROR (H5E_SYM, H5E_CANTINIT, FAIL, "unable to read symbolic link value"); @@ -2066,9 +2066,9 @@ H5G_get_objinfo (H5G_entry_t *loc, const char *name, hbool_t follow_link, } else { /* Some other type of object */ - statbuf->objno[0] = (unsigned long)(obj_ent.header.offset); + statbuf->objno[0] = (unsigned long)(obj_ent.header); #if SIZEOF_UINT64_T>SIZEOF_LONG - statbuf->objno[1] = (unsigned long)(obj_ent.header.offset >> + statbuf->objno[1] = (unsigned long)(obj_ent.header >> 8*sizeof(long)); #else statbuf->objno[1] = 0; @@ -2139,7 +2139,7 @@ H5G_linkval (H5G_entry_t *loc, const char *name, size_t size, char *buf/*out*/) HRETURN_ERROR (H5E_SYM, H5E_CANTINIT, FAIL, "unable to determine local heap address"); } - if (NULL==(s=H5HL_peek (grp_ent.file, &(stab_mesg.heap_addr), + if (NULL==(s=H5HL_peek (grp_ent.file, stab_mesg.heap_addr, obj_ent.cache.slink.lval_offset))) { HRETURN_ERROR (H5E_SYM, H5E_CANTINIT, FAIL, "unable to read symbolic link value"); @@ -2277,7 +2277,7 @@ H5G_unlink(H5G_entry_t *loc, const char *name) H5G_TARGET_SLINK|H5G_TARGET_MOUNT, NULL)<0) { HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "object not found"); } - if (!H5F_addr_defined(&(grp_ent.header))) { + if (!H5F_addr_defined(grp_ent.header)) { HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "no containing group specified"); } diff --git a/src/H5Gent.c b/src/H5Gent.c index f46e8a3..06ebe24 100644 --- a/src/H5Gent.c +++ b/src/H5Gent.c @@ -274,7 +274,7 @@ H5G_ent_encode(H5F_t *f, uint8_t **pp, const H5G_entry_t *ent) if (ent) { /* encode header */ H5F_encode_length(f, *pp, ent->name_off); - H5F_addr_encode(f, pp, &(ent->header)); + H5F_addr_encode(f, pp, ent->header); UINT32ENCODE(*pp, ent->type); UINT32ENCODE(*pp, 0); /*reserved*/ @@ -285,8 +285,8 @@ H5G_ent_encode(H5F_t *f, uint8_t **pp, const H5G_entry_t *ent) case H5G_CACHED_STAB: assert(2 * H5F_SIZEOF_ADDR(f) <= H5G_SIZEOF_SCRATCH); - H5F_addr_encode(f, pp, &(ent->cache.stab.btree_addr)); - H5F_addr_encode(f, pp, &(ent->cache.stab.heap_addr)); + H5F_addr_encode(f, pp, ent->cache.stab.btree_addr); + H5F_addr_encode(f, pp, ent->cache.stab.heap_addr); break; case H5G_CACHED_SLINK: @@ -297,19 +297,16 @@ H5G_ent_encode(H5F_t *f, uint8_t **pp, const H5G_entry_t *ent) HDabort(); } } else { - haddr_t undef; H5F_encode_length(f, *pp, 0); - H5F_addr_undef(&undef); - H5F_addr_encode(f, pp, &undef); + H5F_addr_encode(f, pp, H5F_ADDR_UNDEF); UINT32ENCODE(*pp, H5G_NOTHING_CACHED); UINT32ENCODE(*pp, 0); /*reserved*/ } /* fill with zero */ - while (*pp < p_ret) - *(*pp)++ = 0; - + while (*pp < p_ret) *(*pp)++ = 0; *pp = p_ret; + FUNC_LEAVE(SUCCEED); } @@ -327,65 +324,60 @@ H5G_ent_encode(H5F_t *f, uint8_t **pp, const H5G_entry_t *ent) * Aug 29 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The HEAP argument is passed by value. *------------------------------------------------------------------------- */ herr_t H5G_ent_debug(H5F_t UNUSED *f, const H5G_entry_t *ent, FILE * stream, - intn indent, intn fwidth, const haddr_t *heap) + intn indent, intn fwidth, haddr_t heap) { const char *lval = NULL; FUNC_ENTER(H5G_ent_debug, FAIL); - fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Name offset into private heap:", - (unsigned long) (ent->name_off)); + HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Name offset into private heap:", + (unsigned long) (ent->name_off)); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Object header address:"); - H5F_addr_print(stream, &(ent->header)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "Object header address:", ent->header); - fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, - "Dirty:", - ent->dirty ? "Yes" : "No"); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Symbol type:"); + HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Dirty:", + ent->dirty ? "Yes" : "No"); + HDfprintf(stream, "%*s%-*s ", indent, "", fwidth, + "Symbol type:"); switch (ent->type) { case H5G_NOTHING_CACHED: - fprintf(stream, "Nothing Cached\n"); + HDfprintf(stream, "Nothing Cached\n"); break; case H5G_CACHED_STAB: - fprintf(stream, "Symbol Table\n"); + HDfprintf(stream, "Symbol Table\n"); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "B-tree address:"); - H5F_addr_print(stream, &(ent->cache.stab.btree_addr)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "B-tree address:", ent->cache.stab.btree_addr); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Heap address:"); - H5F_addr_print(stream, &(ent->cache.stab.heap_addr)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "Heap address:", ent->cache.stab.heap_addr); break; case H5G_CACHED_SLINK: - fprintf (stream, "Symbolic Link\n"); - fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Link value offset:", - (unsigned long)(ent->cache.slink.lval_offset)); - if (heap && H5F_addr_defined (heap)) { + HDfprintf (stream, "Symbolic Link\n"); + HDfprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Link value offset:", + (unsigned long)(ent->cache.slink.lval_offset)); + if (H5F_addr_defined(heap)) { lval = H5HL_peek (ent->file, heap, ent->cache.slink.lval_offset); - fprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, - "Link value:", - lval); + HDfprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, + "Link value:", + lval); } break; default: - fprintf(stream, "*** Unknown symbol type %d\n", ent->type); + HDfprintf(stream, "*** Unknown symbol type %d\n", ent->type); break; } 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); diff --git a/src/H5Gprivate.h b/src/H5Gprivate.h index 3920d55..d777c79 100644 --- a/src/H5Gprivate.h +++ b/src/H5Gprivate.h @@ -155,8 +155,8 @@ __DLL__ herr_t H5G_ent_decode(H5F_t *f, const uint8_t **pp, /* * These functions operate on symbol table nodes. */ -__DLL__ herr_t H5G_node_debug(H5F_t *f, const haddr_t *addr, FILE * stream, - intn indent, intn fwidth, const haddr_t *heap); +__DLL__ herr_t H5G_node_debug(H5F_t *f, haddr_t addr, FILE *stream, + intn indent, intn fwidth, haddr_t heap); /* * These functions operate on symbol table entries. They're used primarily @@ -166,5 +166,5 @@ __DLL__ herr_t H5G_node_debug(H5F_t *f, const haddr_t *addr, FILE * stream, __DLL__ H5G_cache_t *H5G_ent_cache(H5G_entry_t *ent, H5G_type_t *cache_type); __DLL__ herr_t H5G_ent_modified(H5G_entry_t *ent, H5G_type_t cache_type); __DLL__ herr_t H5G_ent_debug(H5F_t *f, const H5G_entry_t *ent, FILE * stream, - intn indent, intn fwidth, const haddr_t *heap); + intn indent, intn fwidth, haddr_t heap); #endif diff --git a/src/H5Gstab.c b/src/H5Gstab.c index 773c564..2b48712 100644 --- a/src/H5Gstab.c +++ b/src/H5Gstab.c @@ -63,7 +63,7 @@ H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) if (H5HL_create(f, init, &(stab.heap_addr)/*out*/)<0) { HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create heap"); } - name = H5HL_insert(f, &(stab.heap_addr), 1, ""); + name = H5HL_insert(f, stab.heap_addr, 1, ""); if ((size_t)(-1)==name) { HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't initialize heap"); } @@ -75,7 +75,7 @@ H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) assert(0 == name); /* Create the B-tree */ - if (H5B_create(f, H5B_SNODE, NULL, &(stab.btree_addr) /*out */ ) < 0) { + if (H5B_create(f, H5B_SNODE, NULL, &(stab.btree_addr)/*out*/) < 0) { HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create B-tree"); } @@ -84,7 +84,7 @@ H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) * since nothing refers to it yet. The link count will be * incremented if the object is added to the group directed graph. */ - if (H5O_create(f, 4 + 2 * H5F_SIZEOF_ADDR(f), self /*out */ ) < 0) { + if (H5O_create(f, 4 + 2 * H5F_SIZEOF_ADDR(f), self/*out*/) < 0) { HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create header"); } @@ -146,7 +146,7 @@ H5G_stab_find(H5G_entry_t *grp_ent, const char *name, udata.heap_addr = stab.heap_addr; /* search the B-tree */ - if (H5B_find(grp_ent->file, H5B_SNODE, &(stab.btree_addr), &udata) < 0) { + if (H5B_find(grp_ent->file, H5B_SNODE, stab.btree_addr, &udata) < 0) { HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "not found"); } if (obj_ent) *obj_ent = udata.ent; @@ -200,7 +200,7 @@ H5G_stab_insert(H5G_entry_t *grp_ent, const char *name, H5G_entry_t *obj_ent) udata.ent = *obj_ent; /* insert */ - if (H5B_insert(grp_ent->file, H5B_SNODE, &(stab.btree_addr), split_ratios, + if (H5B_insert(grp_ent->file, H5B_SNODE, stab.btree_addr, split_ratios, &udata) < 0) { HRETURN_ERROR(H5E_SYM, H5E_CANTINSERT, FAIL, "unable to insert entry"); } @@ -245,7 +245,7 @@ H5G_stab_remove(H5G_entry_t *grp_ent, const char *name) HDmemset(&(udata.ent), 0, sizeof(udata.ent)); /* remove */ - if (H5B_remove(grp_ent->file, H5B_SNODE, &(stab.btree_addr), &udata)<0) { + if (H5B_remove(grp_ent->file, H5B_SNODE, stab.btree_addr, &udata)<0) { HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to remove entry"); } @@ -49,9 +49,9 @@ struct H5HG_heap_t { }; /* PRIVATE PROTOTYPES */ -static H5HG_heap_t *H5HG_load(H5F_t *f, const haddr_t *addr, - const void *udata1, void *udata2); -static herr_t H5HG_flush(H5F_t *f, hbool_t dest, const haddr_t *addr, +static H5HG_heap_t *H5HG_load(H5F_t *f, haddr_t addr, const void *udata1, + void *udata2); +static herr_t H5HG_flush(H5F_t *f, hbool_t dest, haddr_t addr, H5HG_heap_t *heap); /* @@ -59,8 +59,8 @@ static herr_t H5HG_flush(H5F_t *f, hbool_t dest, const haddr_t *addr, */ static const H5AC_class_t H5AC_GHEAP[1] = {{ H5AC_GHEAP_ID, - (void *(*)(H5F_t*, const haddr_t*, const void*, void*))H5HG_load, - (herr_t (*)(H5F_t*, hbool_t, const haddr_t*, void*))H5HG_flush, + (void *(*)(H5F_t*, haddr_t, const void*, void*))H5HG_load, + (herr_t (*)(H5F_t*, hbool_t, haddr_t, void*))H5HG_flush, }}; /* Interface initialization */ @@ -156,7 +156,7 @@ H5HG_create (H5F_t *f, size_t size) HDmemset (p, 0, (size_t)((heap->chunk+heap->size) - p)); /* Add the heap to the cache */ - if (H5AC_set (f, H5AC_GHEAP, &addr, heap)<0) { + if (H5AC_set (f, H5AC_GHEAP, addr, heap)<0) { HGOTO_ERROR (H5E_HEAP, H5E_CANTINIT, NULL, "unable to cache global heap collection"); } @@ -202,11 +202,12 @@ H5HG_create (H5F_t *f, size_t size) * Friday, March 27, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static H5HG_heap_t * -H5HG_load (H5F_t *f, const haddr_t *addr, const void UNUSED *udata1, +H5HG_load (H5F_t *f, haddr_t addr, const void UNUSED *udata1, void UNUSED *udata2) { H5HG_heap_t *heap = NULL; @@ -219,7 +220,7 @@ H5HG_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 (!udata2); @@ -228,7 +229,7 @@ H5HG_load (H5F_t *f, const haddr_t *addr, const void UNUSED *udata1, HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); } - heap->addr = *addr; + heap->addr = addr; if (NULL==(heap->chunk = H5MM_malloc (H5HG_MINSIZE))) { HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); @@ -264,13 +265,13 @@ H5HG_load (H5F_t *f, const haddr_t *addr, const void UNUSED *udata1, * collection now. */ if (heap->size > H5HG_MINSIZE) { - haddr_t next_addr = *addr; + haddr_t next_addr = addr; H5F_addr_inc (&next_addr, (hsize_t)H5HG_MINSIZE); if (NULL==(heap->chunk = H5MM_realloc (heap->chunk, heap->size))) { HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); } - if (H5F_block_read (f, &next_addr, (hsize_t)(heap->size-H5HG_MINSIZE), + if (H5F_block_read (f, next_addr, (hsize_t)(heap->size-H5HG_MINSIZE), &H5F_xfer_dflt, heap->chunk+H5HG_MINSIZE)<0) { HGOTO_ERROR (H5E_HEAP, H5E_READERROR, NULL, "unable to read global heap collection"); @@ -377,11 +378,12 @@ H5HG_load (H5F_t *f, const haddr_t *addr, const void UNUSED *udata1, * Friday, March 27, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static herr_t -H5HG_flush (H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HG_heap_t *heap) +H5HG_flush (H5F_t *f, hbool_t destroy, haddr_t addr, H5HG_heap_t *heap) { int i; @@ -389,8 +391,8 @@ H5HG_flush (H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HG_heap_t *heap) /* Check arguments */ assert (f); - assert (addr && H5F_addr_defined (addr)); - assert (H5F_addr_eq (addr, &(heap->addr))); + assert (H5F_addr_defined (addr)); + assert (H5F_addr_eq (addr, heap->addr)); assert (heap); if (heap->dirty) { @@ -643,7 +645,7 @@ H5HG_peek (H5F_t *f, H5HG_t *hobj) assert (hobj); /* Load the heap and return a pointer to the object */ - if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, &(hobj->addr), NULL, NULL))) { + if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, hobj->addr, NULL, NULL))) { HRETURN_ERROR (H5E_HEAP, H5E_CANTLOAD, NULL, "unable to load heap"); } assert (hobj->idx>0 && hobj->idx<heap->nalloc); @@ -704,7 +706,7 @@ H5HG_read (H5F_t *f, H5HG_t *hobj, void *object/*out*/) assert (hobj); /* Load the heap */ - if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, &(hobj->addr), NULL, NULL))) { + if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, hobj->addr, NULL, NULL))) { HRETURN_ERROR (H5E_HEAP, H5E_CANTLOAD, NULL, "unable to load heap"); } assert (hobj->idx>0 && hobj->idx<heap->nalloc); @@ -773,7 +775,7 @@ H5HG_link (H5F_t *f, H5HG_t *hobj, intn adjust) } /* Load the heap */ - if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, &(hobj->addr), NULL, NULL))) { + if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, hobj->addr, NULL, NULL))) { HRETURN_ERROR (H5E_HEAP, H5E_CANTLOAD, FAIL, "unable to load heap"); } assert (hobj->idx>0 && hobj->idx<heap->nalloc); @@ -826,7 +828,7 @@ H5HG_remove (H5F_t *f, H5HG_t *hobj) } /* Load the heap */ - if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, &(hobj->addr), NULL, NULL))) { + if (NULL==(heap=H5AC_find (f, H5AC_GHEAP, hobj->addr, NULL, NULL))) { HRETURN_ERROR (H5E_HEAP, H5E_CANTLOAD, FAIL, "unable to load heap"); } assert (hobj->idx>0 && hobj->idx<heap->nalloc); @@ -868,8 +870,8 @@ H5HG_remove (H5F_t *f, H5HG_t *hobj) * to the file free list. */ heap->dirty = FALSE; - H5MF_xfree (f, &(heap->addr), (hsize_t)(heap->size)); - H5AC_flush (f, H5AC_GHEAP, &(heap->addr), TRUE); + H5MF_xfree (f, heap->addr, (hsize_t)(heap->size)); + H5AC_flush (f, H5AC_GHEAP, heap->addr, TRUE); heap = NULL; } else { /* @@ -908,11 +910,12 @@ H5HG_remove (H5F_t *f, H5HG_t *hobj) * Mar 27, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5HG_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent, +H5HG_debug(H5F_t *f, haddr_t addr, FILE *stream, intn indent, intn fwidth) { int i, nused, maxobj; @@ -926,7 +929,7 @@ H5HG_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); diff --git a/src/H5HGprivate.h b/src/H5HGprivate.h index feeedd2..c46000e 100644 --- a/src/H5HGprivate.h +++ b/src/H5HGprivate.h @@ -104,7 +104,7 @@ __DLL__ void *H5HG_peek(H5F_t *f, H5HG_t *hobj); __DLL__ void *H5HG_read(H5F_t *f, H5HG_t *hobj, void *object); __DLL__ intn H5HG_link(H5F_t *f, H5HG_t *hobj, intn adjust); __DLL__ herr_t H5HG_remove(H5F_t *f, H5HG_t *hobj); -__DLL__ herr_t H5HG_debug(H5F_t *f, const haddr_t *addr, FILE *stream, - intn indent, intn fwidth); +__DLL__ herr_t H5HG_debug(H5F_t *f, haddr_t addr, FILE *stream, intn indent, + intn fwidth); #endif @@ -46,18 +46,17 @@ typedef struct H5HL_t { } H5HL_t; /* PRIVATE PROTOTYPES */ -static H5HL_t *H5HL_load(H5F_t *f, const haddr_t *addr, const void *udata1, +static H5HL_t *H5HL_load(H5F_t *f, haddr_t addr, const void *udata1, void *udata2); -static herr_t H5HL_flush(H5F_t *f, hbool_t dest, const haddr_t *addr, - H5HL_t *heap); +static herr_t H5HL_flush(H5F_t *f, hbool_t dest, haddr_t addr, H5HL_t *heap); /* * H5HL inherits cache-like properties from H5AC */ static const H5AC_class_t H5AC_LHEAP[1] = {{ H5AC_LHEAP_ID, - (void *(*)(H5F_t*, const haddr_t*, const void*, void*))H5HL_load, - (herr_t (*)(H5F_t*, hbool_t, const haddr_t*, void*))H5HL_flush, + (void *(*)(H5F_t*, haddr_t, const void*, void*))H5HL_load, + (herr_t (*)(H5F_t*, hbool_t, haddr_t, void*))H5HL_flush, }}; /* Interface initialization */ @@ -93,7 +92,7 @@ static intn interface_initialize_g = 0; *------------------------------------------------------------------------- */ herr_t -H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/) +H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr_p/*out*/) { H5HL_t *heap = NULL; size_t total_size; /*total heap size on disk */ @@ -103,7 +102,7 @@ H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/) /* check arguments */ assert(f); - assert(addr); + assert(addr_p); if (size_hint && size_hint < H5HL_SIZEOF_FREE(f)) { size_hint = H5HL_SIZEOF_FREE(f); @@ -112,8 +111,8 @@ H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/) /* allocate file version */ total_size = H5HL_SIZEOF_HDR(f) + size_hint; - if (H5MF_alloc(f, H5MF_META, (hsize_t)total_size, addr/*out*/) < 0) { - H5F_addr_undef (addr); + if (H5MF_alloc(f, H5MF_META, (hsize_t)total_size, addr_p/*out*/) < 0) { + H5F_addr_undef(addr_p); HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate file memory"); } @@ -123,7 +122,7 @@ H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/) HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); } - heap->addr = *addr; + heap->addr = *addr_p; H5F_addr_inc(&(heap->addr), (hsize_t)H5HL_SIZEOF_HDR(f)); heap->disk_alloc = size_hint; heap->mem_alloc = size_hint; @@ -147,7 +146,7 @@ H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/) /* add to cache */ heap->dirty = 1; - if (H5AC_set(f, H5AC_LHEAP, addr, heap) < 0) { + if (H5AC_set(f, H5AC_LHEAP, *addr_p, heap) < 0) { HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "unable to cache heap"); } @@ -155,8 +154,8 @@ H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/) done: if (ret_value<0) { - if (H5F_addr_defined (addr)) { - H5MF_xfree (f, addr, total_size); + if (H5F_addr_defined(*addr_p)) { + H5MF_xfree (f, *addr_p, total_size); } if (heap) { H5MM_xfree (heap->chunk); @@ -181,11 +180,12 @@ H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/) * Jul 17 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static H5HL_t * -H5HL_load(H5F_t *f, const haddr_t *addr, const void UNUSED *udata1, +H5HL_load(H5F_t *f, haddr_t addr, const void UNUSED *udata1, void UNUSED *udata2) { uint8_t hdr[52]; @@ -199,7 +199,7 @@ H5HL_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(H5HL_SIZEOF_HDR(f) <= sizeof hdr); assert(!udata1); assert(!udata2); @@ -244,7 +244,7 @@ H5HL_load(H5F_t *f, const haddr_t *addr, const void UNUSED *udata1, "memory allocation failed"); } if (heap->disk_alloc && - H5F_block_read(f, &(heap->addr), (hsize_t)(heap->disk_alloc), + H5F_block_read(f, heap->addr, (hsize_t)(heap->disk_alloc), &H5F_xfer_dflt, heap->chunk + H5HL_SIZEOF_HDR(f)) < 0) { HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "unable to read heap data"); @@ -304,12 +304,15 @@ H5HL_load(H5F_t *f, const haddr_t *addr, const void UNUSED *udata1, * Jul 17 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 -H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) +H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap) { uint8_t *p = heap->chunk; H5HL_free_t *fl = heap->freelist; @@ -319,7 +322,7 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) /* check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(heap); if (heap->dirty) { @@ -336,7 +339,7 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) "unable to allocate file space for heap"); } heap->addr = new_addr; - H5MF_xfree(f, &old_addr, (hsize_t)(heap->disk_alloc)); + H5MF_xfree(f, old_addr, (hsize_t)(heap->disk_alloc)); H5E_clear(); /*don't really care if the free failed */ heap->disk_alloc = heap->mem_alloc; } @@ -352,7 +355,7 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) *p++ = 0; /*reserved*/ H5F_encode_length(f, p, heap->mem_alloc); H5F_encode_length(f, p, fl ? fl->offset : H5HL_FREE_NULL); - H5F_addr_encode(f, &p, &(heap->addr)); + H5F_addr_encode(f, &p, heap->addr); /* * Write the free list. @@ -372,9 +375,9 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) /* * Copy buffer to disk. */ - hdr_end_addr = *addr; + hdr_end_addr = addr; H5F_addr_inc(&hdr_end_addr, (hsize_t)H5HL_SIZEOF_HDR(f)); - if (H5F_addr_eq(&(heap->addr), &hdr_end_addr)) { + if (H5F_addr_eq(heap->addr, hdr_end_addr)) { /* The header and data are contiguous */ #ifdef HAVE_PARALLEL H5F_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ @@ -397,7 +400,7 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) #ifdef HAVE_PARALLEL H5F_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ #endif /* HAVE_PARALLEL */ - if (H5F_block_write(f, &(heap->addr), (hsize_t)(heap->disk_alloc), + if (H5F_block_write(f, heap->addr, (hsize_t)(heap->disk_alloc), &H5F_xfer_dflt, heap->chunk + H5HL_SIZEOF_HDR(f)) < 0) { HRETURN_ERROR(H5E_HEAP, H5E_WRITEERROR, FAIL, @@ -446,11 +449,12 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) * Jul 16 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ void * -H5HL_read(H5F_t *f, const haddr_t *addr, size_t offset, size_t size, void *buf) +H5HL_read(H5F_t *f, haddr_t addr, size_t offset, size_t size, void *buf) { H5HL_t *heap = NULL; @@ -458,7 +462,7 @@ H5HL_read(H5F_t *f, const haddr_t *addr, size_t offset, size_t size, void *buf) /* check arguments */ assert(f); - assert (addr && H5F_addr_defined(addr)); + assert (H5F_addr_defined(addr)); if (NULL == (heap = H5AC_find(f, H5AC_LHEAP, addr, NULL, NULL))) { HRETURN_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, @@ -503,11 +507,12 @@ H5HL_read(H5F_t *f, const haddr_t *addr, size_t offset, size_t size, void *buf) * Jul 16 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ const void * -H5HL_peek(H5F_t *f, const haddr_t *addr, size_t offset) +H5HL_peek(H5F_t *f, haddr_t addr, size_t offset) { H5HL_t *heap = NULL; const void *retval = NULL; @@ -516,7 +521,7 @@ H5HL_peek(H5F_t *f, const haddr_t *addr, size_t offset) /* check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); if (NULL == (heap = H5AC_find(f, H5AC_LHEAP, addr, NULL, NULL))) { HRETURN_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "unable to load heap"); @@ -567,11 +572,12 @@ H5HL_remove_free(H5HL_t *heap, H5HL_free_t *fl) * Jul 17 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ size_t -H5HL_insert(H5F_t *f, const haddr_t *addr, size_t buf_size, const void *buf) +H5HL_insert(H5F_t *f, haddr_t addr, size_t buf_size, const void *buf) { H5HL_t *heap = NULL; H5HL_free_t *fl = NULL, *max_fl = NULL; @@ -583,7 +589,7 @@ H5HL_insert(H5F_t *f, const haddr_t *addr, size_t buf_size, const void *buf) /* check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf_size > 0); assert(buf); if (0==(f->intent & H5F_ACC_RDWR)) { @@ -732,12 +738,12 @@ H5HL_insert(H5F_t *f, const haddr_t *addr, size_t buf_size, const void *buf) * Jul 16 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5HL_write(H5F_t *f, const haddr_t *addr, size_t offset, size_t size, - const void *buf) +H5HL_write(H5F_t *f, haddr_t addr, size_t offset, size_t size, const void *buf) { H5HL_t *heap = NULL; @@ -745,7 +751,7 @@ H5HL_write(H5F_t *f, const haddr_t *addr, size_t offset, size_t size, /* check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(buf); assert (offset==H5HL_ALIGN (offset)); if (0==(f->intent & H5F_ACC_RDWR)) { @@ -789,11 +795,12 @@ H5HL_write(H5F_t *f, const haddr_t *addr, size_t offset, size_t size, * Jul 16 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5HL_remove(H5F_t *f, const haddr_t *addr, size_t offset, size_t size) +H5HL_remove(H5F_t *f, haddr_t addr, size_t offset, size_t size) { H5HL_t *heap = NULL; H5HL_free_t *fl = NULL, *fl2 = NULL; @@ -802,7 +809,7 @@ H5HL_remove(H5F_t *f, const haddr_t *addr, size_t offset, size_t size) /* check arguments */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(size > 0); assert (offset==H5HL_ALIGN (offset)); if (0==(f->intent & H5F_ACC_RDWR)) { @@ -909,12 +916,12 @@ H5HL_remove(H5F_t *f, const haddr_t *addr, size_t offset, size_t size) * Aug 1 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5HL_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, - intn fwidth) +H5HL_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent, intn fwidth) { H5HL_t *h = NULL; int i, j, overlap; @@ -927,7 +934,7 @@ H5HL_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); diff --git a/src/H5HLprivate.h b/src/H5HLprivate.h index afb3523..915b248 100644 --- a/src/H5HLprivate.h +++ b/src/H5HLprivate.h @@ -51,15 +51,14 @@ * Library prototypes... */ __DLL__ herr_t H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr/*out*/); -__DLL__ void *H5HL_read(H5F_t *f, const haddr_t *addr, size_t offset, - size_t size, void *buf); -__DLL__ const void *H5HL_peek(H5F_t *f, const haddr_t *addr, size_t offset); -__DLL__ size_t H5HL_insert(H5F_t *f, const haddr_t *addr, size_t size, +__DLL__ void *H5HL_read(H5F_t *f, haddr_t addr, size_t offset, size_t size, + void *buf); +__DLL__ const void *H5HL_peek(H5F_t *f, haddr_t addr, size_t offset); +__DLL__ size_t H5HL_insert(H5F_t *f, haddr_t addr, size_t size, const void *buf); -__DLL__ herr_t H5HL_write(H5F_t *f, const haddr_t *addr, size_t offset, - size_t size, const void *buf); -__DLL__ herr_t H5HL_remove(H5F_t *f, const haddr_t *addr, size_t offset, - size_t size); -__DLL__ herr_t H5HL_debug(H5F_t *f, const haddr_t *addr, FILE * stream, - intn indent, intn fwidth); +__DLL__ herr_t H5HL_write(H5F_t *f, haddr_t addr, size_t offset, size_t size, + const void *buf); +__DLL__ herr_t H5HL_remove(H5F_t *f, haddr_t addr, size_t offset, size_t size); +__DLL__ herr_t H5HL_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent, + intn fwidth); #endif diff --git a/src/H5Iprivate.h b/src/H5Iprivate.h index dbe5078..0ac2a8d 100644 --- a/src/H5Iprivate.h +++ b/src/H5Iprivate.h @@ -33,10 +33,10 @@ #define H5I_DATASETID_HASHSIZE 64 #define H5I_OID_HASHSIZE 64 #define H5I_GROUPID_HASHSIZE 64 -#define H5I_ATTRID_HASHSIZE 64 -#define H5I_TEMPBUFID_HASHSIZE 64 -#define H5I_RAGGED_HASHSIZE 64 -#define H5I_REFID_HASHSIZE 64 +#define H5I_ATTRID_HASHSIZE 64 +#define H5I_TEMPBUFID_HASHSIZE 64 +#define H5I_RAGGED_HASHSIZE 64 +#define H5I_REFID_HASHSIZE 64 /* * Function for freeing objects. This function will be called with an object @@ -55,7 +55,7 @@ static intn interface_initialize_g = 0; *------------------------------------------------------------------------- */ herr_t -H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) +H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr_p/*out*/) { haddr_t tmp_addr; intn i, found, status=-1; @@ -70,7 +70,7 @@ H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) assert(f); assert(H5MF_META == op || H5MF_RAW == op); assert(size > 0); - assert(addr); + assert(addr_p); /* Fail if we don't have write access */ if (0==(f->intent & H5F_ACC_RDWR)) { @@ -84,7 +84,7 @@ H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) */ for (i=0, found=-1; i<f->shared->fl_nfree; i++) { if ((status=H5F_low_alloc(f->shared->lf, op, align, thresh, size, - f->shared->fl_free+i, addr/*out*/))>0) { + f->shared->fl_free+i, addr_p/*out*/))>0) { /* Exact match found */ found = i; break; @@ -96,7 +96,7 @@ H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) if (found>=0 && (status=H5F_low_alloc (f->shared->lf, op, align, thresh, size, - f->shared->fl_free+found, addr/*out*/))>0) { + f->shared->fl_free+found, addr_p/*out*/))>0) { /* * We found an exact match. Remove that block from the free list and * use it to satisfy the request. @@ -114,11 +114,11 @@ H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) --f->shared->fl_nfree; HDmemmove (f->shared->fl_free+found, f->shared->fl_free+found+1, (f->shared->fl_nfree-found) * sizeof(H5MF_free_t)); - if (H5F_addr_gt (addr, &(blk.addr))) { + if (H5F_addr_gt (*addr_p, blk.addr)) { /* Free the first part of the free block */ - n = addr->offset - blk.addr.offset; - H5MF_xfree (f, &(blk.addr), n); - blk.addr = *addr; + n = *addr_p - blk.addr; + H5MF_xfree (f, blk.addr, n); + blk.addr = *addr_p; blk.size -= n; } @@ -126,7 +126,7 @@ H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) /* Free the second part of the free block */ H5F_addr_inc (&(blk.addr), size); blk.size -= size; - H5MF_xfree (f, &(blk.addr), blk.size); + H5MF_xfree (f, blk.addr, blk.size); } } else { @@ -147,30 +147,30 @@ H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) } /* Convert from absolute to relative */ - blk.addr.offset -= f->shared->base_addr.offset; + blk.addr -= f->shared->base_addr; /* Did we extend the size of the hdf5 data? */ tmp_addr = blk.addr; H5F_addr_inc(&tmp_addr, blk.size); - if (H5F_addr_gt(&tmp_addr, &(f->shared->hdf5_eof))) { + if (H5F_addr_gt(tmp_addr, f->shared->hdf5_eof)) { f->shared->hdf5_eof = tmp_addr; } if ((status=H5F_low_alloc (f->shared->lf, op, align, thresh, size, - &blk, addr/*out*/))>0) { + &blk, addr_p/*out*/))>0) { /* Exact match */ } else if (0==status) { /* Partial match */ - if (H5F_addr_gt (addr, &(blk.addr))) { - n = addr->offset - blk.addr.offset; - H5MF_xfree (f, &(blk.addr), n); - blk.addr = *addr; + if (H5F_addr_gt (*addr_p, blk.addr)) { + n = *addr_p - blk.addr; + H5MF_xfree (f, blk.addr, n); + blk.addr = *addr_p; blk.size -= n; } if (blk.size > size) { H5F_addr_inc (&(blk.addr), size); blk.size -= size; - H5MF_xfree (f, &(blk.addr), blk.size); + H5MF_xfree (f, blk.addr, blk.size); } } } @@ -193,11 +193,12 @@ H5MF_alloc(H5F_t *f, intn op, hsize_t size, haddr_t *addr/*out*/) * Jul 17 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value *------------------------------------------------------------------------- */ herr_t -H5MF_xfree(H5F_t *f, const haddr_t *addr, hsize_t size) +H5MF_xfree(H5F_t *f, haddr_t addr, hsize_t size) { int i; @@ -205,7 +206,7 @@ H5MF_xfree(H5F_t *f, const haddr_t *addr, hsize_t size) /* check arguments */ assert(f); - if (!addr || !H5F_addr_defined(addr) || 0 == size) { + if (!H5F_addr_defined(addr) || 0 == size) { HRETURN(SUCCEED); } assert(!H5F_addr_zerop(addr)); @@ -225,14 +226,14 @@ H5MF_xfree(H5F_t *f, const haddr_t *addr, hsize_t size) (unsigned long) f->shared->fl_free[i].size); } #endif - f->shared->fl_free[i].addr = *addr; + f->shared->fl_free[i].addr = addr; f->shared->fl_free[i].size = size; break; } } } else { i = f->shared->fl_nfree++; - f->shared->fl_free[i].addr = *addr; + f->shared->fl_free[i].addr = addr; f->shared->fl_free[i].size = size; } FUNC_LEAVE(SUCCEED); @@ -246,9 +247,9 @@ H5MF_xfree(H5F_t *f, const haddr_t *addr, hsize_t size) * a new address. The chunk to change is at address ORIG_ADDR * and is exactly ORIG_SIZE bytes (if these are zero and undef * then this function acts like H5MF_alloc). The new size will - * be NEW_SIZE and its address is returned though NEW_ADDR (if + * be NEW_SIZE and its address is returned though NEW_ADDR_P (if * NEW_SIZE is zero then this function acts like H5MF_free and - * an undefined address is returned for NEW_ADDR). + * an undefined address is returned for NEW_ADDR_P). * * If the new size is less than the old size then the new * address will be the same as the old address (except for the @@ -264,12 +265,14 @@ H5MF_xfree(H5F_t *f, const haddr_t *addr, hsize_t size) * Thursday, April 16, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ORIG_ADDR is passed by value. The name of NEW_ADDR has + * been changed to NEW_ADDR_P *------------------------------------------------------------------------- */ herr_t -H5MF_realloc (H5F_t *f, intn op, hsize_t orig_size, const haddr_t *orig_addr, - hsize_t new_size, haddr_t *new_addr/*out*/) +H5MF_realloc (H5F_t *f, intn op, hsize_t orig_size, haddr_t orig_addr, + hsize_t new_size, haddr_t *new_addr_p/*out*/) { FUNC_ENTER (H5MF_realloc, FAIL); @@ -277,12 +280,12 @@ H5MF_realloc (H5F_t *f, intn op, hsize_t orig_size, const haddr_t *orig_addr, /* Degenerate to H5MF_alloc() */ assert (!H5F_addr_defined (orig_addr)); if (new_size>0) { - if (H5MF_alloc (f, op, new_size, new_addr/*out*/)<0) { + if (H5MF_alloc (f, op, new_size, new_addr_p/*out*/)<0) { HRETURN_ERROR (H5E_RESOURCE, H5E_CANTINIT, FAIL, "unable to allocate new file memory"); } } else { - H5F_addr_undef (new_addr); + H5F_addr_undef (new_addr_p); } } else if (0==new_size) { @@ -292,11 +295,11 @@ H5MF_realloc (H5F_t *f, intn op, hsize_t orig_size, const haddr_t *orig_addr, HRETURN_ERROR (H5E_RESOURCE, H5E_CANTINIT, FAIL, "unable to free old file memory"); } - H5F_addr_undef (new_addr); + H5F_addr_undef (new_addr_p); } else if (new_size > orig_size) { /* Size is getting larger */ - if (H5MF_alloc (f, op, new_size, new_addr/*out*/)<0) { + if (H5MF_alloc (f, op, new_size, new_addr_p/*out*/)<0) { HRETURN_ERROR (H5E_RESOURCE, H5E_CANTINIT, FAIL, "unable to allocate new file memory"); } @@ -313,7 +316,7 @@ H5MF_realloc (H5F_t *f, intn op, hsize_t orig_size, const haddr_t *orig_addr, orig_size-new_size); } #endif - *new_addr = *orig_addr; + *new_addr_p = orig_addr; } FUNC_LEAVE (SUCCEED); diff --git a/src/H5MFprivate.h b/src/H5MFprivate.h index e264121..1030dcd 100644 --- a/src/H5MFprivate.h +++ b/src/H5MFprivate.h @@ -38,9 +38,9 @@ * Library prototypes... */ __DLL__ herr_t H5MF_alloc(H5F_t *f, intn, hsize_t size, haddr_t *addr/*out*/); -__DLL__ herr_t H5MF_xfree(H5F_t *f, const haddr_t *addr, hsize_t size); +__DLL__ herr_t H5MF_xfree(H5F_t *f, haddr_t addr, hsize_t size); __DLL__ herr_t H5MF_realloc(H5F_t *f, intn op, hsize_t orig_size, - const haddr_t *orig_addr, hsize_t new_size, + haddr_t orig_addr, hsize_t new_size, haddr_t *new_addr/*out*/); #endif @@ -26,11 +26,10 @@ #define PABLO_MASK H5O_mask /* PRIVATE PROTOTYPES */ -static herr_t H5O_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, - H5O_t *oh); -static H5O_t *H5O_load(H5F_t *f, const haddr_t *addr, const void *_udata1, +static herr_t H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh); +static H5O_t *H5O_load(H5F_t *f, haddr_t addr, const void *_udata1, void *_udata2); -static intn H5O_find_in_ohdr(H5F_t *f, const haddr_t *addr, +static intn H5O_find_in_ohdr(H5F_t *f, haddr_t addr, const H5O_class_t **type_p, intn sequence); static intn H5O_alloc(H5F_t *f, H5O_t *oh, const H5O_class_t *type, size_t size); @@ -41,8 +40,8 @@ static herr_t H5O_touch_oh(H5F_t *f, H5O_t *oh, hbool_t force); /* H5O inherits cache-like properties from H5AC */ static const H5AC_class_t H5AC_OHDR[1] = {{ H5AC_OHDR_ID, - (void *(*)(H5F_t *, const haddr_t *, const void *, void *)) H5O_load, - (herr_t (*)(H5F_t *, hbool_t, const haddr_t *, void *)) H5O_flush, + (void *(*)(H5F_t *, haddr_t, const void *, void *)) H5O_load, + (herr_t (*)(H5F_t *, hbool_t, haddr_t, void *)) H5O_flush, }}; /* Interface initialization */ @@ -195,7 +194,7 @@ H5O_create(H5F_t *f, size_t size_hint, H5G_entry_t *ent/*out*/) oh->mesg[0].chunkno = 0; /* cache it */ - if (H5AC_set(f, H5AC_OHDR, &(ent->header), oh) < 0) { + if (H5AC_set(f, H5AC_OHDR, ent->header, oh) < 0) { H5MM_xfree(oh); HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL, "unable to cache object header"); @@ -236,7 +235,7 @@ H5O_open(H5G_entry_t *obj_ent) #ifdef H5O_DEBUG if (H5DEBUG(O)) { - HDfprintf(H5DEBUG(O), "> %a\n", &(obj_ent->header)); + HDfprintf(H5DEBUG(O), "> %a\n", obj_ent->header); } #endif @@ -277,10 +276,10 @@ H5O_close(H5G_entry_t *obj_ent) if (H5DEBUG(O)) { if (obj_ent->file->closing && 1==obj_ent->file->shared->nrefs) { HDfprintf(H5DEBUG(O), "< %a auto %lu remaining\n", - &(obj_ent->header), + obj_ent->header, (unsigned long)(obj_ent->file->nopen_objs)); } else { - HDfprintf(H5DEBUG(O), "< %a\n", &(obj_ent->header)); + HDfprintf(H5DEBUG(O), "< %a\n", obj_ent->header); } } #endif @@ -313,16 +312,18 @@ H5O_close(H5G_entry_t *obj_ent) * * Modifications: * - * Robb Matzke, 30 Aug 1997 + * Robb Matzke, 1997-08-30 * Plugged memory leaks that occur during error handling. * - * Robb Matzke, 7 Jan 1998 + * Robb Matzke, 1998-01-07 * Able to distinguish between constant and variable messages. * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static H5O_t * -H5O_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1, +H5O_load(H5F_t *f, haddr_t addr, const void UNUSED *_udata1, void UNUSED *_udata2) { H5O_t *oh = NULL; @@ -340,7 +341,7 @@ H5O_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1, /* check args */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(!_udata1); assert(!_udata2); @@ -375,7 +376,7 @@ H5O_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1, UINT32DECODE(p, oh->nlink); /* decode first chunk info */ - chunk_addr = *addr; + chunk_addr = addr; H5F_addr_inc(&chunk_addr, (hsize_t)H5O_SIZEOF_HDR(f)); UINT32DECODE(p, chunk_size); @@ -387,7 +388,7 @@ H5O_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1, } /* read each chunk from disk */ - while (H5F_addr_defined(&chunk_addr)) { + while (H5F_addr_defined(chunk_addr)) { /* increase chunk array size */ if (oh->nchunks >= oh->alloc_nchunks) { @@ -410,7 +411,7 @@ H5O_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1, HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); } - if (H5F_block_read(f, &chunk_addr, (hsize_t)chunk_size, &H5F_xfer_dflt, + if (H5F_block_read(f, chunk_addr, (hsize_t)chunk_size, &H5F_xfer_dflt, oh->chunk[chunkno].image) < 0) { HGOTO_ERROR(H5E_OHDR, H5E_READERROR, NULL, "unable to read object header data"); @@ -460,7 +461,7 @@ H5O_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1, /* decode next object header continuation message */ for (H5F_addr_undef(&chunk_addr); - !H5F_addr_defined(&chunk_addr) && curmesg < oh->nmesgs; + !H5F_addr_defined(chunk_addr) && curmesg < oh->nmesgs; curmesg++) { if (H5O_CONT_ID == oh->mesg[curmesg].type->id) { uint8_t *p2 = oh->mesg[curmesg].raw; @@ -504,15 +505,18 @@ H5O_load(H5F_t *f, const haddr_t *addr, const void UNUSED *_udata1, * * Modifications: * - * Robb Matzke, 7 Jan 1998 + * Robb Matzke, 1998-01-07 * Handles constant vs non-constant messages. * - * 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 -H5O_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5O_t *oh) +H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh) { uint8_t buf[16], *p; intn i, id; @@ -523,7 +527,7 @@ H5O_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5O_t *oh) /* check args */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(oh); /* flush */ @@ -577,12 +581,12 @@ H5O_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5O_t *oh) /* allocate file space for chunks that have none yet */ if (H5O_CONT_ID == oh->mesg[i].type->id && - !H5F_addr_defined(&(((H5O_cont_t *) - (oh->mesg[i].native))->addr))) { + !H5F_addr_defined(((H5O_cont_t *)(oh->mesg[i].native)) + ->addr)) { cont = (H5O_cont_t *) (oh->mesg[i].native); assert(cont->chunkno >= 0); assert(cont->chunkno < oh->nchunks); - assert(!H5F_addr_defined(&(oh->chunk[cont->chunkno].addr))); + assert(!H5F_addr_defined(oh->chunk[cont->chunkno].addr)); cont->size = oh->chunk[cont->chunkno].size; if (H5MF_alloc(f, H5MF_META, (hsize_t)(cont->size), &(cont->addr)/*out*/) < 0) { @@ -623,11 +627,11 @@ H5O_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5O_t *oh) /* write each chunk to disk */ for (i = 0; i < oh->nchunks; i++) { if (oh->chunk[i].dirty) { - assert(H5F_addr_defined(&(oh->chunk[i].addr))); + assert(H5F_addr_defined(oh->chunk[i].addr)); #ifdef HAVE_PARALLEL H5F_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 write */ #endif /* HAVE_PARALLEL */ - if (H5F_block_write(f, &(oh->chunk[i].addr), + if (H5F_block_write(f, oh->chunk[i].addr, (hsize_t)(oh->chunk[i].size), &H5F_xfer_dflt, oh->chunk[i].image) < 0) { HRETURN_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, @@ -810,14 +814,14 @@ H5O_link(H5G_entry_t *ent, intn adjust) /* check args */ assert(ent); assert(ent->file); - assert(H5F_addr_defined(&(ent->header))); + assert(H5F_addr_defined(ent->header)); if (adjust!=0 && 0==(ent->file->intent & H5F_ACC_RDWR)) { HGOTO_ERROR (H5E_OHDR, H5E_WRITEERROR, FAIL, "no write intent on file"); } /* get header */ - if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), + if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, ent->header, NULL, NULL))) { HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to load object header"); @@ -838,7 +842,7 @@ H5O_link(H5G_entry_t *ent, intn adjust) ret_value = oh->nlink; done: - if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, &(ent->header), oh) < 0) { + if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, ent->header, oh) < 0) { HRETURN_ERROR(H5E_OHDR, H5E_PROTECT, FAIL, "unable to release object header"); } @@ -874,12 +878,11 @@ H5O_count (H5G_entry_t *ent, const H5O_class_t *type) /* Check args */ assert (ent); assert (ent->file); - assert (H5F_addr_defined (&(ent->header))); + assert (H5F_addr_defined(ent->header)); assert (type); /* Load the object header */ - if (NULL==(oh=H5AC_find (ent->file, H5AC_OHDR, &(ent->header), - NULL, NULL))) { + if (NULL==(oh=H5AC_find (ent->file, H5AC_OHDR, ent->header, NULL, NULL))) { HRETURN_ERROR (H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to load object header"); } @@ -925,8 +928,7 @@ H5O_exists(H5G_entry_t *ent, const H5O_class_t *type, intn sequence) assert(sequence>=0); /* Load the object header */ - if (NULL==(oh=H5AC_find(ent->file, H5AC_OHDR, &(ent->header), - NULL, NULL))) { + if (NULL==(oh=H5AC_find(ent->file, H5AC_OHDR, ent->header, NULL, NULL))) { HRETURN_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to load object header"); } @@ -980,7 +982,7 @@ H5O_read(H5G_entry_t *ent, const H5O_class_t *type, intn sequence, void *mesg) /* check args */ assert(ent); assert(ent->file); - assert(H5F_addr_defined(&(ent->header))); + assert(H5F_addr_defined(ent->header)); assert(type); assert(sequence >= 0); @@ -994,14 +996,14 @@ H5O_read(H5G_entry_t *ent, const H5O_class_t *type, intn sequence, void *mesg) } /* can we get it from the object header? */ - if ((idx = H5O_find_in_ohdr(ent->file, &(ent->header), &type, + if ((idx = H5O_find_in_ohdr(ent->file, ent->header, &type, sequence)) < 0) { HRETURN_ERROR(H5E_OHDR, H5E_NOTFOUND, NULL, "unable to find message in object header"); } /* copy the message to the user-supplied buffer */ - if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), + if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, ent->header, NULL, NULL))) { HRETURN_ERROR(H5E_OHDR, H5E_CANTLOAD, NULL, "unable to load object header"); @@ -1056,7 +1058,7 @@ H5O_read(H5G_entry_t *ent, const H5O_class_t *type, intn sequence, void *mesg) } done: - if (H5AC_unprotect(ent->file, H5AC_OHDR, &(ent->header), oh) < 0) { + if (H5AC_unprotect(ent->file, H5AC_OHDR, ent->header, oh) < 0) { HRETURN_ERROR(H5E_OHDR, H5E_PROTECT, NULL, "unable to release object header"); } @@ -1080,11 +1082,12 @@ H5O_read(H5G_entry_t *ent, const H5O_class_t *type, intn sequence, void *mesg) * Aug 6 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ static intn -H5O_find_in_ohdr(H5F_t *f, const haddr_t *addr, const H5O_class_t **type_p, +H5O_find_in_ohdr(H5F_t *f, haddr_t addr, const H5O_class_t **type_p, intn sequence) { H5O_t *oh = NULL; @@ -1095,7 +1098,7 @@ H5O_find_in_ohdr(H5F_t *f, const haddr_t *addr, const H5O_class_t **type_p, /* Check args */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(type_p); /* Load the object header */ @@ -1193,7 +1196,7 @@ H5O_modify(H5G_entry_t *ent, const H5O_class_t *type, intn overwrite, /* check args */ assert(ent); assert(ent->file); - assert(H5F_addr_defined(&(ent->header))); + assert(H5F_addr_defined(ent->header)); assert(type); assert(mesg); assert (0==(flags & ~H5O_FLAG_BITS)); @@ -1202,7 +1205,7 @@ H5O_modify(H5G_entry_t *ent, const H5O_class_t *type, intn overwrite, "no write intent on file"); } - if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), + if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, ent->header, NULL, NULL))) { HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to load object header"); @@ -1320,7 +1323,7 @@ H5O_modify(H5G_entry_t *ent, const H5O_class_t *type, intn overwrite, done: H5MM_xfree(sh_mesg); - if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, &(ent->header), oh) < 0) { + if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, ent->header, oh) < 0) { HRETURN_ERROR(H5E_OHDR, H5E_PROTECT, FAIL, "unable to release object header"); } @@ -1416,14 +1419,14 @@ H5O_touch(H5G_entry_t *ent, hbool_t force) /* check args */ assert(ent); assert(ent->file); - assert(H5F_addr_defined(&(ent->header))); + assert(H5F_addr_defined(ent->header)); if (0==(ent->file->intent & H5F_ACC_RDWR)) { HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "no write intent on file"); } /* Get the object header */ - if (NULL==(oh=H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), + if (NULL==(oh=H5AC_protect(ent->file, H5AC_OHDR, ent->header, NULL, NULL))) { HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to load object header"); @@ -1437,7 +1440,7 @@ H5O_touch(H5G_entry_t *ent, hbool_t force) ret_value = SUCCEED; done: - if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, &(ent->header), oh)<0) { + if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, ent->header, oh)<0) { HRETURN_ERROR(H5E_OHDR, H5E_PROTECT, FAIL, "unable to release object header"); } @@ -1483,7 +1486,7 @@ H5O_remove(H5G_entry_t *ent, const H5O_class_t *type, intn sequence) /* check args */ assert(ent); assert(ent->file); - assert(H5F_addr_defined(&(ent->header))); + assert(H5F_addr_defined(ent->header)); assert(type); if (0==(ent->file->intent & H5F_ACC_RDWR)) { HRETURN_ERROR (H5E_HEAP, H5E_WRITEERROR, FAIL, @@ -1491,7 +1494,7 @@ H5O_remove(H5G_entry_t *ent, const H5O_class_t *type, intn sequence) } /* load the object header */ - if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), + if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, ent->header, NULL, NULL))) { HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to load object header"); @@ -1551,7 +1554,7 @@ H5O_remove(H5G_entry_t *ent, const H5O_class_t *type, intn sequence) ret_value = SUCCEED; done: - if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, &(ent->header), oh) < 0) { + if (oh && H5AC_unprotect(ent->file, H5AC_OHDR, ent->header, oh) < 0) { HRETURN_ERROR(H5E_OHDR, H5E_PROTECT, FAIL, "unable to release object header"); } @@ -1598,7 +1601,7 @@ H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size) assert(size > 0); assert (size==H5O_ALIGN (size)); - if (H5F_addr_defined(&(oh->chunk[chunkno].addr))) { + if (H5F_addr_defined(oh->chunk[chunkno].addr)) { HRETURN_ERROR(H5E_OHDR, H5E_NOSPACE, FAIL, "chunk is on disk"); } @@ -2061,12 +2064,12 @@ H5O_share (H5F_t *f, const H5O_class_t *type, const void *mesg, * Aug 6 1997 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, - intn fwidth) +H5O_debug(H5F_t *f, haddr_t addr, FILE *stream, intn indent, intn fwidth) { H5O_t *oh = NULL; intn i, chunkno; @@ -2081,7 +2084,7 @@ H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, /* check args */ assert(f); - assert(addr && H5F_addr_defined(addr)); + assert(H5F_addr_defined(addr)); assert(stream); assert(indent >= 0); assert(fwidth >= 0); @@ -2092,46 +2095,44 @@ H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, } /* debug */ - fprintf(stream, "%*sObject Header...\n", indent, ""); - - fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, - "Dirty:", - (int) (oh->dirty)); - fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, - "Version:", - (int) (oh->version)); - fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, - "Number of links:", - (int) (oh->nlink)); - fprintf(stream, "%*s%-*s %d (%d)\n", indent, "", fwidth, - "Number of messages (allocated):", - (int) (oh->nmesgs), (int) (oh->alloc_nmesgs)); - fprintf(stream, "%*s%-*s %d (%d)\n", indent, "", fwidth, - "Number of chunks (allocated):", - (int) (oh->nchunks), (int) (oh->alloc_nchunks)); + HDfprintf(stream, "%*sObject Header...\n", indent, ""); + + HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Dirty:", + (int) (oh->dirty)); + HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Version:", + (int) (oh->version)); + HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Number of links:", + (int) (oh->nlink)); + HDfprintf(stream, "%*s%-*s %d (%d)\n", indent, "", fwidth, + "Number of messages (allocated):", + (int) (oh->nmesgs), (int) (oh->alloc_nmesgs)); + HDfprintf(stream, "%*s%-*s %d (%d)\n", indent, "", fwidth, + "Number of chunks (allocated):", + (int) (oh->nchunks), (int) (oh->alloc_nchunks)); /* debug each chunk */ for (i=0, chunk_total=0; i<oh->nchunks; i++) { chunk_total += oh->chunk[i].size; - fprintf(stream, "%*sChunk %d...\n", indent, "", i); + HDfprintf(stream, "%*sChunk %d...\n", indent, "", i); - fprintf(stream, "%*s%-*s %d\n", indent + 3, "", MAX(0, fwidth - 3), - "Dirty:", - (int) (oh->chunk[i].dirty)); + HDfprintf(stream, "%*s%-*s %d\n", indent + 3, "", MAX(0, fwidth - 3), + "Dirty:", + (int) (oh->chunk[i].dirty)); - fprintf(stream, "%*s%-*s ", indent + 3, "", MAX(0, fwidth - 3), - "Address:"); - H5F_addr_print(stream, &(oh->chunk[i].addr)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent + 3, "", MAX(0, fwidth - 3), + "Address:", oh->chunk[i].addr); - tmp_addr = *addr; + tmp_addr = addr; H5F_addr_inc(&tmp_addr, (hsize_t)H5O_SIZEOF_HDR(f)); - if (0 == i && H5F_addr_ne(&(oh->chunk[i].addr), &tmp_addr)) { - fprintf(stream, "*** WRONG ADDRESS!\n"); + if (0 == i && H5F_addr_ne(oh->chunk[i].addr, tmp_addr)) { + HDfprintf(stream, "*** WRONG ADDRESS!\n"); } - fprintf(stream, "%*s%-*s %lu\n", indent + 3, "", MAX(0, fwidth - 3), - "Size in bytes:", - (unsigned long) (oh->chunk[i].size)); + HDfprintf(stream, "%*s%-*s %lu\n", indent + 3, "", MAX(0, fwidth - 3), + "Size in bytes:", + (unsigned long) (oh->chunk[i].size)); } /* debug each message */ @@ -2141,50 +2142,50 @@ H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, } for (i=0, mesg_total=0; i<oh->nmesgs; i++) { mesg_total += H5O_SIZEOF_MSGHDR(f) + oh->mesg[i].raw_size; - fprintf(stream, "%*sMessage %d...\n", indent, "", i); + HDfprintf(stream, "%*sMessage %d...\n", indent, "", i); /* check for bad message id */ if (oh->mesg[i].type->id < 0 || oh->mesg[i].type->id >= (intn)NELMTS(message_type_g)) { - fprintf(stream, "*** BAD MESSAGE ID 0x%04x\n", - oh->mesg[i].type->id); + HDfprintf(stream, "*** BAD MESSAGE ID 0x%04x\n", + oh->mesg[i].type->id); continue; } /* message name and size */ - fprintf(stream, "%*s%-*s 0x%04x %s(%d)\n", - indent + 3, "", MAX(0, fwidth - 3), - "Message ID:", - (unsigned) (oh->mesg[i].type->id), - oh->mesg[i].type->name, - sequence[oh->mesg[i].type->id]++); - fprintf (stream, "%*s%-*s %s\n", indent+3, "", MAX (0, fwidth-3), - "Shared message:", - (oh->mesg[i].flags & H5O_FLAG_SHARED) ? "Yes" : "No"); - fprintf(stream, "%*s%-*s %s\n", indent + 3, "", MAX(0, fwidth - 3), - "Constant:", - (oh->mesg[i].flags & H5O_FLAG_CONSTANT) ? "Yes" : "No"); + HDfprintf(stream, "%*s%-*s 0x%04x %s(%d)\n", + indent + 3, "", MAX(0, fwidth - 3), + "Message ID:", + (unsigned) (oh->mesg[i].type->id), + oh->mesg[i].type->name, + sequence[oh->mesg[i].type->id]++); + HDfprintf (stream, "%*s%-*s %s\n", indent+3, "", MAX (0, fwidth-3), + "Shared message:", + (oh->mesg[i].flags & H5O_FLAG_SHARED) ? "Yes" : "No"); + HDfprintf(stream, "%*s%-*s %s\n", indent + 3, "", MAX(0, fwidth - 3), + "Constant:", + (oh->mesg[i].flags & H5O_FLAG_CONSTANT) ? "Yes" : "No"); if (oh->mesg[i].flags & ~H5O_FLAG_BITS) { - fprintf (stream, "%*s%-*s 0x%02x\n", indent+3,"",MAX(0,fwidth-3), - "*** ADDITIONAL UNKNOWN FLAGS --->", - oh->mesg[i].flags & ~H5O_FLAG_BITS); + HDfprintf (stream, "%*s%-*s 0x%02x\n", indent+3,"",MAX(0,fwidth-3), + "*** ADDITIONAL UNKNOWN FLAGS --->", + oh->mesg[i].flags & ~H5O_FLAG_BITS); } - fprintf(stream, "%*s%-*s %lu bytes\n", indent+3, "", MAX(0,fwidth-3), - "Raw size in obj header:", - (unsigned long) (oh->mesg[i].raw_size)); - fprintf(stream, "%*s%-*s %d\n", indent + 3, "", MAX(0, fwidth - 3), - "Chunk number:", - (int) (oh->mesg[i].chunkno)); + HDfprintf(stream, "%*s%-*s %lu bytes\n", indent+3, "", MAX(0,fwidth-3), + "Raw size in obj header:", + (unsigned long) (oh->mesg[i].raw_size)); + HDfprintf(stream, "%*s%-*s %d\n", indent + 3, "", MAX(0, fwidth - 3), + "Chunk number:", + (int) (oh->mesg[i].chunkno)); chunkno = oh->mesg[i].chunkno; if (chunkno < 0 || chunkno >= oh->nchunks) { - fprintf(stream, "*** BAD CHUNK NUMBER\n"); + HDfprintf(stream, "*** BAD CHUNK NUMBER\n"); } /* check the size */ if ((oh->mesg[i].raw + oh->mesg[i].raw_size > oh->chunk[chunkno].image + oh->chunk[chunkno].size) || (oh->mesg[i].raw < oh->chunk[chunkno].image)) { - fprintf(stream, "*** BAD MESSAGE RAW ADDRESS\n"); + HDfprintf(stream, "*** BAD MESSAGE RAW ADDRESS\n"); } /* decode the message */ @@ -2206,7 +2207,8 @@ H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, if (debug) { (debug)(f, oh->mesg[i].native, stream, indent+3, MAX(0, fwidth-3)); } else { - fprintf(stream, "%*sNo info for this message.\n", indent + 3, ""); + HDfprintf(stream, "%*sNo info for this message.\n", + indent + 3, ""); } /* If the message is shared then also print the pointed-to message */ @@ -2230,11 +2232,11 @@ H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, sequence = H5MM_xfree(sequence); if (mesg_total != chunk_total) { - fprintf(stream, "*** TOTAL SIZE DOES NOT MATCH ALLOCATED SIZE!\n"); + HDfprintf(stream, "*** TOTAL SIZE DOES NOT MATCH ALLOCATED SIZE!\n"); } ret_value = SUCCEED; - done: + done: if (oh && H5AC_unprotect(f, H5AC_OHDR, addr, oh) < 0) { HRETURN_ERROR(H5E_OHDR, H5E_PROTECT, FAIL, "unable to release object header"); diff --git a/src/H5Oattr.c b/src/H5Oattr.c index 3d2cabf..52bc29f 100644 --- a/src/H5Oattr.c +++ b/src/H5Oattr.c @@ -415,7 +415,8 @@ H5O_attr_debug(H5F_t *f, const void *_mesg, FILE * stream, intn indent, "Opened:", (unsigned int)mesg->ent_opened); fprintf(stream, "%*sSymbol table entry...\n", indent, ""); - H5G_ent_debug(f, &(mesg->ent), stream, indent+3, MAX(0, fwidth-3), NULL); + H5G_ent_debug(f, &(mesg->ent), stream, indent+3, MAX(0, fwidth-3), + H5F_ADDR_UNDEF); fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, "Data type size:", diff --git a/src/H5Ocont.c b/src/H5Ocont.c index 722a0f9..997ea0d 100644 --- a/src/H5Ocont.c +++ b/src/H5Ocont.c @@ -117,7 +117,7 @@ H5O_cont_encode(H5F_t *f, uint8_t *p, const void *_mesg) assert(cont); /* encode */ - H5F_addr_encode(f, &p, &(cont->addr)); + H5F_addr_encode(f, &p, cont->addr); H5F_encode_length(f, p, cont->size); FUNC_LEAVE(SUCCEED); @@ -153,17 +153,15 @@ H5O_cont_debug(H5F_t UNUSED *f, const void *_mesg, FILE * stream, assert(indent >= 0); assert(fwidth >= 0); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Continuation address:"); - H5F_addr_print(stream, &(cont->addr)); - fprintf(stream, "\n"); - - fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Continuation size in bytes:", - (unsigned long) (cont->size)); - fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, - "Points to chunk number:", - (int) (cont->chunkno)); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "Continuation address:", cont->addr); + + HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Continuation size in bytes:", + (unsigned long) (cont->size)); + HDfprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Points to chunk number:", + (int) (cont->chunkno)); FUNC_LEAVE(SUCCEED); } diff --git a/src/H5Odtype.c b/src/H5Odtype.c index 72253a7..a3d99b5 100644 --- a/src/H5Odtype.c +++ b/src/H5Odtype.c @@ -898,8 +898,8 @@ H5O_dtype_reset(void *_mesg) *------------------------------------------------------------------------- */ static herr_t -H5O_dtype_get_share (H5F_t UNUSED *f, const void *_mesg, - H5O_shared_t *sh/*out*/) +H5O_dtype_get_share(H5F_t UNUSED *f, const void *_mesg, + H5O_shared_t *sh/*out*/) { const H5T_t *dt = (const H5T_t *)_mesg; @@ -907,7 +907,7 @@ H5O_dtype_get_share (H5F_t UNUSED *f, const void *_mesg, assert (dt); assert (sh); - if (H5F_addr_defined (&(dt->ent.header))) { + if (H5F_addr_defined (dt->ent.header)) { assert (H5T_STATE_NAMED==dt->state || H5T_STATE_OPEN==dt->state); sh->in_gh = FALSE; sh->u.ent = dt->ent; diff --git a/src/H5Oefl.c b/src/H5Oefl.c index 79d4058..baf0857 100644 --- a/src/H5Oefl.c +++ b/src/H5Oefl.c @@ -101,8 +101,8 @@ H5O_efl_decode(H5F_t *f, const uint8_t *p, H5O_shared_t UNUSED *sh) /* Heap address */ H5F_addr_decode(f, &p, &(mesg->heap_addr)); #ifndef NDEBUG - assert (H5F_addr_defined (&(mesg->heap_addr))); - s = H5HL_peek (f, &(mesg->heap_addr), 0); + assert (H5F_addr_defined(mesg->heap_addr)); + s = H5HL_peek (f, mesg->heap_addr, 0); assert (s && !*s); #endif @@ -116,7 +116,7 @@ H5O_efl_decode(H5F_t *f, const uint8_t *p, H5O_shared_t UNUSED *sh) for (i=0; i<mesg->nused; i++) { /* Name */ H5F_decode_length (f, p, mesg->slot[i].name_offset); - s = H5HL_peek (f, &(mesg->heap_addr), mesg->slot[i].name_offset); + s = H5HL_peek(f, mesg->heap_addr, mesg->slot[i].name_offset); assert (s && *s); mesg->slot[i].name = H5MM_xstrdup (s); @@ -177,8 +177,8 @@ H5O_efl_encode(H5F_t *f, uint8_t *p, const void *_mesg) UINT16ENCODE(p, mesg->nused); /* Heap address */ - assert (H5F_addr_defined (&(mesg->heap_addr))); - H5F_addr_encode(f, &p, &(mesg->heap_addr)); + assert (H5F_addr_defined(mesg->heap_addr)); + H5F_addr_encode(f, &p, mesg->heap_addr); /* Encode file list */ for (i=0; i<mesg->nused; i++) { @@ -186,7 +186,7 @@ H5O_efl_encode(H5F_t *f, uint8_t *p, const void *_mesg) * If the name has not been added to the heap yet then do so now. */ if (0==mesg->slot[i].name_offset) { - offset = H5HL_insert (f, &(mesg->heap_addr), + offset = H5HL_insert (f, mesg->heap_addr, HDstrlen (mesg->slot[i].name)+1, mesg->slot[i].name); if ((size_t)(-1)==offset) { @@ -401,11 +401,12 @@ H5O_efl_total_size (H5O_efl_t *efl) * Wednesday, March 4, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5O_efl_read (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t *addr, +H5O_efl_read (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t addr, hsize_t size, uint8_t *buf) { int i, fd=-1; @@ -417,15 +418,15 @@ H5O_efl_read (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t *addr, /* Check args */ assert (efl && efl->nused>0); - assert (addr && H5F_addr_defined (addr)); + assert (H5F_addr_defined (addr)); assert (size < SIZET_MAX); assert (buf || 0==size); /* Find the first efl member from which to read */ for (i=0, cur=0; i<efl->nused; i++) { if (H5O_EFL_UNLIMITED==efl->slot[i].size || - addr->offset < cur+efl->slot[i].size) { - skip = addr->offset - cur; + addr < cur+efl->slot[i].size) { + skip = addr - cur; break; } cur += efl->slot[i].size; @@ -485,11 +486,12 @@ H5O_efl_read (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t *addr, * Wednesday, March 4, 1998 * * Modifications: - * + * Robb Matzke, 1999-07-28 + * The ADDR argument is passed by value. *------------------------------------------------------------------------- */ herr_t -H5O_efl_write (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t *addr, +H5O_efl_write (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t addr, hsize_t size, const uint8_t *buf) { int i, fd=-1; @@ -500,15 +502,15 @@ H5O_efl_write (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t *addr, /* Check args */ assert (efl && efl->nused>0); - assert (addr && H5F_addr_defined (addr)); + assert (H5F_addr_defined (addr)); assert (size < SIZET_MAX); assert (buf || 0==size); /* Find the first efl member in which to write */ for (i=0, cur=0; i<efl->nused; i++) { if (H5O_EFL_UNLIMITED==efl->slot[i].size || - addr->offset < cur+efl->slot[i].size) { - skip = addr->offset - cur; + addr < cur+efl->slot[i].size) { + skip = addr - cur; break; } cur += efl->slot[i].size; @@ -588,34 +590,32 @@ H5O_efl_debug(H5F_t UNUSED *f, const void *_mesg, FILE * stream, assert(indent >= 0); assert(fwidth >= 0); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Heap address:"); - H5F_addr_print(stream, &(mesg->heap_addr)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "Heap address:", mesg->heap_addr); - fprintf(stream, "%*s%-*s %u/%u\n", indent, "", fwidth, - "Slots used/allocated:", - mesg->nused, mesg->nalloc); + HDfprintf(stream, "%*s%-*s %u/%u\n", indent, "", fwidth, + "Slots used/allocated:", + mesg->nused, mesg->nalloc); for (i = 0; i < mesg->nused; i++) { sprintf (buf, "File %d", i); - fprintf (stream, "%*s%s:\n", indent, "", buf); + HDfprintf (stream, "%*s%s:\n", indent, "", buf); - fprintf(stream, "%*s%-*s \"%s\"\n", indent+3, "", MAX (fwidth-3, 0), - "Name:", - mesg->slot[i].name); + HDfprintf(stream, "%*s%-*s \"%s\"\n", indent+3, "", MAX (fwidth-3, 0), + "Name:", + mesg->slot[i].name); - fprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0), - "Name offset:", - (unsigned long)(mesg->slot[i].name_offset)); + HDfprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0), + "Name offset:", + (unsigned long)(mesg->slot[i].name_offset)); - fprintf (stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0), - "Offset of data in file:", - (unsigned long)(mesg->slot[i].offset)); + HDfprintf (stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0), + "Offset of data in file:", + (unsigned long)(mesg->slot[i].offset)); - fprintf (stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0), - "Bytes reserved for data:", - (unsigned long)(mesg->slot[i].size)); + HDfprintf (stream, "%*s%-*s %lu\n", indent+3, "", MAX (fwidth-3, 0), + "Bytes reserved for data:", + (unsigned long)(mesg->slot[i].size)); } FUNC_LEAVE(SUCCEED); diff --git a/src/H5Olayout.c b/src/H5Olayout.c index 6a266a3..69043d3 100644 --- a/src/H5Olayout.c +++ b/src/H5Olayout.c @@ -158,7 +158,7 @@ H5O_layout_encode(H5F_t *f, uint8_t *p, const void *_mesg) for (i=0; i<5; i++) *p++ = 0; /* data or B-tree address */ - H5F_addr_encode(f, &p, &(mesg->addr)); + H5F_addr_encode(f, &p, mesg->addr); /* dimension size */ for (i = 0; i < mesg->ndims; i++) { @@ -276,23 +276,21 @@ H5O_layout_debug(H5F_t UNUSED *f, const void *_mesg, FILE * stream, assert(indent >= 0); assert(fwidth >= 0); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - H5D_CHUNKED == mesg->type ? "B-tree address:" : "Data address:"); - H5F_addr_print(stream, &(mesg->addr)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + H5D_CHUNKED == mesg->type ? "B-tree address:" : "Data address:", + mesg->addr); - fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Number of dimensions:", - (unsigned long) (mesg->ndims)); + HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Number of dimensions:", + (unsigned long) (mesg->ndims)); /* Size */ - fprintf(stream, "%*s%-*s {", indent, "", fwidth, - "Size:"); + HDfprintf(stream, "%*s%-*s {", indent, "", fwidth, "Size:"); for (i = 0; i < mesg->ndims; i++) { - fprintf(stream, "%s%lu", i ? ", " : "", - (unsigned long) (mesg->dim[i])); + HDfprintf(stream, "%s%lu", i ? ", " : "", + (unsigned long) (mesg->dim[i])); } - fprintf(stream, "}\n"); + HDfprintf(stream, "}\n"); FUNC_LEAVE(SUCCEED); } diff --git a/src/H5Oprivate.h b/src/H5Oprivate.h index 07181e0..0577a35 100644 --- a/src/H5Oprivate.h +++ b/src/H5Oprivate.h @@ -288,14 +288,14 @@ __DLL__ void *H5O_free(const H5O_class_t *type, void *mesg); __DLL__ void *H5O_copy(const H5O_class_t *type, const void *mesg, void *dst); __DLL__ herr_t H5O_share(H5F_t *f, const H5O_class_t *type, const void *mesg, H5HG_t *hobj/*out*/); -__DLL__ herr_t H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, - intn indent, intn fwidth); +__DLL__ herr_t H5O_debug(H5F_t *f, haddr_t addr, FILE * stream, intn indent, + intn fwidth); /* EFL operators */ __DLL__ hsize_t H5O_efl_total_size(H5O_efl_t *efl); -__DLL__ herr_t H5O_efl_read(H5F_t *f, const H5O_efl_t *efl, haddr_t *addr, +__DLL__ herr_t H5O_efl_read(H5F_t *f, const H5O_efl_t *efl, haddr_t addr, hsize_t size, uint8_t *buf); -__DLL__ herr_t H5O_efl_write(H5F_t *f, const H5O_efl_t *efl, haddr_t *addr, +__DLL__ herr_t H5O_efl_write(H5F_t *f, const H5O_efl_t *efl, haddr_t addr, hsize_t size, const uint8_t *buf); /* Fill value operators */ diff --git a/src/H5Oshared.c b/src/H5Oshared.c index 5c2b0e6..da526dc 100644 --- a/src/H5Oshared.c +++ b/src/H5Oshared.c @@ -149,7 +149,7 @@ H5O_shared_encode (H5F_t *f, uint8_t *buf/*out*/, const void *_mesg) *buf++ = 0; /*reserved 6*/ if (mesg->in_gh) { - H5F_addr_encode (f, &buf, &(mesg->u.gh.addr)); + H5F_addr_encode (f, &buf, mesg->u.gh.addr); INT32ENCODE (buf, mesg->u.gh.idx); } else { H5G_ent_encode (f, &buf, &(mesg->u.ent)); @@ -225,8 +225,8 @@ H5O_shared_debug (H5F_t UNUSED *f, const void *_mesg, "Sharing method", "Global heap"); HDfprintf (stream, "%*s%-*s %a\n", indent, "", fwidth, - "Collection address:", - &(mesg->u.gh.addr)); + "Collection address:", + mesg->u.gh.addr); HDfprintf (stream, "%*s%-*s %d\n", indent, "", fwidth, "Object ID within collection:", mesg->u.gh.idx); @@ -234,7 +234,8 @@ H5O_shared_debug (H5F_t UNUSED *f, const void *_mesg, HDfprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, "Sharing method", "Obj Hdr"); - H5G_ent_debug (f, &(mesg->u.ent), stream, indent, fwidth, NULL); + H5G_ent_debug (f, &(mesg->u.ent), stream, indent, fwidth, + H5F_ADDR_UNDEF); } FUNC_LEAVE (SUCCEED); diff --git a/src/H5Ostab.c b/src/H5Ostab.c index 345e429..2d5559d 100644 --- a/src/H5Ostab.c +++ b/src/H5Ostab.c @@ -118,8 +118,8 @@ H5O_stab_encode(H5F_t *f, uint8_t *p, const void *_mesg) assert(stab); /* encode */ - H5F_addr_encode(f, &p, &(stab->btree_addr)); - H5F_addr_encode(f, &p, &(stab->heap_addr)); + H5F_addr_encode(f, &p, stab->btree_addr); + H5F_addr_encode(f, &p, stab->heap_addr); FUNC_LEAVE(SUCCEED); } @@ -262,15 +262,11 @@ H5O_stab_debug(H5F_t UNUSED *f, const void *_mesg, FILE * stream, assert(indent >= 0); assert(fwidth >= 0); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "B-tree address:"); - H5F_addr_print(stream, &(stab->btree_addr)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "B-tree address:", stab->btree_addr); - fprintf(stream, "%*s%-*s ", indent, "", fwidth, - "Name heap address:"); - H5F_addr_print(stream, &(stab->heap_addr)); - fprintf(stream, "\n"); + HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth, + "Name heap address:", stab->heap_addr); FUNC_LEAVE(SUCCEED); } @@ -1833,7 +1833,7 @@ H5Pget_family(hid_t plist_id, hsize_t *memb_size/*out*/, /* Output args */ if (memb_size) { - *memb_size = plist->u.fam.memb_size.offset; + *memb_size = plist->u.fam.memb_size; } if (memb_plist_id) { assert (plist->u.fam.memb_access); @@ -159,7 +159,7 @@ H5R_create(void *_ref, H5G_entry_t *loc, const char *name, H5R_type_t ref_type, /* Set information for reference */ p=(uint8_t *)ref->oid; H5F_addr_pack(loc->file,&addr,&sb.objno[0]); - H5F_addr_encode(loc->file,&p,&addr); + H5F_addr_encode(loc->file,&p,addr); break; } @@ -210,7 +210,7 @@ H5R_create(void *_ref, H5G_entry_t *loc, const char *name, H5R_type_t ref_type, /* Serialize information for dataset OID */ p=(uint8_t *)buf; H5F_addr_pack(loc->file,&addr,&sb.objno[0]); - H5F_addr_encode(loc->file,&p,&addr); + H5F_addr_encode(loc->file,&p,addr); /* Serialize the selection */ if (H5S_select_serialize(space,p) < 0) @@ -224,7 +224,7 @@ H5R_create(void *_ref, H5G_entry_t *loc, const char *name, H5R_type_t ref_type, /* Serialize the heap ID and index for storage in the file */ p=(uint8_t *)ref->heapid; - H5F_addr_encode(loc->file,&p,&hobjid.addr); + H5F_addr_encode(loc->file,&p,hobjid.addr); INT32ENCODE(p,hobjid.idx); /* Free the buffer we serialized data in */ diff --git a/src/H5Smpio.c b/src/H5Smpio.c index fd18f7c..e186959 100644 --- a/src/H5Smpio.c +++ b/src/H5Smpio.c @@ -572,7 +572,7 @@ H5S_mpio_spaces_xfer (H5F_t *f, const struct H5O_layout_t *layout, /* calculate the absolute base addr (i.e., the file view disp) */ disp = f->shared->base_addr; - H5F_addr_add( &disp, &(layout->addr) ); + H5F_addr_add(&disp, layout->addr); f->shared->access_parms->u.mpio.disp = disp; #ifdef H5Smpi_DEBUG fprintf(stdout, "spaces_xfer: disp=%Hu\n", disp.offset ); @@ -590,13 +590,13 @@ H5S_mpio_spaces_xfer (H5F_t *f, const struct H5O_layout_t *layout, HRETURN_ERROR(H5E_DATASPACE, H5E_BADTYPE, FAIL,"transfer size overflows size_t"); if (do_write) { err = H5F_low_write( f->shared->lf, f->shared->access_parms, - xfer_parms, &addr, mpi_count, buf ); + xfer_parms, addr, mpi_count, buf ); if (err) { HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL,"MPI write failed"); } } else { err = H5F_low_read ( f->shared->lf, f->shared->access_parms, - xfer_parms, &addr, mpi_count, buf ); + xfer_parms, addr, mpi_count, buf ); if (err) { HRETURN_ERROR(H5E_IO, H5E_READERROR, FAIL,"MPI read failed"); } @@ -4781,7 +4781,7 @@ H5T_copy(const H5T_t *old_dt, H5T_copy_t method) * Return a transient type (locked or unlocked) or an opened named * type. */ - if (H5F_addr_defined (&(new_dt->ent.header))) { + if (H5F_addr_defined(new_dt->ent.header)) { if (H5O_open (&(new_dt->ent))<0) { H5MM_xfree (new_dt); HRETURN_ERROR (H5E_DATATYPE, H5E_CANTOPENOBJ, NULL, @@ -4939,7 +4939,7 @@ H5T_commit (H5G_entry_t *loc, const char *name, H5T_t *type) done: if (ret_value<0) { - if (H5F_addr_defined (&(type->ent.header))) { + if (H5F_addr_defined(type->ent.header)) { H5O_close(&(type->ent)); H5F_addr_undef (&(type->ent.header)); } @@ -5023,7 +5023,7 @@ H5T_close(H5T_t *dt) * If a named type is being closed then close the object header also. */ if (H5T_STATE_OPEN==dt->state) { - assert (H5F_addr_defined (&(dt->ent.header))); + assert (H5F_addr_defined(dt->ent.header)); if (H5O_close(&(dt->ent))<0) { HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to close data type object header"); diff --git a/src/H5Tvlen.c b/src/H5Tvlen.c index ce4b342..446b1fb 100644 --- a/src/H5Tvlen.c +++ b/src/H5Tvlen.c @@ -316,7 +316,7 @@ herr_t H5T_vlen_disk_write(const H5F_xfer_t UNUSED *xfer_parms, H5F_t *f, void * HRETURN_ERROR(H5E_DATATYPE, H5E_WRITEERROR, FAIL, "Unable to write VL information"); /* Get the heap information */ - H5F_addr_encode(f,&vl,&hobjid.addr); + H5F_addr_encode(f,&vl,hobjid.addr); INT32ENCODE(vl,hobjid.idx); FUNC_LEAVE (SUCCEED); diff --git a/src/H5private.h b/src/H5private.h index df0b852..9117c2e 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -396,11 +396,7 @@ typedef unsigned uintn; /* * File addresses. */ -typedef struct { - uint64_t offset; /*offset within an HDF5 file */ -} haddr_t; - -#define H5F_ADDR_UNDEF {((uint64_t)(-1L))} +typedef uint64_t haddr_t; /* * Maximum and minimum values. These should be defined in <limits.h> for the diff --git a/test/dtypes.c b/test/dtypes.c index e9ff79c..730dc0d 100644 --- a/test/dtypes.c +++ b/test/dtypes.c @@ -1585,7 +1585,7 @@ test_conv_bitfield(void) static herr_t convert_opaque(hid_t UNUSED st, hid_t UNUSED dt, H5T_cdata_t *cdata, size_t UNUSED nelmts, size_t UNUSED stride, void UNUSED *_buf, - void UNUSED *bkg, hid_t dset_xfer_plid) + void UNUSED *bkg, hid_t UNUSED dset_xfer_plid) { if (H5T_CONV_CONV==cdata->command) num_opaque_conversions_g++; return 0; diff --git a/test/gheap.c b/test/gheap.c index 404b24a..1cae524 100644 --- a/test/gheap.c +++ b/test/gheap.c @@ -84,7 +84,7 @@ test_1 (hid_t fapl) FAILED(); puts(" Unable to insert object into global heap"); nerrors++; - } else if (i && H5F_addr_gt (&(obj[i-1].addr), &(obj[i].addr))) { + } else if (i && H5F_addr_gt (obj[i-1].addr, obj[i].addr)) { FAILED(); puts(" Collection addresses are not monotonically increasing"); nerrors++; diff --git a/test/istore.c b/test/istore.c index adf23b6..0ccfe5e 100644 --- a/test/istore.c +++ b/test/istore.c @@ -562,8 +562,8 @@ main(int argc, char *argv[]) */ if (H5F_LOW_FAMILY==H5Pget_driver(fapl)) { haddr_t addr; - addr.offset = 8 * ((uint64_t)1<<30); /*8 GB */ - H5F_low_seteof(f->shared->lf, &addr); + addr = 8 * ((uint64_t)1<<30); /*8 GB */ + H5F_low_seteof(f->shared->lf, addr); } /* diff --git a/test/lheap.c b/test/lheap.c index d281bf2..85f5338 100644 --- a/test/lheap.c +++ b/test/lheap.c @@ -76,7 +76,7 @@ main(void) for (j=4; j<i; j++) buf[j] = '0' + j%10; if (j>4) buf[j] = '\0'; - if ((size_t)(-1)==(obj[i]=H5HL_insert(f, &heap_addr, strlen(buf)+1, + if ((size_t)(-1)==(obj[i]=H5HL_insert(f, heap_addr, strlen(buf)+1, buf))) { FAILED(); H5Eprint(stdout); @@ -101,7 +101,7 @@ main(void) sprintf(buf, "%03d-", i); for (j=4; j<i; j++) buf[j] = '0' + j%10; if (j>4) buf[j] = '\0'; - if (NULL==(s=H5HL_peek(f, &heap_addr, obj[i]))) { + if (NULL==(s=H5HL_peek(f, heap_addr, obj[i]))) { FAILED(); H5Eprint(stdout); goto error; diff --git a/test/ohdr.c b/test/ohdr.c index 32b97bb..2da033b 100644 --- a/test/ohdr.c +++ b/test/ohdr.c @@ -71,14 +71,14 @@ main(void) /* create a new message */ TESTING("message creation"); - stab.btree_addr.offset = 11111111; - stab.heap_addr.offset = 22222222; + stab.btree_addr = 11111111; + stab.heap_addr = 22222222; if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) { FAILED(); H5Eprint(stdout); goto error; } - if (H5AC_flush(f, NULL, 0, TRUE)<0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, TRUE)<0) { FAILED(); H5Eprint(stdout); goto error; @@ -88,13 +88,13 @@ main(void) H5Eprint(stdout); goto error; } - if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) || - H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) { + if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) || + H5F_addr_ne(ro.heap_addr, stab.heap_addr)) { FAILED(); HDfprintf(stdout, " got: {%a, %a}\n", - &(ro.btree_addr), &(ro.heap_addr)); + ro.btree_addr, ro.heap_addr); HDfprintf(stdout, " ans: {%a, %a}\n", - &(stab.btree_addr), &(stab.heap_addr)); + stab.btree_addr, stab.heap_addr); goto error; } PASSED(); @@ -103,14 +103,14 @@ main(void) * Test modification of an existing message. */ TESTING("message modification"); - stab.btree_addr.offset = 33333333; - stab.heap_addr.offset = 44444444; + stab.btree_addr = 33333333; + stab.heap_addr = 44444444; if (H5O_modify(&oh_ent, H5O_STAB, 0, 0, &stab)<0) { FAILED(); H5Eprint(stdout); goto error; } - if (H5AC_flush(f, NULL, 0, TRUE)<0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, TRUE)<0) { FAILED(); H5Eprint(stdout); goto error; @@ -120,13 +120,13 @@ main(void) H5Eprint(stdout); goto error; } - if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) || - H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) { + if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) || + H5F_addr_ne(ro.heap_addr, stab.heap_addr)) { FAILED(); HDfprintf(stdout, " got: {%a, %a}\n", - &(ro.btree_addr), &(ro.heap_addr)); + ro.btree_addr, ro.heap_addr); HDfprintf(stdout, " ans: {%a, %a}\n", - &(stab.btree_addr), &(stab.heap_addr)); + stab.btree_addr, stab.heap_addr); goto error; } PASSED(); @@ -136,14 +136,14 @@ main(void) * Test creation of a second message of the same type. */ TESTING("duplicate message creation"); - stab.btree_addr.offset = 55555555; - stab.heap_addr.offset = 66666666; + stab.btree_addr = 55555555; + stab.heap_addr = 66666666; if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) { FAILED(); H5Eprint(stdout); goto error; } - if (H5AC_flush(f, NULL, 0, TRUE)<0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, TRUE)<0) { FAILED(); H5Eprint(stdout); goto error; @@ -153,13 +153,13 @@ main(void) H5Eprint(stdout); goto error; } - if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) || - H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) { + if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) || + H5F_addr_ne(ro.heap_addr, stab.heap_addr)) { FAILED(); HDfprintf(stdout, " got: {%a, %a}\n", - &(ro.btree_addr), &(ro.heap_addr)); + ro.btree_addr, ro.heap_addr); HDfprintf(stdout, " ans: {%a, %a}\n", - &(stab.btree_addr), &(stab.heap_addr)); + stab.btree_addr, stab.heap_addr); goto error; } PASSED(); @@ -168,14 +168,14 @@ main(void) * Test modification of the second message with a symbol table. */ TESTING("duplicate message modification"); - stab.btree_addr.offset = 77777777; - stab.heap_addr.offset = 88888888; + stab.btree_addr = 77777777; + stab.heap_addr = 88888888; if (H5O_modify(&oh_ent, H5O_STAB, 1, 0, &stab)<0) { FAILED(); H5Eprint(stdout); goto error; } - if (H5AC_flush(f, NULL, 0, TRUE)<0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, TRUE)<0) { FAILED(); H5Eprint(stdout); goto error; @@ -185,13 +185,13 @@ main(void) H5Eprint(stdout); goto error; } - if (H5F_addr_ne(&(ro.btree_addr), &(stab.btree_addr)) || - H5F_addr_ne(&(ro.heap_addr), &(stab.heap_addr))) { + if (H5F_addr_ne(ro.btree_addr, stab.btree_addr) || + H5F_addr_ne(ro.heap_addr, stab.heap_addr)) { FAILED(); HDfprintf(stdout, " got: {%a, %a}\n", - &(ro.btree_addr), &(ro.heap_addr)); + ro.btree_addr, ro.heap_addr); HDfprintf(stdout, " ans: {%a, %a}\n", - &(stab.btree_addr), &(stab.heap_addr)); + stab.btree_addr, stab.heap_addr); goto error; } PASSED(); @@ -202,15 +202,15 @@ main(void) */ TESTING("object header overflow in memory"); for (i=0; i<40; i++) { - stab.btree_addr.offset = (i+1)*1000+1; - stab.heap_addr.offset = (i+1)*1000+2; + stab.btree_addr = (i+1)*1000+1; + stab.heap_addr = (i+1)*1000+2; if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) { FAILED(); H5Eprint(stdout); goto error; } } - if (H5AC_flush(f, NULL, 0, TRUE)<0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, TRUE)<0) { FAILED(); H5Eprint(stdout); goto error; @@ -223,14 +223,14 @@ main(void) */ TESTING("object header overflow on disk"); for (i=0; i<10; i++) { - stab.btree_addr.offset = (i + 1) * 1000 + 10; - stab.heap_addr.offset = (i + 1) * 1000 + 20; + stab.btree_addr = (i + 1) * 1000 + 10; + stab.heap_addr = (i + 1) * 1000 + 20; if (H5O_modify(&oh_ent, H5O_STAB, H5O_NEW_MESG, 0, &stab)<0) { FAILED(); H5Eprint(stdout); goto error; } - if (H5AC_flush(f, NULL, 0, TRUE)<0) { + if (H5AC_flush(f, NULL, H5F_ADDR_UNDEF, TRUE)<0) { FAILED(); H5Eprint(stdout); goto error; diff --git a/tools/h5debug.c b/tools/h5debug.c index d842958..63afb98 100644 --- a/tools/h5debug.c +++ b/tools/h5debug.c @@ -79,18 +79,16 @@ main(int argc, char *argv[]) H5F_addr_reset(&extra); if (argc > 2) { printf("New address: %s\n", argv[2]); - addr.offset = HDstrtoll(argv[2], NULL, 0); + addr = HDstrtoll(argv[2], NULL, 0); } if (argc > 3) { - extra.offset = HDstrtoll(argv[3], NULL, 0); + extra = HDstrtoll(argv[3], NULL, 0); } /* * Read the signature at the specified file position. */ - printf("Reading signature at address "); - H5F_addr_print(stdout, &addr); - printf(" (rel)\n"); - if (H5F_block_read(f, &addr, (hsize_t)sizeof(sig), &H5F_xfer_dflt, + HDfprintf(stdout, "Reading signature at address %a (rel)\n", addr); + if (H5F_block_read(f, addr, (hsize_t)sizeof(sig), &H5F_xfer_dflt, sig)<0) { fprintf(stderr, "cannot read signature\n"); HDexit(3); @@ -99,25 +97,25 @@ main(int argc, char *argv[]) /* * Debug the boot block. */ - status = H5F_debug(f, &addr, stdout, 0, VCOL); + status = H5F_debug(f, addr, stdout, 0, VCOL); } else if (!HDmemcmp(sig, H5HL_MAGIC, H5HL_SIZEOF_MAGIC)) { /* * Debug a local heap. */ - status = H5HL_debug(f, &addr, stdout, 0, VCOL); + status = H5HL_debug(f, addr, stdout, 0, VCOL); } else if (!HDmemcmp (sig, H5HG_MAGIC, H5HG_SIZEOF_MAGIC)) { /* * Debug a global heap collection. */ - status = H5HG_debug (f, &addr, stdout, 0, VCOL); + status = H5HG_debug (f, addr, stdout, 0, VCOL); } else if (!HDmemcmp(sig, H5G_NODE_MAGIC, H5G_NODE_SIZEOF_MAGIC)) { /* * Debug a symbol table node. */ - status = H5G_node_debug(f, &addr, stdout, 0, VCOL, &extra); + status = H5G_node_debug(f, addr, stdout, 0, VCOL, extra); } else if (!HDmemcmp(sig, H5B_MAGIC, H5B_SIZEOF_MAGIC)) { /* @@ -129,12 +127,12 @@ main(int argc, char *argv[]) switch (subtype) { case H5B_SNODE_ID: - status = H5G_node_debug(f, &addr, stdout, 0, VCOL, &extra); + status = H5G_node_debug(f, addr, stdout, 0, VCOL, extra); break; case H5B_ISTORE_ID: - ndims = (int)extra.offset; - status = H5F_istore_debug (f, &addr, stdout, 0, VCOL, ndims); + ndims = (int)extra; + status = H5F_istore_debug (f, addr, stdout, 0, VCOL, ndims); break; default: @@ -148,7 +146,7 @@ main(int argc, char *argv[]) * This could be an object header. Since they don't have a signature * it's a somewhat "ify" detection. */ - status = H5O_debug(f, &addr, stdout, 0, VCOL); + status = H5O_debug(f, addr, stdout, 0, VCOL); } else { /* |