hotspot/src/os/solaris/vm/os_solaris.cpp
changeset 10494 3f347ed8bd3c
parent 10272 9377a9510c83
child 10561 bf51fe78a9ad
equal deleted inserted replaced
10284:17533dd1b807 10494:3f347ed8bd3c
  2775 }
  2775 }
  2776 
  2776 
  2777 bool os::commit_memory(char* addr, size_t bytes, bool exec) {
  2777 bool os::commit_memory(char* addr, size_t bytes, bool exec) {
  2778   int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
  2778   int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
  2779   size_t size = bytes;
  2779   size_t size = bytes;
  2780   return
  2780   char *res = Solaris::mmap_chunk(addr, size, MAP_PRIVATE|MAP_FIXED, prot);
  2781      NULL != Solaris::mmap_chunk(addr, size, MAP_PRIVATE|MAP_FIXED, prot);
  2781   if (res != NULL) {
       
  2782     if (UseNUMAInterleaving) {
       
  2783       numa_make_global(addr, bytes);
       
  2784     }
       
  2785     return true;
       
  2786   }
       
  2787   return false;
  2782 }
  2788 }
  2783 
  2789 
  2784 bool os::commit_memory(char* addr, size_t bytes, size_t alignment_hint,
  2790 bool os::commit_memory(char* addr, size_t bytes, size_t alignment_hint,
  2785                        bool exec) {
  2791                        bool exec) {
  2786   if (commit_memory(addr, bytes, exec)) {
  2792   if (commit_memory(addr, bytes, exec)) {
  3387     return false;
  3393     return false;
  3388   }
  3394   }
  3389   return true;
  3395   return true;
  3390 }
  3396 }
  3391 
  3397 
  3392 char* os::reserve_memory_special(size_t bytes, char* addr, bool exec) {
  3398 char* os::reserve_memory_special(size_t size, char* addr, bool exec) {
  3393   // "exec" is passed in but not used.  Creating the shared image for
  3399   // "exec" is passed in but not used.  Creating the shared image for
  3394   // the code cache doesn't have an SHM_X executable permission to check.
  3400   // the code cache doesn't have an SHM_X executable permission to check.
  3395   assert(UseLargePages && UseISM, "only for ISM large pages");
  3401   assert(UseLargePages && UseISM, "only for ISM large pages");
  3396 
  3402 
  3397   size_t size = bytes;
       
  3398   char* retAddr = NULL;
  3403   char* retAddr = NULL;
  3399   int shmid;
  3404   int shmid;
  3400   key_t ismKey;
  3405   key_t ismKey;
  3401 
  3406 
  3402   bool warn_on_failure = UseISM &&
  3407   bool warn_on_failure = UseISM &&
  3434       jio_snprintf(msg, sizeof(msg), "Failed to attach shared memory (errno = %d).", err);
  3439       jio_snprintf(msg, sizeof(msg), "Failed to attach shared memory (errno = %d).", err);
  3435       warning(msg);
  3440       warning(msg);
  3436     }
  3441     }
  3437     return NULL;
  3442     return NULL;
  3438   }
  3443   }
  3439 
  3444   if ((retAddr != NULL) && UseNUMAInterleaving) {
       
  3445     numa_make_global(retAddr, size);
       
  3446   }
  3440   return retAddr;
  3447   return retAddr;
  3441 }
  3448 }
  3442 
  3449 
  3443 bool os::release_memory_special(char* base, size_t bytes) {
  3450 bool os::release_memory_special(char* base, size_t bytes) {
  3444   // detaching the SHM segment will also delete it, see reserve_memory_special()
  3451   // detaching the SHM segment will also delete it, see reserve_memory_special()