15 #include <sys/types.h> 27 #if defined(_SION_LINUX) 29 #elif defined(_SION_AIX) 30 #elif defined(_SION_BGL) 31 #elif defined(_SION_BGP) 32 #elif defined(_SION_XT) 33 #include <sys/types.h> 61 int rc = SION_SUCCESS;
69 DPRINTFP((2,
"_sion_cache_check_env", -1,
"usecache=%d cachesize=%d flag1=%d\n", sion_filedesc->
usecache, sion_filedesc->
cachesize, sion_filedesc->
flag1));
82 int rc = SION_SUCCESS;
87 #if defined(_SION_LINUX) 89 #elif defined(_SION_AIX) 90 #elif defined(_SION_BGL) 91 #elif defined(_SION_BGP) 92 #elif defined(_SION_XT) 95 #if defined(_SION_LINUX) 97 #elif defined(_SION_AIX) 98 #elif defined(_SION_BGL) 99 #elif defined(_SION_BGP) 100 #elif defined(_SION_XT) 103 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_init: unknown SION mode\n");
118 int rc = SION_SUCCESS;
122 #if defined(_SION_LINUX) 124 #elif defined(_SION_AIX) 125 #elif defined(_SION_BGL) 126 #elif defined(_SION_BGP) 127 #elif defined(_SION_XT) 141 int rc = SION_SUCCESS;
148 #if defined(_SION_LINUX) && (!defined(_SION_XT)) 149 if(sion_filedesc->
rank>0) sprintf(sion_filedesc->
cachefn,
"sion_%07d",sion_filedesc->
rank);
150 else sprintf(sion_filedesc->
cachefn,
"sion_%07d",0);
153 shmfd = shm_open(sion_filedesc->
cachefn, O_CREAT | O_EXCL | O_RDWR, S_IRWXU | S_IRWXG);
155 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_create_linux: could not create segment\n");
157 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after shm_open %s shmfd=%d\n", sion_filedesc->
cachefn, shmfd));
160 ftruncate(shmfd, sion_filedesc->
cachesize);
163 shmptr = (
char *)mmap(NULL, sion_filedesc->
cachesize, PROT_READ | PROT_WRITE, MAP_SHARED, shmfd, 0);
164 if (shmptr == NULL) {
165 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_create_linux: could not mmap segment\n");
167 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after mmap %d bytes\n", sion_filedesc->
cachesize));
185 int rc = SION_SUCCESS;
191 #if defined(_SION_LINUX) && (!defined(_SION_XT)) 192 if(sion_filedesc->
rank>0) sprintf(sion_filedesc->
cachefn,
"sion_%07d",sion_filedesc->
rank);
193 else sprintf(sion_filedesc->
cachefn,
"sion_%07d",0);
196 shmfd = shm_open(sion_filedesc->
cachefn, O_RDWR, S_IRWXU | S_IRWXG);
198 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_losd_linux: could not load segment\n");
200 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after shm_open %s shmfd=%d\n", sion_filedesc->
cachefn, shmfd));
203 ftruncate(shmfd, sion_filedesc->
cachesize);
206 shmptr = (
char *)mmap(NULL, sion_filedesc->
cachesize, PROT_READ | PROT_WRITE, MAP_SHARED, shmfd, 0);
207 if (shmptr == NULL) {
208 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_cache_create_linux: could not mmap segment\n");
210 DPRINTFP((2,
"_sion_cache_create_linux", -1,
"after mmap %d bytes\n", sion_filedesc->
cachesize));
230 int rc = SION_SUCCESS;
235 #if defined(_SION_LINUX) && (!defined(_SION_XT)) 237 if (shm_unlink(sion_filedesc->
cachefn) != 0) {
238 _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
int _sion_errorprint(int rc, int level, const char *format,...)
Internal SION error.
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.