254 lgrp_rsrc_t type) {
255 return _lgrp_resources != NULL ? _lgrp_resources(cookie, lgrp, lgrp_array, lgrp_array_size, type) : -1;
256 }
257
258 static int lgrp_nlgrps(lgrp_cookie_t cookie) { return _lgrp_nlgrps != NULL ? _lgrp_nlgrps(cookie) : -1; }
259 static int lgrp_cookie_stale(lgrp_cookie_t cookie) {
260 return _lgrp_cookie_stale != NULL ? _lgrp_cookie_stale(cookie) : -1;
261 }
262 static lgrp_cookie_t lgrp_cookie() { return _lgrp_cookie; }
263
264 static sigset_t* unblocked_signals();
265 static sigset_t* vm_signals();
266
267 // %%% Following should be promoted to os.hpp:
268 // Trace number of created threads
269 static jint _os_thread_limit;
270 static volatile jint _os_thread_count;
271
272 static void correct_stack_boundaries_for_primordial_thread(Thread* thr);
273
274 // Stack overflow handling
275
276 static int max_register_window_saves_before_flushing();
277
278 // Stack repair handling
279
280 // none present
281
282 };
283
284 class PlatformEvent : public CHeapObj<mtSynchronizer> {
285 private:
286 double CachePad[4]; // increase odds that _mutex is sole occupant of cache line
287 volatile int _Event;
288 int _nParked;
289 int _pipev[2];
290 mutex_t _mutex[1];
291 cond_t _cond[1];
292 double PostPad[2];
293
294 protected:
295 // Defining a protected ctor effectively gives us an abstract base class.
296 // That is, a PlatformEvent can never be instantiated "naked" but only
297 // as a part of a ParkEvent (recall that ParkEvent extends PlatformEvent).
|
254 lgrp_rsrc_t type) {
255 return _lgrp_resources != NULL ? _lgrp_resources(cookie, lgrp, lgrp_array, lgrp_array_size, type) : -1;
256 }
257
258 static int lgrp_nlgrps(lgrp_cookie_t cookie) { return _lgrp_nlgrps != NULL ? _lgrp_nlgrps(cookie) : -1; }
259 static int lgrp_cookie_stale(lgrp_cookie_t cookie) {
260 return _lgrp_cookie_stale != NULL ? _lgrp_cookie_stale(cookie) : -1;
261 }
262 static lgrp_cookie_t lgrp_cookie() { return _lgrp_cookie; }
263
264 static sigset_t* unblocked_signals();
265 static sigset_t* vm_signals();
266
267 // %%% Following should be promoted to os.hpp:
268 // Trace number of created threads
269 static jint _os_thread_limit;
270 static volatile jint _os_thread_count;
271
272 static void correct_stack_boundaries_for_primordial_thread(Thread* thr);
273
274 // Stack repair handling
275
276 // none present
277
278 };
279
280 class PlatformEvent : public CHeapObj<mtSynchronizer> {
281 private:
282 double CachePad[4]; // increase odds that _mutex is sole occupant of cache line
283 volatile int _Event;
284 int _nParked;
285 int _pipev[2];
286 mutex_t _mutex[1];
287 cond_t _cond[1];
288 double PostPad[2];
289
290 protected:
291 // Defining a protected ctor effectively gives us an abstract base class.
292 // That is, a PlatformEvent can never be instantiated "naked" but only
293 // as a part of a ParkEvent (recall that ParkEvent extends PlatformEvent).
|