1879N/A * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. 342N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 342N/A * This code is free software; you can redistribute it and/or modify it 342N/A * under the terms of the GNU General Public License version 2 only, as 342N/A * published by the Free Software Foundation. 342N/A * This code is distributed in the hope that it will be useful, but WITHOUT 342N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 342N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 342N/A * version 2 for more details (a copy is included in the LICENSE file that 342N/A * accompanied this code). 342N/A * You should have received a copy of the GNU General Public License version 342N/A * 2 along with this work; if not, write to the Free Software Foundation, 342N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1472N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 342N/A// A SuspendibleThreadSet is (obviously) a set of threads that can be 342N/A// suspended. A thread can join and later leave the set, and periodically 342N/A// yield. If some thread (not in the set) requests, via suspend_all, that 342N/A// the threads be suspended, then the requesting thread is blocked until 342N/A// all the threads in the set have yielded or left the set. (Threads may 342N/A// not enter the set when an attempted suspension is in progress.) The 342N/A// suspending thread later calls resume_all, allowing the suspended threads 342N/A // Add the current thread to the set. May block if a suspension 342N/A // Removes the current thread from the set. 342N/A // Returns "true" iff an suspension is in progress. 342N/A // Suspends the current thread if a suspension is in progress (for 342N/A // the duration of the suspension.) 342N/A // Return when all threads in the set are suspended. 342N/A // Allow suspended threads to resume. 342N/A // Redundant initializations okay. 342N/A // Double-check dirty read idiom. 342N/A // All instances share this one set. 342N/A // Create and start the thread (setting it's priority high.) 342N/A // Do initialization steps in the thread: record stack base and size, 342N/A // init thread local storage, set JNI handle block. 342N/A // Wait until Universe::is_fully_initialized(); 342N/A // Record that the current thread is terminating, and will do more 342N/A // All overridings should probably do _sts::yield, but we allow 342N/A // overriding for distinguished debugging messages. Default is to do 342N/A // they are prefixed by sts since there are already yield() and 342N/A // should_yield() (non-static) methods in this class and it was an 342N/A // easy way to differentiate them. 342N/A// The SurrogateLockerThread is used by concurrent GC threads for 342N/A// manipulating Java monitors, in particular, currently for 342N/A// manipulating the pending_list_lock. XXX 342N/A // the following are shared with the CMSThread 1879N/A#
endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_CONCURRENTGCTHREAD_HPP