15 #include <sys/types.h> 23 #include "sion_error_handler.h" 28 #if defined(_SION_LINUX) 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> 62 int rc = SION_SUCCESS;
70 DPRINTFP((2,
"_sion_cache_check_env", -1,
"usecache=%d cachesize=%d flag1=%d\n", sion_filedesc->
usecache, sion_filedesc->
cachesize, sion_filedesc->
flag1));
83 int rc = SION_SUCCESS;
88 #if defined(_SION_LINUX) 90 #elif defined(_SION_AIX) 91 #elif defined(_SION_BGL) 92 #elif defined(_SION_BGP) 93 #elif defined(_SION_XT) 96 #if defined(_SION_LINUX) 98 #elif defined(_SION_AIX) 99 #elif defined(_SION_BGL) 100 #elif defined(_SION_BGP) 101 #elif defined(_SION_XT) 104 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_init: unknown SION mode\n");
119 int rc = SION_SUCCESS;
123 #if defined(_SION_LINUX) 125 #elif defined(_SION_AIX) 126 #elif defined(_SION_BGL) 127 #elif defined(_SION_BGP) 128 #elif defined(_SION_XT) 142 int rc = SION_SUCCESS;
147 #if defined(_SION_LINUX) && (!defined(_SION_XT)) 151 if(sion_filedesc->
rank>0) sprintf(sion_filedesc->
cachefn,
"sion_%07d",sion_filedesc->
rank);
152 else sprintf(sion_filedesc->
cachefn,
"sion_%07d",0);
155 shmfd = shm_open(sion_filedesc->
cachefn, O_CREAT | O_EXCL | O_RDWR, S_IRWXU | S_IRWXG);
157 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_create_linux: could not create segment\n");
159 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after shm_open %s shmfd=%d\n", sion_filedesc->
cachefn, shmfd));
162 ftruncate(shmfd, sion_filedesc->
cachesize);
165 shmptr = (
char *)mmap(NULL, sion_filedesc->
cachesize, PROT_READ | PROT_WRITE, MAP_SHARED, shmfd, 0);
166 if (shmptr == NULL) {
167 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_create_linux: could not mmap segment\n");
169 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after mmap %d bytes\n", sion_filedesc->
cachesize));
187 int rc = SION_SUCCESS;
191 #if defined(_SION_LINUX) && (!defined(_SION_XT)) 195 if(sion_filedesc->
rank>0) sprintf(sion_filedesc->
cachefn,
"sion_%07d",sion_filedesc->
rank);
196 else sprintf(sion_filedesc->
cachefn,
"sion_%07d",0);
199 shmfd = shm_open(sion_filedesc->
cachefn, O_RDWR, S_IRWXU | S_IRWXG);
201 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_losd_linux: could not load segment\n");
203 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after shm_open %s shmfd=%d\n", sion_filedesc->
cachefn, shmfd));
206 ftruncate(shmfd, sion_filedesc->
cachesize);
209 shmptr = (
char *)mmap(NULL, sion_filedesc->
cachesize, PROT_READ | PROT_WRITE, MAP_SHARED, shmfd, 0);
210 if (shmptr == NULL) {
211 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_create_linux: could not mmap segment\n");
213 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after mmap %d bytes\n", sion_filedesc->
cachesize));
233 int rc = SION_SUCCESS;
238 #if defined(_SION_LINUX) && (!defined(_SION_XT)) 240 if (shm_unlink(sion_filedesc->
cachefn) != 0) {
241 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_destroy_linux: could not destroy segment\n");
Sion File Descriptor Structure.
char * _sion_getenv(const char *name)
#define SION_FILEMODE_READ
char cachefn[SION_CACHE_FNLEN]
int _sion_cache_check_env(_sion_filedesc *sion_filedesc)
Check if environment variables are set to use cache.
#define SION_FILEMODE_WRITE
#define _SION_FLAG1_USECACHE
int _sion_cache_destroy_linux(_sion_filedesc *sion_filedesc)
Deallocate cache for linux.
int _sion_cache_create_linux(_sion_filedesc *sion_filedesc)
Allocate cache for linux.
int _sion_cache_load_linux(_sion_filedesc *sion_filedesc)
Load an already allocated cache for linux.
int _sion_cache_destroy(_sion_filedesc *sion_filedesc)
Deallocate the cache.
int _sion_cache_init(_sion_filedesc *sion_filedesc)
Allocate and initalize the cache.