SIONlib  1.6.2
Scalable I/O library for parallel access to task-local files
sion_internal.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 *****************************************************************************
4 ** Copyright (c) 2008-2016 **
5 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
6 ** **
7 ** See the file COPYRIGHT in the package base directory for details **
8 ****************************************************************************/
9 
14 #ifndef SION_SION_INTERNAL_H
15 #define SION_SION_INTERNAL_H
16 
17 #include "sion_filedesc.h"
18 #include "sion_internal_startptr.h"
19 
20 #define _SION_READ_MASTER_ONLY_OF_MULTI_FILES 0
21 #define _SION_READ_ALL_OF_MULTI_FILES 1
22 
23 #define _SION_SAFE_FREE(ptr, null) {if (ptr) {free(ptr); ptr = null;}}
24 
25 /* internal functions for serial open/close, will also be used by parallel APIs */
26 int _sion_open( const char *fname,
27  const char* file_mode,
28  int *ntasks,
29  int *nfiles,
30  sion_int64 **chunksizes,
31  sion_int32 *fsblksize,
32  int **globalranks,
33  FILE **fileptr);
34 
35 int _sion_open_rank( const char *fname,
36  const char *file_mode,
37  sion_int64 *chunksize,
38  sion_int32 *fsblksize,
39  int *rank,
40  FILE **fileptr);
41 
42 int _sion_open_write(const char *fname, sion_int64 file_mode_flags, int *ntasks, int *nfiles, sion_int64 **chunksizes, sion_int32 *fsblksize, int **globalranks, FILE **fileptr);
43 int _sion_open_read(const char *fname, sion_int64 file_mode_flags, int read_all, int *ntasks, int *nfiles, sion_int64 **chunksizes, sion_int32 *fsblksize, int **globalranks, FILE **fileptr);
44 int _sion_open_read_single(const char *fname, sion_int64 file_mode_flags, int *ntasks, int *nfiles, sion_int64 **chunksizes, sion_int32 *fsblksize, int **globalranks, FILE **fileptr, _sion_filedesc *sion_filedesc);
45 int _sion_open_read_master(const char *fname, sion_int64 file_mode_flags, int *ntasks, int *nfiles, sion_int64 **chunksizes, sion_int32 *fsblksize, int **globalranks, FILE **fileptr, _sion_filedesc *sion_filedesc);
46 
47 int _sion_close(_sion_filedesc *sion_filedesc);
48 
49 int _sion_create_new_block( _sion_filedesc *sion_filedesc );
50 int _sion_flush_block( _sion_filedesc *sion_filedesc );
51 int _sion_update_fileposition( _sion_filedesc *sion_filedesc );
53 
54 char * _sion_get_multi_filename(const char *fname, int filenumber);
55 
56  /* Error types */
57 #define _SION_ERROR_RETURN -10001
58 #define _SION_ERROR_ABORT -10002
59 #define _SION_ERROR_WARN -10003
60 #define _SION_ERROR_UNKNOWN -10020
61 
62 int __sion_error(int rc, int level, char * errmsg);
63 int _sion_errorprint(int rc, int level, const char *format, ...);
64 int _sion_errorprint_on_rank(int rc, int level, int rank, const char *format, ...);
65 
66 sion_int32 _sion_get_endianness_with_flags(sion_int64 flags);
67 
68  /* File mode flags */
69 #define _SION_FMODE_WRITE 1024
70 #define _SION_FMODE_READ 2048
71 #define _SION_FMODE_ANSI 1
72 #define _SION_FMODE_POSIX 2
73 #define _SION_FMODE_BUFFERED 4
74 #define _SION_FMODE_COMPRESS 8
75 #define _SION_FMODE_COLLECTIVE 16
76 #define _SION_FMODE_COLLECTIVE_MERGE 32
77 #define _SION_FMODE_KEYVAL 64
78 #define _SION_FMODE_KEYVAL_INLINE 4096
79 #define _SION_FMODE_KEYVAL_META 8192
80 #define _SION_FMODE_KEYVAL_HASH 16384
81 #define _SION_FMODE_KEYVAL_NONE 32768
82 #define _SION_FMODE_KEYVAL_UNKNOWN 65536
83 #define _SION_FMODE_ENDIANNESS_SET 131072
84 #define _SION_FMODE_ENDIANNESS_BIG 262144
85 
86 char *_sion_getenv(const char *name);
87 
88 
89 #endif
int _sion_open_write(const char *fname, sion_int64 file_mode_flags, int *ntasks, int *nfiles, sion_int64 **chunksizes, sion_int32 *fsblksize, int **globalranks, FILE **fileptr)
internal sion serial open function for writing on one file
int _sion_check_on_collective_mode(_sion_filedesc *sion_filedesc)
check if a collective operation are already called,
int _sion_errorprint(int rc, int level, const char *format,...)
Internal SION error.
Sion File Descriptor Structure.
Definition: sion_filedesc.h:77
sion_int32 _sion_get_endianness_with_flags(sion_int64 flags)
Return endianness including possible choice via flags.
char * _sion_get_multi_filename(const char *fname, int filenumber)
generates the multi filename
int _sion_create_new_block(_sion_filedesc *sion_filedesc)
Create a new block for the internal data structure.
int _sion_open_read(const char *fname, sion_int64 file_mode_flags, int read_all, int *ntasks, int *nfiles, sion_int64 **chunksizes, sion_int32 *fsblksize, int **globalranks, FILE **fileptr)
internal sion serial open function for reading on one or more files
char * _sion_getenv(const char *name)
int _sion_flush_block(_sion_filedesc *sion_filedesc)
Update the internal data structure.
int _sion_update_fileposition(_sion_filedesc *sion_filedesc)
Update the internal data structure (check fileposition)