< prev index next >

src/os/solaris/vm/os_solaris.inline.hpp

Print this page




  54 
  55 inline bool os::allocate_stack_guard_pages() {
  56   assert(uses_stack_guard_pages(), "sanity check");
  57   int r = thr_main() ;
  58   guarantee (r == 0 || r == 1, "CR6501650 or CR6493689") ;
  59   return r;
  60 }
  61 
  62 
  63 // On Solaris, reservations are made on a page by page basis, nothing to do.
  64 inline void os::pd_split_reserved_memory(char *base, size_t size,
  65                                       size_t split, bool realloc) {
  66 }
  67 
  68 
  69 // Bang the shadow pages if they need to be touched to be mapped.
  70 inline void os::bang_stack_shadow_pages() {
  71 }
  72 inline void os::dll_unload(void *lib) { ::dlclose(lib); }
  73 
  74 inline DIR* os::opendir(const char* dirname) {
  75   assert(dirname != NULL, "just checking");
  76   return ::opendir(dirname);
  77 }
  78 
  79 inline int os::readdir_buf_size(const char *path) {
  80   int size = pathconf(path, _PC_NAME_MAX);
  81   return (size < 0 ? MAXPATHLEN : size) + sizeof(dirent) + 1;
  82 }
  83 
  84 inline struct dirent* os::readdir(DIR* dirp, dirent* dbuf) {
  85   assert(dirp != NULL, "just checking");
  86 #if defined(_LP64) || defined(_GNU_SOURCE) || _FILE_OFFSET_BITS==64
  87   dirent* p;
  88   int status;
  89 
  90   if((status = ::readdir_r(dirp, dbuf, &p)) != 0) {
  91     errno = status;
  92     return NULL;
  93   } else
  94     return p;
  95 #else  // defined(_LP64) || defined(_GNU_SOURCE) || _FILE_OFFSET_BITS==64
  96   return ::readdir_r(dirp, dbuf);
  97 #endif // defined(_LP64) || defined(_GNU_SOURCE) || _FILE_OFFSET_BITS==64
  98 }
  99 
 100 inline int os::closedir(DIR *dirp) {
 101   assert(dirp != NULL, "argument is NULL");
 102   return ::closedir(dirp);
 103 }
 104 
 105 //////////////////////////////////////////////////////////////////////////////
 106 ////////////////////////////////////////////////////////////////////////////////
 107 
 108 // macros for interruptible io and system calls and system call restarting
 109 
 110 #define _INTERRUPTIBLE(_setup, _cmd, _result, _thread, _clear, _before, _after, _int_enable) \
 111 do { \
 112   _setup; \
 113   _before; \
 114   OSThread* _osthread = _thread->osthread(); \
 115   if (_int_enable && _thread->has_last_Java_frame()) { \
 116     /* this is java interruptible io stuff */ \
 117     if (os::is_interrupted(_thread, _clear))  { \
 118       os::Solaris::bump_interrupted_before_count(); \
 119       _result = OS_INTRPT; \
 120     } else { \
 121       /* _cmd always expands to an assignment to _result */ \
 122       if ((_cmd) < 0 && errno == EINTR  \
 123        && os::is_interrupted(_thread, _clear)) { \
 124         os::Solaris::bump_interrupted_during_count(); \




  54 
  55 inline bool os::allocate_stack_guard_pages() {
  56   assert(uses_stack_guard_pages(), "sanity check");
  57   int r = thr_main() ;
  58   guarantee (r == 0 || r == 1, "CR6501650 or CR6493689") ;
  59   return r;
  60 }
  61 
  62 
  63 // On Solaris, reservations are made on a page by page basis, nothing to do.
  64 inline void os::pd_split_reserved_memory(char *base, size_t size,
  65                                       size_t split, bool realloc) {
  66 }
  67 
  68 
  69 // Bang the shadow pages if they need to be touched to be mapped.
  70 inline void os::bang_stack_shadow_pages() {
  71 }
  72 inline void os::dll_unload(void *lib) { ::dlclose(lib); }
  73 































  74 //////////////////////////////////////////////////////////////////////////////
  75 ////////////////////////////////////////////////////////////////////////////////
  76 
  77 // macros for interruptible io and system calls and system call restarting
  78 
  79 #define _INTERRUPTIBLE(_setup, _cmd, _result, _thread, _clear, _before, _after, _int_enable) \
  80 do { \
  81   _setup; \
  82   _before; \
  83   OSThread* _osthread = _thread->osthread(); \
  84   if (_int_enable && _thread->has_last_Java_frame()) { \
  85     /* this is java interruptible io stuff */ \
  86     if (os::is_interrupted(_thread, _clear))  { \
  87       os::Solaris::bump_interrupted_before_count(); \
  88       _result = OS_INTRPT; \
  89     } else { \
  90       /* _cmd always expands to an assignment to _result */ \
  91       if ((_cmd) < 0 && errno == EINTR  \
  92        && os::is_interrupted(_thread, _clear)) { \
  93         os::Solaris::bump_interrupted_during_count(); \


< prev index next >