Merge
This commit is contained in:
commit
75778598e2
@ -3830,11 +3830,6 @@ jint os::init_2(void) {
|
||||
return JNI_OK;
|
||||
}
|
||||
|
||||
// this is called at the end of vm_initialization
|
||||
void os::init_3(void) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Mark the polling page as unreadable
|
||||
void os::make_polling_page_unreadable(void) {
|
||||
if (!guard_memory((char*)_polling_page, Aix::page_size())) {
|
||||
|
@ -3636,9 +3636,6 @@ jint os::init_2(void) {
|
||||
return JNI_OK;
|
||||
}
|
||||
|
||||
// this is called at the end of vm_initialization
|
||||
void os::init_3(void) { }
|
||||
|
||||
// Mark the polling page as unreadable
|
||||
void os::make_polling_page_unreadable(void) {
|
||||
if (!guard_memory((char*)_polling_page, Bsd::page_size())) {
|
||||
|
@ -163,35 +163,6 @@ static pthread_mutex_t dl_mutex;
|
||||
// Declarations
|
||||
static void unpackTime(timespec* absTime, bool isAbsolute, jlong time);
|
||||
|
||||
#ifdef JAVASE_EMBEDDED
|
||||
class MemNotifyThread: public Thread {
|
||||
friend class VMStructs;
|
||||
public:
|
||||
virtual void run();
|
||||
|
||||
private:
|
||||
static MemNotifyThread* _memnotify_thread;
|
||||
int _fd;
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
MemNotifyThread(int fd);
|
||||
|
||||
// Tester
|
||||
bool is_memnotify_thread() const { return true; }
|
||||
|
||||
// Printing
|
||||
char* name() const { return (char*)"Linux MemNotify Thread"; }
|
||||
|
||||
// Returns the single instance of the MemNotifyThread
|
||||
static MemNotifyThread* memnotify_thread() { return _memnotify_thread; }
|
||||
|
||||
// Create and start the single instance of MemNotifyThread
|
||||
static void start();
|
||||
};
|
||||
#endif // JAVASE_EMBEDDED
|
||||
|
||||
// utility functions
|
||||
|
||||
static int SR_initialize();
|
||||
@ -4873,17 +4844,6 @@ jint os::init_2(void) {
|
||||
return JNI_OK;
|
||||
}
|
||||
|
||||
// this is called at the end of vm_initialization
|
||||
void os::init_3(void) {
|
||||
#ifdef JAVASE_EMBEDDED
|
||||
// Start the MemNotifyThread
|
||||
if (LowMemoryProtection) {
|
||||
MemNotifyThread::start();
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Mark the polling page as unreadable
|
||||
void os::make_polling_page_unreadable(void) {
|
||||
if (!guard_memory((char*)_polling_page, Linux::page_size())) {
|
||||
@ -6040,82 +6000,6 @@ int os::get_core_path(char* buffer, size_t bufferSize) {
|
||||
return strlen(buffer);
|
||||
}
|
||||
|
||||
#ifdef JAVASE_EMBEDDED
|
||||
//
|
||||
// A thread to watch the '/dev/mem_notify' device, which will tell us when the OS is running low on memory.
|
||||
//
|
||||
MemNotifyThread* MemNotifyThread::_memnotify_thread = NULL;
|
||||
|
||||
// ctor
|
||||
//
|
||||
MemNotifyThread::MemNotifyThread(int fd): Thread() {
|
||||
assert(memnotify_thread() == NULL, "we can only allocate one MemNotifyThread");
|
||||
_fd = fd;
|
||||
|
||||
if (os::create_thread(this, os::os_thread)) {
|
||||
_memnotify_thread = this;
|
||||
os::set_priority(this, NearMaxPriority);
|
||||
os::start_thread(this);
|
||||
}
|
||||
}
|
||||
|
||||
// Where all the work gets done
|
||||
//
|
||||
void MemNotifyThread::run() {
|
||||
assert(this == memnotify_thread(), "expected the singleton MemNotifyThread");
|
||||
|
||||
// Set up the select arguments
|
||||
fd_set rfds;
|
||||
if (_fd != -1) {
|
||||
FD_ZERO(&rfds);
|
||||
FD_SET(_fd, &rfds);
|
||||
}
|
||||
|
||||
// Now wait for the mem_notify device to wake up
|
||||
while (1) {
|
||||
// Wait for the mem_notify device to signal us..
|
||||
int rc = select(_fd+1, _fd != -1 ? &rfds : NULL, NULL, NULL, NULL);
|
||||
if (rc == -1) {
|
||||
perror("select!\n");
|
||||
break;
|
||||
} else if (rc) {
|
||||
//ssize_t free_before = os::available_memory();
|
||||
//tty->print ("Notified: Free: %dK \n",os::available_memory()/1024);
|
||||
|
||||
// The kernel is telling us there is not much memory left...
|
||||
// try to do something about that
|
||||
|
||||
// If we are not already in a GC, try one.
|
||||
if (!Universe::heap()->is_gc_active()) {
|
||||
Universe::heap()->collect(GCCause::_allocation_failure);
|
||||
|
||||
//ssize_t free_after = os::available_memory();
|
||||
//tty->print ("Post-Notify: Free: %dK\n",free_after/1024);
|
||||
//tty->print ("GC freed: %dK\n", (free_after - free_before)/1024);
|
||||
}
|
||||
// We might want to do something like the following if we find the GC's are not helping...
|
||||
// Universe::heap()->size_policy()->set_gc_time_limit_exceeded(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// See if the /dev/mem_notify device exists, and if so, start a thread to monitor it.
|
||||
//
|
||||
void MemNotifyThread::start() {
|
||||
int fd;
|
||||
fd = open("/dev/mem_notify", O_RDONLY, 0);
|
||||
if (fd < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (memnotify_thread() == NULL) {
|
||||
new MemNotifyThread(fd);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // JAVASE_EMBEDDED
|
||||
|
||||
|
||||
/////////////// Unit tests ///////////////
|
||||
|
||||
#ifndef PRODUCT
|
||||
|
@ -4762,10 +4762,6 @@ jint os::init_2(void) {
|
||||
return JNI_OK;
|
||||
}
|
||||
|
||||
void os::init_3(void) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Mark the polling page as unreadable
|
||||
void os::make_polling_page_unreadable(void) {
|
||||
if (mprotect((char *)_polling_page, page_size, PROT_NONE) != 0) {
|
||||
|
@ -4154,10 +4154,6 @@ jint os::init_2(void) {
|
||||
return JNI_OK;
|
||||
}
|
||||
|
||||
void os::init_3(void) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Mark the polling page as unreadable
|
||||
void os::make_polling_page_unreadable(void) {
|
||||
DWORD old_status;
|
||||
|
@ -2066,9 +2066,6 @@ class CommandLineFlags {
|
||||
"Provide more detailed and expensive TLAB statistics " \
|
||||
"(with PrintTLAB)") \
|
||||
\
|
||||
EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \
|
||||
"Enable LowMemoryProtection")) \
|
||||
\
|
||||
product_pd(bool, NeverActAsServerClassMachine, \
|
||||
"Never act like a server-class machine") \
|
||||
\
|
||||
|
@ -158,7 +158,6 @@ class os: AllStatic {
|
||||
static void init_globals(void) { // Called from init_globals() in init.cpp
|
||||
init_globals_ext();
|
||||
}
|
||||
static void init_3(void); // Called at the end of vm init
|
||||
|
||||
// File names are case-insensitive on windows only
|
||||
// Override me as needed
|
||||
|
@ -3617,9 +3617,6 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
|
||||
}
|
||||
}
|
||||
|
||||
// Give os specific code one last chance to start
|
||||
os::init_3();
|
||||
|
||||
create_vm_timer.end();
|
||||
#ifdef ASSERT
|
||||
_vm_complete = true;
|
||||
|
Loading…
Reference in New Issue
Block a user