summaryrefslogtreecommitdiffstats
path: root/src/H5Ffamily.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Ffamily.c')
-rw-r--r--src/H5Ffamily.c95
1 files changed, 48 insertions, 47 deletions
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