SIONlib  1.7.1
Scalable I/O library for parallel access to task-local files
sion_cache.c
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 #include <stdlib.h>
10 #include <stdio.h>
11 #include <string.h>
12 #include <time.h>
13 #include <assert.h>
14 
15 #include <sys/types.h>
16 #include <sys/stat.h>
17 #include <fcntl.h>
18 #include <unistd.h>
19 
20 
21 #include "sion.h"
22 #include "sion_debug.h"
23 #include "sion_error_handler.h"
24 #include "sion_internal.h"
25 #include "sion_cache.h"
26 
27 
28 #if defined(_SION_LINUX)
29 #include <sys/mman.h>
30 #elif defined(_SION_AIX)
31 #elif defined(_SION_BGL)
32 #elif defined(_SION_BGP)
33 #elif defined(_SION_XT)
34 #include <sys/types.h>
35 #include <sys/mman.h>
36 #include <fcntl.h> /* For O_* constants */
37 #endif
38 
39 
61  const char *t;
62  int rc = SION_SUCCESS;
63 
64  t = _sion_getenv("SION_CACHESIZE");
65  if(t) {
66  sion_filedesc->usecache=1;
67  sion_filedesc->cachesize=atoi(t);
68  sion_filedesc->flag1 |= _SION_FLAG1_USECACHE;
69  }
70  DPRINTFP((2, "_sion_cache_check_env", -1, "usecache=%d cachesize=%d flag1=%d\n", sion_filedesc->usecache, sion_filedesc->cachesize, sion_filedesc->flag1));
71 
72  return (rc);
73 }
74 
75 
82 int _sion_cache_init(_sion_filedesc *sion_filedesc) {
83  int rc = SION_SUCCESS;
84 
85  /* allocation */
86  if(sion_filedesc->usecache) {
87  if(sion_filedesc->mode == SION_FILEMODE_WRITE) {
88 #if defined(_SION_LINUX)
89  rc=_sion_cache_create_linux(sion_filedesc);
90 #elif defined(_SION_AIX)
91 #elif defined(_SION_BGL)
92 #elif defined(_SION_BGP)
93 #elif defined(_SION_XT)
94 #endif
95  } else if(sion_filedesc->mode == SION_FILEMODE_READ) {
96 #if defined(_SION_LINUX)
97  rc=_sion_cache_load_linux(sion_filedesc);
98 #elif defined(_SION_AIX)
99 #elif defined(_SION_BGL)
100 #elif defined(_SION_BGP)
101 #elif defined(_SION_XT)
102 #endif
103  } else {
104  _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,"_sion_cache_init: unknown SION mode\n");
105  }
106  }
107 
108  return (rc);
109 }
110 
111 
118 int _sion_cache_destroy(_sion_filedesc *sion_filedesc) {
119  int rc = SION_SUCCESS;
120 
121  /* deallocation */
122  if(sion_filedesc->usecache) {
123 #if defined(_SION_LINUX)
124  rc=_sion_cache_destroy_linux(sion_filedesc);
125 #elif defined(_SION_AIX)
126 #elif defined(_SION_BGL)
127 #elif defined(_SION_BGP)
128 #elif defined(_SION_XT)
129 #endif
130  }
131 
132  return (rc);
133 }
134 
142  int rc = SION_SUCCESS;
143 
144  return(rc);
145 }
146 
154  int rc = SION_SUCCESS;
155 
156  return(rc);
157 }
158 
159 
167  int rc = SION_SUCCESS;
168 
169 
170  return(rc);
171 }
Sion File Descriptor Structure.
Definition: sion_filedesc.h:77
char * _sion_getenv(const char *name)
#define SION_FILEMODE_READ
Definition: sion_filedesc.h:33
int _sion_cache_check_env(_sion_filedesc *sion_filedesc)
Check if environment variables are set to use cache.
Definition: sion_cache.c:60
#define SION_FILEMODE_WRITE
Definition: sion_filedesc.h:34
#define _SION_FLAG1_USECACHE
Definition: sion_filedesc.h:20
int _sion_cache_destroy_linux(_sion_filedesc *sion_filedesc)
Deallocate cache for linux.
Definition: sion_cache.c:166
int _sion_cache_create_linux(_sion_filedesc *sion_filedesc)
Allocate cache for linux.
Definition: sion_cache.c:141
int _sion_cache_load_linux(_sion_filedesc *sion_filedesc)
Load an already allocated cache for linux.
Definition: sion_cache.c:153
int _sion_cache_destroy(_sion_filedesc *sion_filedesc)
Deallocate the cache.
Definition: sion_cache.c:118
int _sion_cache_init(_sion_filedesc *sion_filedesc)
Allocate and initalize the cache.
Definition: sion_cache.c:82