SIONlib  1.6.1
Scalable I/O library for parallel access to task-local files
sion_filedesc.h
1 /****************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 *****************************************************************************
4 ** Copyright (c) 2008-2015 **
5 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
6 ** **
7 ** See the file COPYRIGHT in the package base directory for details **
8 ****************************************************************************/
9 #ifndef SION_SION_FILEDESC_H
10 #define SION_SION_FILEDESC_H
11 
12 #define _SION_FLAG1_NONE 0
13 #define _SION_FLAG2_NONE 0
15 #define _SION_FLAG1_USECACHE 2
18 #define SION_FILESTATE_UNKNOWN -1
19 #define SION_FILESTATE_PAROPEN 0
20 #define SION_FILESTATE_SEROPEN 1
21 #define SION_FILESTATE_SEROPENRANK 2
22 #define SION_FILESTATE_SEROPENMASTER 3
23 #define SION_FILESTATE_PAROPENMAPPEDMASTER 4
24 #define SION_FILESTATE_PAROPENMAPPEDMANAGED 5
25 #define SION_FILESTATE_PAROPENMAPPED 6
26 #define SION_FILESTATE_CLOSE 10
27 #define SION_FILEMODE_UNKNOWN -20
28 #define SION_FILEMODE_READ 20
29 #define SION_FILEMODE_WRITE 30
31 #define SION_CACHE_TODISK 40
32 #define SION_CACHE_TOMEM 41
33 #define SION_CACHE_UNKNOWN 42
34 #define SION_CACHE_FNLEN 16
36 #define SION_DESCSTATE_ORIG 200
37 #define SION_DESCSTATE_DUP 201
38 #define SION_DESCSTATE_DUP_SEL_RANK 202
39 #define SION_DESCSTATE_DUP_SEL_RANK_KEY 203
41 #define SION_HINTS_TYPE_UNKNOWN 160
42 #define SION_HINTS_TYPE_LINUX 161
43 #define SION_HINTS_TYPE_GPFS 162
45 #define SION_CAPABILITY_FULL 50
46 #define SION_CAPABILITY_ONLY_SENDER 51
47 #define SION_CAPABILITY_NONE 52
49 #define _SION_DEBUG_PRINT_ALL 1
50 #define _SION_DEBUG_PRINT_RECURSIVE 2
51 
52 #include "sion_file.h"
53 
58 
73 
74  /* file pointer and temporary data */
76  void* dataptr;
77  void* keyvalptr;
78  sion_int32 debug;
79  sion_int32 sid;
80  char* fpbuffer;
81  sion_int32 fpbuffer_size;
82  sion_int32 usebuffer;
83  char* buffer;
84  sion_int32 buffer_size;
85  sion_int32 buffer_ptr;
87  /* current position in file */
88  sion_int32 rank;
89  sion_int64 currentpos;
90  sion_int32 currentblocknr;
92  /* data for one task */
93  sion_int64 *blocksizes;
94  sion_int32 lastchunknr;
95  sion_int64 startpos;
97  /* meta header data in file */
98  char *fname;
99  sion_int32 globalrank;
100  sion_int32 ntasks;
101  sion_int32 state;
102  sion_int32 mode;
103  sion_int32 endianness;
107  sion_int32 swapbytes;
108  sion_int32 filesionversion;
109  sion_int32 filesionpatchlevel;
110  sion_int32 fileversion;
111  sion_int32 fsblksize;
112  sion_int32 maxchunks;
113  sion_int64 flag1;
114  sion_int64 flag2;
115  sion_int64 chunksize;
116  sion_int64 chunksize_req;
117  sion_int64 globalskip;
118  sion_int64 end_of_header;
119  sion_int64 start_of_varheader;
120  sion_int64 start_of_data;
121  sion_int32 nfiles;
122  sion_int32 filenumber;
123  sion_int32 maxusedchunks;
125  /* dupped filedesc */
126  sion_int32 dup_mode;
127  sion_int32 dup_sel_rank;
128  sion_uint64 dup_sel_key;
130  /* mapped files */
131  sion_int32 lrank;
132  sion_int32 ntotaltasksinfile;
133  sion_int32 nlocaltasksinfile;
134  sion_int32 filemanagedbytask;
136  /* all tasks */
137  sion_int64 *all_chunksizes;
138  sion_int64 *all_globalranks;
139  sion_int64 *all_localranks;
140  sion_int64 *all_startpointers;
141  sion_int64 *all_currentpos;
142  sion_int64 *all_currentblocknr;
143  sion_int32 *all_coll_collector;
144  sion_int32 *all_coll_collsize;
145  sion_int32 *all_coll_capability;
147  void **all_keyvalptr;
149  /* all tasks, all chunks */
150  sion_int64 *all_blockcount;
151  sion_int64 *all_blocksizes;
153  /* multi-file */
154  sion_int32 mapping_size;
155  sion_int32 *mapping;
156  char *prefix;
157  char *newfname;
160  /* compression */
161  sion_int32 compress;
163  /* Key-value */
164  sion_int32 keyvalmode;
166  /* persistent cache */
167  sion_int32 usecache;
168  sion_int32 cachesize;
169  sion_int32 cacheid;
170  char cachefn[SION_CACHE_FNLEN];
171  sion_int32 cachemode;
172  char* cacheptr;
174  /* collective I/O */
175  sion_int32 usecoll;
176  sion_int32 collsize;
177  sion_int32 collector;
178  sion_int32 coll_capability;
179  sion_int32 colldebug;
180  sion_int32 collcmdused;
181  sion_int32 fileptr_exported;
182  sion_int32 collmergemode;
184  /* hints */
185  sion_int32 usehints;
186  sion_int32 hinttype;
188 };
189 
190 _sion_filedesc * _sion_alloc_filedesc();
191 int _sion_init_filedesc( _sion_filedesc *sion_filedesc );
192 int _sion_print_filedesc( _sion_filedesc *sion_filedesc, int level, char *desc, int all );
193 int _sion_free_filedesc( _sion_filedesc *sion_filedesc );
194 int _sion_realloc_filedesc_blocklist( _sion_filedesc *sion_filedesc, sion_int32 maxchunks );
195 
196 int _sion_alloc_filedesc_all_chunksizes(_sion_filedesc *sion_filedesc);
197 int _sion_alloc_filedesc_all_startpointers(_sion_filedesc *sion_filedesc);
198 int _sion_alloc_filedesc_all_globalranks(_sion_filedesc *sion_filedesc);
199 int _sion_alloc_filedesc_all_localranks(_sion_filedesc *sion_filedesc);
200 int _sion_alloc_filedesc_arrays( _sion_filedesc *sion_filedesc );
201 int _sion_alloc_filedesc_all_keyvalptr(_sion_filedesc *sion_filedesc);
202 
203 int _sion_free_filedesc_arrays( _sion_filedesc *sion_filedesc );
204 int _sion_free_filedesc_all_chunksizes(_sion_filedesc *sion_filedesc);
205 int _sion_free_filedesc_all_globalranks(_sion_filedesc *sion_filedesc);
206 int _sion_free_filedesc_all_startpointers(_sion_filedesc *sion_filedesc);
207 int _sion_free_filedesc_all_localranks(_sion_filedesc *sion_filedesc);
208 int _sion_free_filedesc_all_keyvalptr(_sion_filedesc *sion_filedesc);
209 
210 
211 
212 int _sion_alloc_filedesc_block_arrays(_sion_filedesc *sion_filedesc);
213 int _sion_alloc_filedesc_block_arrays_only(_sion_filedesc *sion_filedesc);
214 
215 int _sion_alloc_filedesc_coll_arrays(_sion_filedesc *sion_filedesc);
216 int _sion_free_filedesc_coll_arrays(_sion_filedesc *sion_filedesc);
217 
218 int _sion_alloc_filedesc_arrays_mapped(_sion_filedesc *sion_filedesc);
219 int _sion_alloc_filedesc_block_arrays_mapped(_sion_filedesc *sion_filedesc);
220 
221 char* _sion_fileptrflags_to_str (unsigned int flag);
222 int _sion_get_size_of_filedesc(_sion_filedesc *sion_filedesc, int *numbytes, int *numfds);
223 
224 _sion_filedesc * _sion_dup_filedesc(_sion_filedesc *sion_filedesc);
225 
226 
227 #endif
sion_int32 filemanagedbytask
Sion File Descriptor Structure.
Definition: sion_filedesc.h:72
sion_int64 * all_blockcount
sion_int64 * all_currentpos
sion_int32 filesionpatchlevel
sion_int64 * all_globalranks
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]
sion_int32 coll_capability
sion_int32 fpbuffer_size
Definition: sion_filedesc.h:81
sion_int64 * blocksizes
Definition: sion_filedesc.h:93
sion_int32 currentblocknr
Definition: sion_filedesc.h:90
sion_int64 * all_chunksizes
sion_int64 * all_localranks
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 ** multifiles
_sion_fileptr * fileptr
Definition: sion_filedesc.h:75