SIONlib  1.7.1
Scalable I/O library for parallel access to task-local files
sion_filedesc.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_FILEDESC_H
15 #define SION_SION_FILEDESC_H
16 
17 #define _SION_FLAG1_NONE 0
18 #define _SION_FLAG2_NONE 0
20 #define _SION_FLAG1_USECACHE 2
23 #define SION_FILESTATE_UNKNOWN -1
24 #define SION_FILESTATE_PAROPEN 0
25 #define SION_FILESTATE_SEROPEN 1
26 #define SION_FILESTATE_SEROPENRANK 2
27 #define SION_FILESTATE_SEROPENMASTER 3
28 #define SION_FILESTATE_PAROPENMAPPEDMASTER 4
29 #define SION_FILESTATE_PAROPENMAPPEDMANAGED 5
30 #define SION_FILESTATE_PAROPENMAPPED 6
31 #define SION_FILESTATE_CLOSE 10
32 #define SION_FILEMODE_UNKNOWN -20
33 #define SION_FILEMODE_READ 20
34 #define SION_FILEMODE_WRITE 30
36 #define SION_CACHE_TODISK 40
37 #define SION_CACHE_TOMEM 41
38 #define SION_CACHE_UNKNOWN 42
39 #define SION_CACHE_FNLEN 16
41 #define SION_DESCSTATE_ORIG 200
42 #define SION_DESCSTATE_DUP 201
43 #define SION_DESCSTATE_DUP_SEL_RANK 202
44 #define SION_DESCSTATE_DUP_SEL_RANK_KEY 203
46 #define SION_HINTS_TYPE_UNKNOWN 160
47 #define SION_HINTS_TYPE_LINUX 161
48 #define SION_HINTS_TYPE_GPFS 162
50 #define SION_CAPABILITY_FULL 50
51 #define SION_CAPABILITY_ONLY_SENDER 51
52 #define SION_CAPABILITY_NONE 52
54 #define _SION_DEBUG_PRINT_ALL 1
55 #define _SION_DEBUG_PRINT_RECURSIVE 2
56 
57 #include "sion_file.h"
58 
63 
78 
79  /* file pointer and temporary data */
81  void* dataptr;
82  void* keyvalptr;
83  sion_int32 debug;
84  sion_int32 sid;
85  char* fpbuffer;
86  sion_int32 fpbuffer_size;
87  sion_int32 usebuffer;
88  char* buffer;
89  sion_int32 buffer_size;
90  sion_int32 buffer_ptr;
92  /* current position in file */
93  sion_int32 rank;
94  sion_int64 currentpos;
95  sion_int32 currentblocknr;
97  /* data for one task */
98  sion_int64 *blocksizes;
99  sion_int32 lastchunknr;
100  sion_int64 startpos;
102  /* meta header data in file */
103  char *fname;
104  sion_int32 globalrank;
105  sion_int32 ntasks;
106  sion_int32 state;
107  sion_int32 mode;
108  sion_int32 endianness;
112  sion_int32 swapbytes;
113  sion_int32 filesionversion;
114  sion_int32 filesionpatchlevel;
115  sion_int32 fileversion;
116  sion_int32 fsblksize;
117  sion_int32 maxchunks;
118  sion_int64 flag1;
119  sion_int64 flag2;
120  sion_int64 chunksize;
121  sion_int64 chunksize_req;
122  sion_int64 globalskip;
123  sion_int64 end_of_header;
124  sion_int64 start_of_varheader;
125  sion_int64 start_of_data;
126  sion_int32 nfiles;
127  sion_int32 filenumber;
128  sion_int32 maxusedchunks;
130  /* dupped filedesc */
131  sion_int32 dup_mode;
132  sion_int32 dup_sel_rank;
133  sion_uint64 dup_sel_key;
135  /* mapped files */
136  sion_int32 lrank;
137  sion_int32 ntotaltasksinfile;
138  sion_int32 nlocaltasksinfile;
139  sion_int32 filemanagedbytask;
141  /* all tasks */
142  sion_int64 *all_chunksizes;
143  sion_int64 *all_globalranks;
144  sion_int64 *all_localranks;
145  sion_int64 *all_startpointers;
146  sion_int64 *all_currentpos;
147  sion_int64 *all_currentblocknr;
148  sion_int32 *all_coll_collector;
149  sion_int32 *all_coll_collsize;
150  sion_int32 *all_coll_capability;
152  void **all_keyvalptr;
154  /* all tasks, all chunks */
155  sion_int64 *all_blockcount;
156  sion_int64 *all_blocksizes;
158  /* multi-file */
159  sion_int32 mapping_size;
160  sion_int32 *mapping;
161  char *prefix;
162  char *newfname;
165  /* compression */
166  sion_int32 compress;
168  /* Key-value */
169  sion_int32 keyvalmode;
171  /* persistent cache */
172  sion_int32 usecache;
173  sion_int32 cachesize;
174  sion_int32 cacheid;
176  sion_int32 cachemode;
177  char* cacheptr;
179  /* collective I/O */
180  sion_int32 usecoll;
181  sion_int32 collsize;
182  sion_int32 collector;
183  sion_int32 coll_capability;
184  sion_int32 colldebug;
185  sion_int32 collcmdused;
186  sion_int32 fileptr_exported;
187  sion_int32 collmergemode;
189  /* buddy */
190  sion_int32 usebuddy;
191  sion_int32 buddylevel;
192  sion_int32 buddynr;
193  void *buddies;
195  /* hints */
196  sion_int32 usehints;
197  sion_int32 hinttype;
199 };
200 
202 int _sion_init_filedesc( _sion_filedesc *sion_filedesc );
203 int _sion_print_filedesc( _sion_filedesc *sion_filedesc, int level, char *desc, int all );
204 int _sion_free_filedesc( _sion_filedesc *sion_filedesc );
205 int _sion_realloc_filedesc_blocklist( _sion_filedesc *sion_filedesc, sion_int32 maxchunks );
206 
207 int _sion_alloc_filedesc_all_chunksizes(_sion_filedesc *sion_filedesc);
208 int _sion_alloc_filedesc_all_startpointers(_sion_filedesc *sion_filedesc);
209 int _sion_alloc_filedesc_all_globalranks(_sion_filedesc *sion_filedesc);
210 int _sion_alloc_filedesc_all_localranks(_sion_filedesc *sion_filedesc);
211 int _sion_alloc_filedesc_arrays( _sion_filedesc *sion_filedesc );
212 int _sion_alloc_filedesc_all_keyvalptr(_sion_filedesc *sion_filedesc);
213 
214 int _sion_free_filedesc_arrays( _sion_filedesc *sion_filedesc );
215 int _sion_free_filedesc_all_chunksizes(_sion_filedesc *sion_filedesc);
216 int _sion_free_filedesc_all_globalranks(_sion_filedesc *sion_filedesc);
217 int _sion_free_filedesc_all_startpointers(_sion_filedesc *sion_filedesc);
218 int _sion_free_filedesc_all_localranks(_sion_filedesc *sion_filedesc);
219 int _sion_free_filedesc_all_keyvalptr(_sion_filedesc *sion_filedesc);
220 
221 
222 
225 
228 
229 int _sion_alloc_filedesc_arrays_mapped(_sion_filedesc *sion_filedesc);
230 int _sion_alloc_filedesc_block_arrays_mapped(_sion_filedesc *sion_filedesc);
231 
232 char* _sion_fileptrflags_to_str (unsigned int flag);
233 int _sion_get_size_of_filedesc(_sion_filedesc *sion_filedesc, int *numbytes, int *numfds);
234 
236 
237 
238 #endif
sion_int32 filemanagedbytask
char * _sion_fileptrflags_to_str(unsigned int flag)
Definition: sion_file.c:1454
Sion File Descriptor Structure.
Definition: sion_filedesc.h:77
int _sion_alloc_filedesc_arrays(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion arrays.
int _sion_get_size_of_filedesc(_sion_filedesc *sion_filedesc, int *numbytes, int *numfds)
get size of internal data structure sion_filedesc
int _sion_print_filedesc(_sion_filedesc *sion_filedesc, int level, char *desc, int all)
Print the initialized sion file description.
sion_int64 * all_blockcount
sion_int64 * all_currentpos
sion_int32 filesionpatchlevel
sion_int64 * all_globalranks
int _sion_init_filedesc(_sion_filedesc *sion_filedesc)
Initialize the sion file description.
Definition: sion_filedesc.c:35
sion_int64 * all_currentblocknr
sion_int32 * all_coll_collector
sion_int32 fileptr_exported
sion_int32 * all_coll_capability
sion_int64 * all_startpointers
char cachefn[SION_CACHE_FNLEN]
int _sion_alloc_filedesc_block_arrays(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion structure, fields for all chunksizes of all tasks.
#define SION_CACHE_FNLEN
Definition: sion_filedesc.h:39
sion_int32 coll_capability
sion_int32 fpbuffer_size
Definition: sion_filedesc.h:86
sion_int64 * blocksizes
Definition: sion_filedesc.h:98
sion_int32 currentblocknr
Definition: sion_filedesc.h:95
sion_int64 * all_chunksizes
sion_int64 * all_localranks
int _sion_free_filedesc_coll_arrays(_sion_filedesc *sion_filedesc)
free memory for the internal sion arrays
_sion_filedesc * _sion_alloc_filedesc()
Allocates memory for internal sion structure.
int _sion_alloc_filedesc_block_arrays_only(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion structure, fields for all chunksizes of all tasks.
int _sion_alloc_filedesc_coll_arrays(_sion_filedesc *sion_filedesc)
Allocate memory for the internal sion arrays.
int _sion_realloc_filedesc_blocklist(_sion_filedesc *sion_filedesc, sion_int32 maxchunks)
Increase the memory used by the internal sion structure for the blocklist.
sion_int32 filesionversion
sion_int32 * all_coll_collsize
sion_int64 start_of_varheader
sion_int64 * all_blocksizes
sion_int32 ntotaltasksinfile
sion_int32 nlocaltasksinfile
_sion_filedesc * _sion_dup_filedesc(_sion_filedesc *sion_filedesc)
duplicates a filedesc data structure, not copying/reopen active file pointers
int _sion_free_filedesc_arrays(_sion_filedesc *sion_filedesc)
free memory for the internal sion arrays
_sion_filedesc ** multifiles
_sion_fileptr * fileptr
Definition: sion_filedesc.h:80