SIONlib  1.7.7
Scalable I/O library for parallel access to task-local files
sion_generic_apidesc.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 *****************************************************************************
4 ** Copyright (c) 2008-2019 **
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_GENERIC_APIDESC_H
15 #define SION_SION_GENERIC_APIDESC_H
16 
17 #include "sion_const.h"
18 #include "sion_datatypes.h"
19 
20 #define SION_GENERIC_API_LEVEL_NONE 70
21 #define SION_GENERIC_API_LEVEL_STD 71
22 #define SION_GENERIC_API_LEVEL_FULL 72
23 
24 /* container describing API generated by the generic API */
26  int aid;
27  char *name;
28  int level;
29 
30  /* STD callbacks */
31  int (*create_lcg_cb)(void **, void *, int, int, int, int, int, int);
32  int (*free_lcg_cb)(void *);
33 
34  int (*barrier_cb)(void *);
35  int (*bcastr_cb)(void *,void *, int,int,int);
36  int (*gatherr_cb)(void *,void *,void *,int,int,int);
37  int (*gathervr_cb)(void *,void *,void *,int, int *, int, int);
38  int (*scatterr_cb)(void *,void *,void *,int, int, int);
39  int (*scattervr_cb)(void *,void *,void *,int, int *, int, int);
40  char *(*get_multi_filename_cb)(const char *,int);
41 
42  /* callbacks for coalescing */
43  int (*gather_execute_cb)(const void *, sion_int64*, int, sion_int64,
44  void *, int, int, int, int,
45  int process_cb(const void *,sion_int64 *, int));
46  int (*execute_scatter_cb)(void *, sion_int64*, int, sion_int64,
47  void *, int, int, int, int,
48  int process_cb(void *,sion_int64 *, int));
49  int (*get_capability_cb)(void *);
50 
51 };
53 
57 
58 
59 /* container describing additional data needed for each SION file opened with an API generated by the generic API */
61  _sion_generic_apidesc* apidesc;
62  int aid;
63  int grank;
64  int gsize;
65  int lrank;
66  int lsize;
67  int filenumber;
68  int numfiles;
69  void *comm_data_global;
70  void *comm_data_local;
71 };
73 
77 
79 
80 #endif
int _sion_generic_free_apidesc(_sion_generic_apidesc *sion_apidesc)
free apidesc structure
int _sion_generic_update_api_level(_sion_generic_apidesc *sion_gendata)
Update API level.
int _sion_generic_free_gendata(_sion_generic_gendata *sion_gendata)
Free sion gendata description.
int _sion_generic_init_apidesc(_sion_generic_apidesc *sion_apidesc)
Initialize the sion api description.
_sion_generic_gendata * _sion_generic_alloc_gendata(void)
Allocates memory for internal sion api data structure needed for each SION file.
int _sion_generic_init_gendata(_sion_generic_gendata *sion_gendata)
Initialize the sion file description.
_sion_generic_apidesc * _sion_generic_alloc_apidesc(void)
Allocates memory for internal sion api desc structure.