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.