69 static void detachall() NOT_SERVICES_RETURN; 70 71 // check unix domain socket file on filesystem 72 static bool check_socket_file() NOT_SERVICES_RETURN_(false); 73 74 // indicates if the Attach Listener needs to be created at startup 75 static bool init_at_startup() NOT_SERVICES_RETURN_(false); 76 77 // indicates if we have a trigger to start the Attach Listener 78 static bool is_init_trigger() NOT_SERVICES_RETURN_(false); 79 80 #if !INCLUDE_SERVICES 81 static bool is_attach_supported() { return false; } 82 #else 83 84 private: 85 static volatile AttachListenerState _state; 86 87 public: 88 static void set_state(AttachListenerState new_state) { 89 Atomic::store(new_state, &_state); 90 } 91 92 static AttachListenerState get_state() { 93 return Atomic::load(&_state); 94 } 95 96 static AttachListenerState transit_state(AttachListenerState new_state, 97 AttachListenerState cmp_state) { 98 return Atomic::cmpxchg(new_state, &_state, cmp_state); 99 } 100 101 static bool is_initialized() { 102 return Atomic::load(&_state) == AL_INITIALIZED; 103 } 104 105 static void set_initialized() { 106 Atomic::store(AL_INITIALIZED, &_state); 107 } 108 109 // indicates if this VM supports attach-on-demand 110 static bool is_attach_supported() { return !DisableAttachMechanism; } 111 112 // platform specific initialization 113 static int pd_init(); 114 115 // platform specific operation 116 static AttachOperationFunctionInfo* pd_find_operation(const char* name); 117 118 // platform specific flag change 119 static jint pd_set_flag(AttachOperation* op, outputStream* out); 120 121 // platform specific detachall 122 static void pd_detachall(); 123 124 // platform specific data dump 125 static void pd_data_dump(); 126 | 69 static void detachall() NOT_SERVICES_RETURN; 70 71 // check unix domain socket file on filesystem 72 static bool check_socket_file() NOT_SERVICES_RETURN_(false); 73 74 // indicates if the Attach Listener needs to be created at startup 75 static bool init_at_startup() NOT_SERVICES_RETURN_(false); 76 77 // indicates if we have a trigger to start the Attach Listener 78 static bool is_init_trigger() NOT_SERVICES_RETURN_(false); 79 80 #if !INCLUDE_SERVICES 81 static bool is_attach_supported() { return false; } 82 #else 83 84 private: 85 static volatile AttachListenerState _state; 86 87 public: 88 static void set_state(AttachListenerState new_state) { 89 Atomic::store(&_state, new_state); 90 } 91 92 static AttachListenerState get_state() { 93 return Atomic::load(&_state); 94 } 95 96 static AttachListenerState transit_state(AttachListenerState new_state, 97 AttachListenerState cmp_state) { 98 return Atomic::cmpxchg(&_state, cmp_state, new_state); 99 } 100 101 static bool is_initialized() { 102 return Atomic::load(&_state) == AL_INITIALIZED; 103 } 104 105 static void set_initialized() { 106 Atomic::store(&_state, AL_INITIALIZED); 107 } 108 109 // indicates if this VM supports attach-on-demand 110 static bool is_attach_supported() { return !DisableAttachMechanism; } 111 112 // platform specific initialization 113 static int pd_init(); 114 115 // platform specific operation 116 static AttachOperationFunctionInfo* pd_find_operation(const char* name); 117 118 // platform specific flag change 119 static jint pd_set_flag(AttachOperation* op, outputStream* out); 120 121 // platform specific detachall 122 static void pd_detachall(); 123 124 // platform specific data dump 125 static void pd_data_dump(); 126 |