comparison src/share/vm/runtime/os.hpp @ 4854:de268c8a8075

7082553: Interpret Thread.setPriority(Thread.MAX_PRIORITY) to mean FX60 on Solaris 10 and 11 Summary: Add CriticalPriority == MaxPriority+1 and enable scheduling class as well as thread priority to change on Solaris. Reviewed-by: dholmes, dcubed
author phh
date Thu, 26 Jan 2012 20:06:06 -0500
parents 2b3acb34791f
children 897b7d18bebc da4be62fb889
comparison
equal deleted inserted replaced
4853:6db63e782d3d 4854:de268c8a8075
1 /* 1 /*
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
71 enum ThreadPriority { // JLS 20.20.1-3 71 enum ThreadPriority { // JLS 20.20.1-3
72 NoPriority = -1, // Initial non-priority value 72 NoPriority = -1, // Initial non-priority value
73 MinPriority = 1, // Minimum priority 73 MinPriority = 1, // Minimum priority
74 NormPriority = 5, // Normal (non-daemon) priority 74 NormPriority = 5, // Normal (non-daemon) priority
75 NearMaxPriority = 9, // High priority, used for VMThread 75 NearMaxPriority = 9, // High priority, used for VMThread
76 MaxPriority = 10 // Highest priority, used for WatcherThread 76 MaxPriority = 10, // Highest priority, used for WatcherThread
77 // ensures that VMThread doesn't starve profiler 77 // ensures that VMThread doesn't starve profiler
78 CriticalPriority = 11 // Critical thread priority
78 }; 79 };
79 80
80 // Typedef for structured exception handling support 81 // Typedef for structured exception handling support
81 typedef void (*java_call_t)(JavaValue* value, methodHandle* method, JavaCallArguments* args, Thread* thread); 82 typedef void (*java_call_t)(JavaValue* value, methodHandle* method, JavaCallArguments* args, Thread* thread);
82 83
731 static void print_statistics(); 732 static void print_statistics();
732 733
733 // Thread priority helpers (implemented in OS-specific part) 734 // Thread priority helpers (implemented in OS-specific part)
734 static OSReturn set_native_priority(Thread* thread, int native_prio); 735 static OSReturn set_native_priority(Thread* thread, int native_prio);
735 static OSReturn get_native_priority(const Thread* const thread, int* priority_ptr); 736 static OSReturn get_native_priority(const Thread* const thread, int* priority_ptr);
736 static int java_to_os_priority[MaxPriority + 1]; 737 static int java_to_os_priority[CriticalPriority + 1];
737 // Hint to the underlying OS that a task switch would not be good. 738 // Hint to the underlying OS that a task switch would not be good.
738 // Void return because it's a hint and can fail. 739 // Void return because it's a hint and can fail.
739 static void hint_no_preempt(); 740 static void hint_no_preempt();
740 741
741 // Used at creation if requested by the diagnostic flag PauseAtStartup. 742 // Used at creation if requested by the diagnostic flag PauseAtStartup.