SIONlib  1.6.1
Scalable I/O library for parallel access to task-local files
sion_generic_apidesc.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_GENERIC_APIDESC
10 #define SION_SION_GENERIC_APIDESC
11 
12 #define SION_GENERIC_API_LEVEL_NONE 70
13 #define SION_GENERIC_API_LEVEL_STD 71
14 #define SION_GENERIC_API_LEVEL_FULL 72
15 
16 /* container describing API generated by the generic API */
18  int aid;
19  char *name;
20  int level;
21 
22  /* STD callbacks */
23  int (*create_lcg_cb)(void **, void *, int, int, int, int, int, int);
24  int (*free_lcg_cb)(void *);
25 
26  int (*barrier_cb)(void *);
27  int (*bcastr_cb)(void *,void *, int,int,int);
28  int (*gatherr_cb)(void *,void *,void *,int,int,int);
29  int (*gathervr_cb)(void *,void *,void *,int, int *, int, int);
30  int (*scatterr_cb)(void *,void *,void *,int, int, int);
31  int (*scattervr_cb)(void *,void *,void *,int, int *, int, int);
32  char *(*get_multi_filename_cb)(const char *,int);
33 
34  /* callbacks for coalescing */
35  int (*gather_execute_cb)(const void *, sion_int64*, int, sion_int64,
36  void *, int, int, int, int,
37  int process_cb(const void *,sion_int64 *, int));
38  int (*execute_scatter_cb)(void *, sion_int64*, int, sion_int64,
39  void *, int, int, int, int,
40  int process_cb(void *,sion_int64 *, int));
41  int (*get_capability_cb)(void *);
42 
43 };
45 
46 _sion_generic_apidesc * _sion_generic_alloc_apidesc();
47 int _sion_generic_init_apidesc( _sion_generic_apidesc *sion_apidesc );
48 int _sion_generic_free_apidesc( _sion_generic_apidesc *sion_apidesc );
49 
50 
51 /* container describing additional data needed for each SION file opened with an API generated by the generic API */
53  _sion_generic_apidesc* apidesc;
54  int aid;
55  int grank;
56  int gsize;
57  int lrank;
58  int lsize;
59  int filenumber;
60  int numfiles;
61  void *comm_data_global;
62  void *comm_data_local;
63 };
65 
66 _sion_generic_gendata * _sion_generic_alloc_gendata();
67 int _sion_generic_init_gendata( _sion_generic_gendata *sion_gendata );
68 int _sion_generic_free_gendata( _sion_generic_gendata *sion_gendata );
69 
70 int _sion_generic_update_api_level( _sion_generic_apidesc *sion_gendata );
71 
72 #endif