comparison src/os/bsd/vm/os_bsd.cpp @ 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 e8a4934564b2
children 86ce3208eb18
comparison
equal deleted inserted replaced
4853:6db63e782d3d 4854:de268c8a8075
1 /* 1 /*
2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1999, 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.
3587 // threads. It has always been the case, but could change in the future. For 3587 // threads. It has always been the case, but could change in the future. For
3588 // this reason, the code should not be used as default (ThreadPriorityPolicy=0). 3588 // this reason, the code should not be used as default (ThreadPriorityPolicy=0).
3589 // It is only used when ThreadPriorityPolicy=1 and requires root privilege. 3589 // It is only used when ThreadPriorityPolicy=1 and requires root privilege.
3590 3590
3591 #if defined(_ALLBSD_SOURCE) && !defined(__APPLE__) 3591 #if defined(_ALLBSD_SOURCE) && !defined(__APPLE__)
3592 int os::java_to_os_priority[MaxPriority + 1] = { 3592 int os::java_to_os_priority[CriticalPriority + 1] = {
3593 19, // 0 Entry should never be used 3593 19, // 0 Entry should never be used
3594 3594
3595 0, // 1 MinPriority 3595 0, // 1 MinPriority
3596 3, // 2 3596 3, // 2
3597 6, // 3 3597 6, // 3
3598 3598
3599 10, // 4 3599 10, // 4
3600 15, // 5 NormPriority 3600 15, // 5 NormPriority
3601 18, // 6 3601 18, // 6
3602 3602
3603 21, // 7 3603 21, // 7
3604 25, // 8 3604 25, // 8
3605 28, // 9 NearMaxPriority 3605 28, // 9 NearMaxPriority
3606 3606
3607 31 // 10 MaxPriority 3607 31, // 10 MaxPriority
3608
3609 31 // 11 CriticalPriority
3608 }; 3610 };
3609 #elif defined(__APPLE__) 3611 #elif defined(__APPLE__)
3610 /* Using Mach high-level priority assignments */ 3612 /* Using Mach high-level priority assignments */
3611 int os::java_to_os_priority[MaxPriority + 1] = { 3613 int os::java_to_os_priority[CriticalPriority + 1] = {
3612 0, // 0 Entry should never be used (MINPRI_USER) 3614 0, // 0 Entry should never be used (MINPRI_USER)
3613 3615
3614 27, // 1 MinPriority 3616 27, // 1 MinPriority
3615 28, // 2 3617 28, // 2
3616 29, // 3 3618 29, // 3
3621 3623
3622 33, // 7 3624 33, // 7
3623 34, // 8 3625 34, // 8
3624 35, // 9 NearMaxPriority 3626 35, // 9 NearMaxPriority
3625 3627
3626 36 // 10 MaxPriority 3628 36, // 10 MaxPriority
3629
3630 36 // 11 CriticalPriority
3627 }; 3631 };
3628 #else 3632 #else
3629 int os::java_to_os_priority[MaxPriority + 1] = { 3633 int os::java_to_os_priority[CriticalPriority + 1] = {
3630 19, // 0 Entry should never be used 3634 19, // 0 Entry should never be used
3631 3635
3632 4, // 1 MinPriority 3636 4, // 1 MinPriority
3633 3, // 2 3637 3, // 2
3634 2, // 3 3638 2, // 3
3639 3643
3640 -2, // 7 3644 -2, // 7
3641 -3, // 8 3645 -3, // 8
3642 -4, // 9 NearMaxPriority 3646 -4, // 9 NearMaxPriority
3643 3647
3644 -5 // 10 MaxPriority 3648 -5, // 10 MaxPriority
3649
3650 -5 // 11 CriticalPriority
3645 }; 3651 };
3646 #endif 3652 #endif
3647 3653
3648 static int prio_init() { 3654 static int prio_init() {
3649 if (ThreadPriorityPolicy == 1) { 3655 if (ThreadPriorityPolicy == 1) {
3654 if (!FLAG_IS_DEFAULT(ThreadPriorityPolicy)) { 3660 if (!FLAG_IS_DEFAULT(ThreadPriorityPolicy)) {
3655 warning("-XX:ThreadPriorityPolicy requires root privilege on Bsd"); 3661 warning("-XX:ThreadPriorityPolicy requires root privilege on Bsd");
3656 } 3662 }
3657 ThreadPriorityPolicy = 0; 3663 ThreadPriorityPolicy = 0;
3658 } 3664 }
3665 }
3666 if (UseCriticalJavaThreadPriority) {
3667 os::java_to_os_priority[MaxPriority] = os::java_to_os_priority[CriticalPriority];
3659 } 3668 }
3660 return 0; 3669 return 0;
3661 } 3670 }
3662 3671
3663 OSReturn os::set_native_priority(Thread* thread, int newpri) { 3672 OSReturn os::set_native_priority(Thread* thread, int newpri) {