[svn-r2137] Add SRB as a new VFL, add related info into these source codes.

This commit is contained in:
Raymond Lu 2000-04-13 10:16:20 -05:00
parent cd6f954955
commit 0461ad7f43
7 changed files with 677 additions and 11 deletions

View File

@ -26,9 +26,10 @@ static char RcsId[] = "@(#)$Revision$";
#include <H5FDmpio.h> /*MPI-2 I/O */
#include <H5FDgass.h> /*GASS I/O */
#include <H5FDdpss.h> /*Grid Storage I/O */
#include <H5FDsrb.h> /*SRB I/O */
#include <H5FDmulti.h> /*multiple files partitioned by mem usage */
#include <H5FDsec2.h> /*Posix unbuffered I/O */
#include <H5FDstdio.h> /* Standard C buffered I/O */
#include <H5FDsec2.h> /*Posix unbuffered I/O */
#include <H5FDstdio.h> /* Standard C buffered I/O */
/* Packages needed by this file... */
#include <H5private.h> /*library functions */
@ -170,6 +171,9 @@ H5F_init(void)
*
* Robb Matzke, 1999-02-19
* Added initialization for the H5I_FILE_CLOSING ID group.
*
* Raymond Lu, April 10, 2000
* Put SRB into the 'Register predefined file drivers' list.
*-------------------------------------------------------------------------
*/
static herr_t
@ -216,6 +220,9 @@ H5F_init_interface(void)
#endif
#ifdef H5_HAVE_GRIDSTORAGE
if ((status=H5FD_DPSS)<0) goto end_registration;
#endif
#ifdef H5_HAVE_SRB
if ((status=H5FD_SRB)<0) goto end_registration;
#endif
if ((status=H5FD_CORE)<0) goto end_registration;
if ((status=H5FD_MULTI)<0) goto end_registration;

600
src/H5FDsrb.c Normal file
View File

@ -0,0 +1,600 @@
/*
* Copyright <A9> 1999 NCSA
* All rights reserved.
*
* Programmer: Raymond Lu <slu@ncsa.uiuc.edu>
* Wednesday, April 12, 2000
*
* Purpose: SRB I/O driver.
*/
#include <H5private.h> /*library functions */
#include <H5Eprivate.h> /*error handling */
#include <H5Fprivate.h> /*files */
#include <H5FDsrb.h> /* Core file driver */
#include <H5MMprivate.h> /* Memory allocation */
#include <H5Pprivate.h> /*property lists */
/* The driver identification number, initialized at runtime */
static hid_t H5FD_SRB_g = 0;
#ifdef H5_HAVE_SRB
#ifdef HAVE_LSEEK64
# define file_offset_t off64_t
# define file_seek lseek64
#else
# define file_offset_t off_t
# define file_seek lseek
#endif
/*
* These macros check for overflow of various quantities. These macros
* assume that file_offset_t is signed and haddr_t and size_t are unsigned.
*
* ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
* is too large to be represented by the second argument
* of the file seek function.
*
* SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
* large to be represented by the `size_t' type.
*
* REGION_OVERFLOW: Checks whether an address and size pair describe data
* which can be addressed entirely by the second
* argument of the file seek function.
*/
#define MAXADDR (((haddr_t)1<<(8*sizeof(file_offset_t)-1))-1)
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || \
((A) & ~(haddr_t)MAXADDR))
#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
sizeof(file_offset_t)<sizeof(size_t) || \
HADDR_UNDEF==(A)+(Z) || \
(file_offset_t)((A)+(Z))<(file_offset_t)(A))
static H5FD_t *H5FD_srb_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
static herr_t H5FD_srb_close(H5FD_t *_file);
static haddr_t H5FD_srb_get_eoa(H5FD_t *_file);
static herr_t H5FD_srb_set_eoa(H5FD_t *_file, haddr_t addr);
static haddr_t H5FD_srb_get_eof(H5FD_t *_file);
static herr_t H5FD_srb_read(H5FD_t *_file, hid_t fapl_id, haddr_t addr,
hsize_t size, void *buf);
static herr_t H5FD_srb_write(H5FD_t *_file, hid_t fapl_id, haddr_t addr,
hsize_t size, const void *buf);
static herr_t H5FD_srb_flush(H5FD_t *_file);
/* The description of a file belonging to this driver. */
typedef struct H5FD_srb_t {
H5FD_t pub; /*public stuff, must be first */
int fd; /*file descriptor */
srbConn *srb_conn; /*SRB connection handler */
SRB_Info info; /*file information */
haddr_t eoa; /*end of allocated region */
haddr_t eof; /*end of file; current file size*/
haddr_t pos; /*current file I/O position */
} H5FD_srb_t;
/* SRB-specific file access properties */
typedef struct H5FD_srb_fapl_t {
srbConn *srb_conn; /*SRB connection handler */
SRB_Info info; /*file information */
} H5FD_srb_fapl_t;
/* SRB file driver information */
static const H5FD_class_t H5FD_srb_g = {
"srb", /*name */
MAXADDR, /*maxaddr */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
sizeof(H5FD_srb_fapl_t), /*fapl_size */
NULL, /*fapl_get */
NULL, /*fapl_copy */
NULL, /*fapl_free */
0, /*dxpl_size */
NULL, /*dxpl_copy */
NULL, /*dxpl_free */
H5FD_srb_open, /*open */
H5FD_srb_close, /*close */
NULL, /*cmp */
NULL, /*alloc */
NULL, /*free */
H5FD_srb_get_eoa, /*get_eoa */
H5FD_srb_set_eoa, /*set_eoa */
H5FD_srb_get_eof, /*get_eof */
H5FD_srb_read, /*read */
H5FD_srb_write, /*write */
H5FD_srb_flush, /*flush */
H5FD_FLMAP_SINGLE, /*fl_map */
};
/* Interface initialization */
#define PABLO_MASK H5FD_srb_mask
#define INTERFACE_INIT H5FD_srb_init
static intn interface_initialize_g = 0;
/*-------------------------------------------------------------------------
* Function: H5FD_srb_init
*
* Purpose: Initialize this driver by registering the driver with the
* library.
*
* Return: Success: The driver ID for the srb driver.
*
* Failure: Negative.
*
* Programmer: Raymond Lu
* Wednesday, April 12, 2000
* Modifications:
*
*-------------------------------------------------------------------------
*/
hid_t
H5FD_srb_init(void)
{
FUNC_ENTER(H5FD_srb_init, FAIL);
if(H5I_VFL != H5Iget_type(H5FD_SRB_g))
H5FD_SRB_g = H5FDregister(&H5FD_srb_g);
FUNC_LEAVE(H5FD_SRB_g);
}
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_srb
*
* Purpose: Store srb connection(client to server) handler SRB_CONN
* after connected and user supplied INFO in the file access
* property list FAPL_ID, which can be used to create or open
* file.
*
* Return: Success: Non-negative
*
* Failure: Negative
*
* Programmer: Raymond Lu
* April 12, 2000
* Modifications:
*-------------------------------------------------------------------------
*/
herr_t
H5Pset_fapl_srb(hid_t fapl_id, SRB_Info info)
{
herr_t ret_value = FAIL;
H5FD_srb_fapl_t fa;
int srb_status;
FUNC_ENTER(h5FD_set_fapl_srb, FAIL);
if(H5P_FILE_ACCESS != H5Pget_class(fapl_id))
HRETURN_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "Not a fapl");
/*connect to SRB server */
fa.srb_conn = clConnect(info.srbHost, info.srbPort, info.srbAuth);
if((srb_status = clStatus(fa.srb_conn)) != CLI_CONNECTION_OK) {
fprintf(stderr,"%s",clErrorMessage(fa.srb_conn));
clFinish(fa.srb_conn);
/*not sure about first 2 parameters. */
HRETURN_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL,
"Connection to srbMaster failed.");
}
fa.info = info;
ret_value = H5Pset_driver(fapl_id, H5FD_SRB, &fa);
FUNC_LEAVE(ret_value);
}
/*-------------------------------------------------------------------------
* Function: H5Pget_fapl_srb
*
* Purpose: If the file access property list is set to the H5FD_SRB
* driver then this function returns the srb file INFO.
*
* Return: Success: File INFO is returned.
* Failure: Negative
* Programmer: Raymond Lu
* April 12, 2000
* Modifications:
*-------------------------------------------------------------------------
*/
herr_t
H5Pget_fapl_srb(hid_t fapl_id, SRB_Info *info/*out*/)
{
H5FD_srb_fapl_t *fa;
FUNC_ENTER(H5Pget_fapl_srb, FAIL);
H5TRACE2("e","ix",fapl_id,info);
if(H5P_FILE_ACCESS != H5Pget_class(fapl_id))
HRETURN_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a fapl");
if(H5FD_SRB != H5Pget_driver(fapl_id))
HRETURN_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
if(NULL==(fa=H5Pget_driver_info(fapl_id)))
HRETURN_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
if(info)
*info = fa->info;
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_open
*
* Purpose: Opens a file with name NAME. The FLAGS are a bit field with
* purpose similar to the second argument of open(2) and which
* are defined in H5Fpublic.h. The file access property list
* FAPL_ID contains the properties driver properties and MAXADDR
* is the largest address which this file will be expected to
* access.
*
* Return: Success: A new file pointer.
*
* Failure: NULL
*
* Programmer: Raymond Lu
* April 12, 2000
* Modifications:
*-------------------------------------------------------------------------
*/
static H5FD_t *
H5FD_srb_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
{
struct srbStat srb_stat;
H5FD_srb_fapl_t *fa=NULL;
H5FD_srb_fapl_t _fa;
H5FD_srb_t *file;
int srb_fid;
FUNC_ENTER(H5FD_srb_open, FAIL);
/* Check arguments */
if (!name || !*name)
HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name");
if (0==maxaddr || HADDR_UNDEF==maxaddr)
HRETURN_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
if (ADDR_OVERFLOW(maxaddr))
HRETURN_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
if(H5P_DEFAULT==fapl_id || H5FD_SRB!=H5Pget_driver(fapl_id)) {
memset((void*)&_fa, 0, sizeof(H5FD_srb_fapl_t));
fa = &_fa;
}
else {
fa = H5Pget_driver_info(fapl_id);
assert(fa);
}
/* When I come down here, the possible flag values and the correct
* responses are given here :-
*
* 1. H5F_ACC_CREAT | H5F_ACC_RDWR | H5F_ACC_EXCL : The file is
* a new one. Go ahead and open it with srbObjCreate.
* 2. H5F_ACC_CREAT | H5F_ACC_RDWR | H5F_ACC_TRUNC : how do I handle this?
* srbObjCreate doesn't support truncate while srbObjOpen doesn't
* support create. Try to call both srbFileCreate and srbFileOpen!
* 3. H5F_ACC_RDWR | H5F_ACC_TRUNC : Use O_RDWR | O_TRUNC with srbObjOpen.
* 4. H5F_ACC_RDWR : Use O_RDWR with srbObjOpen.
* 5. Flag is not set : Use O_RDONLY with srbObjOpen.
*
* (In srbObjOpen, O_CREATE is not supported. For file creation, use
* srbObjCreate.)
*/
if((flags & H5F_ACC_CREAT) && (flags & H5F_ACC_RDWR) &&
(flags & H5F_ACC_EXCL))
srb_fid = srbFileCreate(fa->srb_conn, fa->info.storSysType,
fa->info.srbHost, name, fa->info.mode, fa->info.size);
else if((flags & H5F_ACC_CREAT) && (flags & H5F_ACC_RDWR) &&
(flags & H5F_ACC_TRUNC)) {
if( (srb_fid = srbFileCreate(fa->srb_conn, fa->info.storSysType,
fa->info.srbHost, name, fa->info.mode, fa->info.size)) < 0 ) {
srb_fid = srbFileOpen(fa->srb_conn, fa->info.storSysType,
fa->info.srbHost, name, O_RDWR|O_TRUNC, fa->info.mode);
}
}
else if((flags & H5F_ACC_RDWR) && (flags & H5F_ACC_TRUNC))
srb_fid = srbFileOpen(fa->srb_conn, fa->info.storSysType,
fa->info.srbHost, name, O_RDWR|O_TRUNC, fa->info.mode);
else if(flags & H5F_ACC_RDWR)
srb_fid = srbFileOpen(fa->srb_conn, fa->info.storSysType,
fa->info.srbHost, name, O_RDWR, fa->info.mode);
else
srb_fid = srbFileOpen(fa->srb_conn, fa->info.storSysType,
fa->info.srbHost, name, O_RDONLY, fa->info.mode);
if(srb_fid < 0) {
fprintf(stderr, "cannot open file %s\n", name);
fprintf(stderr,"%s",clErrorMessage(fa->srb_conn));
clFinish(fa->srb_conn);
HRETURN_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "cannot open file");
}
if(srbFileStat(fa->srb_conn, fa->info.storSysType, fa->info.srbHost, name,
&srb_stat)!=0) {
srbFileClose(fa->srb_conn, srb_fid);
clFinish(fa->srb_conn);
HRETURN_ERROR(H5E_IO, H5E_BADFILE, NULL, "SRB file stat failed");
}
if (NULL==(file=H5MM_calloc(sizeof(H5FD_srb_t))))
HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL,
"can't allocate file struct");
file->fd = srb_fid;
file->eof = srb_stat.st_size;
file->pos = HADDR_UNDEF;
file->srb_conn = fa->srb_conn;
file->info = fa->info;
FUNC_LEAVE((H5FD_t*)file);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_close
*
* Purpose: Closes a file and srb connection.
*
* Return: Success: Non-negative
*
* Failure: Negative
*
* Programmer: Raymond Lu
* Modification:
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_srb_close(H5FD_t *_file)
{
H5FD_srb_t *file = (H5FD_srb_t *)_file;
FUNC_ENTER(H5FD_srb_close, FAIL);
srbFileClose(file->srb_conn, file->fd);
clFinish(file->srb_conn);
H5MM_xfree(file);
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_get_eoa
*
* Purpose: Gets the end-of-address marker for the file. The EOA marker
* is the first address past the last byte allocated in the
* format address space.
*
* Return: Success: The end-of-address marker.
*
* Failure: HADDR_UNDEF
*
* Programmer: Raymond Lu
* April 12, 2000
*
* Modifications:
*-------------------------------------------------------------------------
*/
static haddr_t
H5FD_srb_get_eoa(H5FD_t *_file)
{
H5FD_srb_t *file = (H5FD_srb_t *)_file;
FUNC_ENTER(H5FD_srb_get_eoa, HADDR_UNDEF);
FUNC_LEAVE(file->eoa);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_set_eoa
*
* Purpose: Set the end-of-address marker for the file. This function is
* called shortly after an existing HDF5 file is opened in order
* to tell the driver where the end of the HDF5 data is located.
*
* Return: Success: 0
*
* Failure: -1
*
* Programmer: Robb Matzke
* Friday, August 6, 1999
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_srb_set_eoa(H5FD_t *_file, haddr_t addr)
{
H5FD_srb_t *file = (H5FD_srb_t *)_file;
FUNC_ENTER(H5FD_srb_set_eoa, FAIL);
file->eoa = addr;
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_get_eof
*
* Purpose: Gets the end-of-file marker for the file. The EOF marker
* is the real size of the file.
*
* Return: Success: The end-of-address marker.
*
* Failure: HADDR_UNDEF
*
* Programmer: Raymond Lu
* April 12, 2000
*
* Modifications:
*-------------------------------------------------------------------------
*/
static haddr_t
H5FD_srb_get_eof(H5FD_t *_file)
{
H5FD_srb_t *file = (H5FD_srb_t *)_file;
FUNC_ENTER(H5FD_srb_get_eof, HADDR_UNDEF);
FUNC_LEAVE(file->eof);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_read
*
* Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
* into buffer BUF.
*
* Return: Success: Zero. Result is stored in caller-supplied
* buffer BUF.
*
* Failure: -1, Contents of buffer BUF are undefined.
*
* Programmer: Raymond Lu
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_srb_read(H5FD_t *_file, hid_t dxpl_id/*unused*/, haddr_t addr,
hsize_t size, void *buf)
{
H5FD_srb_t *file = (H5FD_srb_t*)_file;
ssize_t nbytes;
FUNC_ENTER(H5FD_srb_read, FAIL);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
HRETURN_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined");
if (REGION_OVERFLOW(addr, size))
HRETURN_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
if (addr+size>file->eoa)
HRETURN_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
if( addr!=file->pos &&
srbFileSeek(file->srb_conn, (int)file->fd, (int)addr, SEEK_SET)<0 ) {
file->pos = HADDR_UNDEF;
srbFileClose(file->srb_conn, file->fd);
clFinish(file->srb_conn);
HRETURN_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file seek failed");
}
/*
* Read data, being careful of interrupted system calls, partial results,
* and the end of the file.
*/
while(size>0) {
if((nbytes=srbFileRead(file->srb_conn, (int)file->fd, (char*)buf,
(int)size))<0) {
file->pos = HADDR_UNDEF;
srbFileClose(file->srb_conn, file->fd);
clFinish(file->srb_conn);
HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL,
"srb file write failed");
}
if (0==nbytes) {
/*end of file but not end of format address space*/
memset(buf, 0, size);
size = 0;
}
size -= (hsize_t)nbytes;
addr += (haddr_t)nbytes;
buf = (char*)buf + nbytes;
}
/* Update current position */
file->pos = addr;
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_write
*
* Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
* from buffer BUF.
*
* Return: Success: Zero.
*
* Failure: -1
*
* Programmer: Raymond Lu
* April 12, 2000
* Modifications:
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_srb_write(H5FD_t *_file, hid_t dxpl_id/*unused*/, haddr_t addr,
hsize_t size, const void *buf)
{
H5FD_srb_t *file = (H5FD_srb_t*)_file;
ssize_t nbytes;
FUNC_ENTER(H5FD_srb_write, FAIL);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
HRETURN_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined");
if (REGION_OVERFLOW(addr, size))
HRETURN_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
if (addr+size>file->eoa)
HRETURN_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
if( addr!=file->pos &&
srbFileSeek(file->srb_conn, (int)file->fd, (int)addr, SEEK_SET)<0 ) {
file->pos = HADDR_UNDEF;
srbObjClose(file->srb_conn, file->fd);
clFinish(file->srb_conn);
HRETURN_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file seek failed");
}
while(size>0) {
if( (nbytes=srbFileWrite(file->srb_conn, (int)file->fd, (char*)buf,
(int)size)) < 0 ) {
file->pos = HADDR_UNDEF;
srbObjClose(file->srb_conn, file->fd);
clFinish(file->srb_conn);
HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL,
"srb file write failed");
}
size -= (hsize_t)nbytes;
addr += (haddr_t)nbytes;
buf = (const char*)buf + nbytes;
}
/* Update current position and eof */
file->pos = addr;
if(file->pos > file->eof)
file->eof = file->pos;
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5FD_srb_flush
*
* Purpose: Makes sure that all data is on disk.
*
* Return: Success: Non-negative
*
* Failure: Negative
*
* Programmer: Raymond Lu
* April 12, 2000
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_srb_flush(H5FD_t *_file)
{
H5FD_srb_t *file = (H5FD_srb_t*)_file;
/*why H5FD_family_flush?*/
FUNC_ENTER(H5FD_family_flush, FAIL);
if(srbFileSync(file->srb_conn, file->fd) != 0) {
srbFileClose(file->srb_conn, file->fd);
clFinish(file->srb_conn);
HRETURN_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file sync failed");
}
FUNC_LEAVE(SUCCEED);
}
#endif /* H5_HAVE_SRB */

37
src/H5FDsrb.h Normal file
View File

@ -0,0 +1,37 @@
/*
* Copyright <A9> 1999 NCSA
* All rights reserved.
*
* Programmer: Raymond Lu <slu@ncsa.uiuc.edu>
* Wednesday, April 12, 2000
* Purpose: The public header file for the SRB driver.
*/
#ifndef H5FDsrb_H
#define H5FDsrb_H
#include <H5FDpublic.h>
#include <H5Ipublic.h>
#ifdef H5_HAVE_SRB
#define H5FD_SRB (H5FD_srb_init())
typedef struct SRB_Info { /* Define the SRB info object. */
char *srbHost; /* SRB host address of server */
char *srbPort; /* SRB host port number */
char *srbAuth; /* SRB Authentication-password */
int storSysType; /* Storage Type: 0=Unix, 1=UniTree, 2=HPSS,
* 3=FTP, 4=HTTP */
int mode; /* File mode-Unix access mode */
int size; /* File Size-Only valid for HPSS, -1 is default */
} SRB_Info;
__DLL__ hid_t H5FD_srb_init(void);
__DLL__ herr_t H5Pset_fapl_srb(hid_t fapl_id, SRB_Info info);
__DLL__ herr_t H5Pget_fapl_srb(hid_t fapl_id, SRB_Info *info);
#else
#define H5FD_SRB (-1)
#endif /* H5_HAVE_SRB */
#endif /* H5FDsrb_H */

View File

@ -80,7 +80,10 @@
/* Define if we have Globus GASS support */
#undef HAVE_GASS
/* Define if we have Globus Grid Storage support */
/* Define if we have SRB support */
#undef HAVE_SRB
/* Define if we have Globus Grid Storage support */
#undef HAVE_GRIDSTORAGE
/* The number of bytes in a __int64. */
@ -278,6 +281,9 @@
/* Define if you have the <setjmp.h> header file. */
#undef HAVE_SETJMP_H
/* Define if you have the <srbClient.h> header file. */
#undef HAVE_SRBCLIENT_H
/* Define if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
@ -314,12 +320,18 @@
/* Define if you have the <zlib.h> header file. */
#undef HAVE_ZLIB_H
/* Define if you have the SrbClient library (-lSrbClient). */
#undef HAVE_LIBSRBCLIENT
/* Define if you have the crypto library (-lcrypto). */
#undef HAVE_LIBCRYPTO
/* Define if you have the df library (-ldf). */
#undef HAVE_LIBDF
/* Define if you have the elf library (-lelf). */
#undef HAVE_LIBELF
/* Define if you have the globus_common library (-lglobus_common). */
#undef HAVE_LIBGLOBUS_COMMON
@ -383,6 +395,9 @@
/* Define if you have the silo library (-lsilo). */
#undef HAVE_LIBSILO
/* Define if you have the socket library (-lsocket). */
#undef HAVE_LIBSOCKET
/* Define if you have the ssl library (-lssl). */
#undef HAVE_LIBSSL

View File

@ -37,16 +37,20 @@ static char RcsId[] = "@(#)$Revision$";
#endif
#ifdef H5_HAVE_PARALLEL
# include <mpi.h>
#ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already*/
#ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already */
# include <mpio.h>
#endif
#endif
#ifdef H5_HAVE_GASS
#ifdef H5_HAVE_GASS /*for Globus GASS I/O */
#include "globus_common.h"
#include "globus_gass_file.h"
#endif
#ifdef H5_HAVE_SRB /*for SRB I/O */
#include <srbClient.h>
#endif
#include <H5api_adpt.h>
/* Version numbers */

View File

@ -21,12 +21,13 @@ CLEAN=libhdf5.settings
## Source and object files for the library (lexicographically)...
LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5D.c H5E.c H5F.c H5Farray.c H5Fistore.c \
H5FD.c H5FDsec2.c H5FDfamily.c H5FDmpio.c H5FDcore.c H5FDdpss.c \
H5FDmulti.c H5FDgass.c H5FDstdio.c H5FL.c H5G.c H5Gent.c H5Gnode.c \
H5FDmulti.c H5FDgass.c H5FDsrb.c H5FDstdio.c H5G.c H5Gent.c H5Gnode.c \
H5Gstab.c H5HG.c H5HL.c H5I.c H5MF.c H5MM.c H5O.c H5Oattr.c H5Ocomp.c \
H5Ocont.c H5Odtype.c H5Oefl.c H5Ofill.c H5Olayout.c H5Omtime.c H5Oname.c \
H5Onull.c H5Osdspace.c H5Oshared.c H5Ostab.c H5P.c H5R.c H5RA.c H5S.c \
H5Sall.c H5Shyper.c H5Smpio.c H5Snone.c H5Spoint.c H5Sselect.c H5T.c \
H5Tbit.c H5Tconv.c H5Tinit.c H5Tvlen.c H5V.c H5Z.c H5Zdeflate.c
H5Tbit.c H5Tconv.c H5Tinit.c H5Tvlen.c H5TB.c H5V.c H5Z.c H5Zdeflate.c
LIB_OBJ=$(LIB_SRC:.c=.lo)
@ -36,10 +37,11 @@ MOSTLYCLEAN=H5detect.o H5detect.lo H5detect H5Tinit.o H5Tinit.lo H5Tinit.c
## Public header files (to be installed)...
PUB_HDR=H5public.h H5Apublic.h H5ACpublic.h H5Bpublic.h H5Dpublic.h \
H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDdpss.h H5FDfamily.h H5FDgass.h \
H5FDmpio.h H5FDsec2.h H5FDcore.h H5FDmulti.h H5FDstdio.h H5Gpublic.h \
H5HGpublic.h H5HLpublic.h H5Ipublic.h H5MMpublic.h H5Opublic.h H5Ppublic.h \
H5Rpublic.h H5RApublic.h H5Spublic.h H5Tpublic.h H5Zpublic.h H5pubconf.h \
hdf5.h H5api_adpt.h
H5FDmpio.h H5FDsec2.h H5FDsrb.h H5FDcore.h H5FDmulti.h H5FDstdio.h \
H5Gpublic.h H5HGpublic.h H5HLpublic.h H5Ipublic.h H5MMpublic.h \
H5Opublic.h H5Ppublic.h H5Rpublic.h H5RApublic.h H5Spublic.h H5Tpublic.h \
H5Zpublic.h H5pubconf.h hdf5.h H5api_adpt.h
## Other header files (not to be installed)...
PRIVATE_HDR=H5private.h H5Aprivate.h H5Apkg.h H5ACprivate.h H5Bprivate.h \

View File

@ -45,6 +45,7 @@
#include <H5FDmpio.h> /* Parallel files using MPI-2 I/O */
#include <H5FDsec2.h> /* POSIX unbuffered file I/O */
#include <H5FDstdio.h> /* Standard C buffered I/O */
#include <H5FDsrb.h> /* Remote access using SRB */
#include <H5FDgass.h> /* Remote files using GASS I/O */
#include <H5FDdpss.h> /* Remote access using Storage Client API */
#include <H5FDmulti.h> /* Usage-partitioned file family */