mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
7194254: jstack reports wrong thread priorities
Reviewed-by: dholmes, sla, fparain
This commit is contained in:
parent
c188598ddd
commit
48255b9ff3
5 changed files with 143 additions and 7 deletions
|
@ -201,14 +201,21 @@ OSReturn os::set_priority(Thread* thread, ThreadPriority p) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// The mapping from OS priority back to Java priority may be inexact because
|
||||
// Java priorities can map M:1 with native priorities. If you want the definite
|
||||
// Java priority then use JavaThread::java_priority()
|
||||
OSReturn os::get_priority(const Thread* const thread, ThreadPriority& priority) {
|
||||
int p;
|
||||
int os_prio;
|
||||
OSReturn ret = get_native_priority(thread, &os_prio);
|
||||
if (ret != OS_OK) return ret;
|
||||
|
||||
for (p = MaxPriority; p > MinPriority && java_to_os_priority[p] > os_prio; p--) ;
|
||||
if (java_to_os_priority[MaxPriority] > java_to_os_priority[MinPriority]) {
|
||||
for (p = MaxPriority; p > MinPriority && java_to_os_priority[p] > os_prio; p--) ;
|
||||
} else {
|
||||
// niceness values are in reverse order
|
||||
for (p = MaxPriority; p > MinPriority && java_to_os_priority[p] < os_prio; p--) ;
|
||||
}
|
||||
priority = (ThreadPriority)p;
|
||||
return OS_OK;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue