src/os/windows/vm/os_windows.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot-rt-fx60 Sdiff src/os/windows/vm

src/os/windows/vm/os_windows.cpp

Print this page




3279   // Consider passing back the return value from SwitchToThread().
3280   if (os::Kernel32Dll::SwitchToThreadAvailable()) {
3281     return SwitchToThread() ? os::YIELD_SWITCHED : os::YIELD_NONEREADY ;
3282   } else {
3283     Sleep(0);
3284   }
3285   return os::YIELD_UNKNOWN ;
3286 }
3287 
3288 void os::yield() {  os::NakedYield(); }
3289 
3290 void os::yield_all(int attempts) {
3291   // Yields to all threads, including threads with lower priorities
3292   Sleep(1);
3293 }
3294 
3295 // Win32 only gives you access to seven real priorities at a time,
3296 // so we compress Java's ten down to seven.  It would be better
3297 // if we dynamically adjusted relative priorities.
3298 
3299 int os::java_to_os_priority[MaxPriority + 1] = {
3300   THREAD_PRIORITY_IDLE,                         // 0  Entry should never be used
3301   THREAD_PRIORITY_LOWEST,                       // 1  MinPriority
3302   THREAD_PRIORITY_LOWEST,                       // 2
3303   THREAD_PRIORITY_BELOW_NORMAL,                 // 3
3304   THREAD_PRIORITY_BELOW_NORMAL,                 // 4
3305   THREAD_PRIORITY_NORMAL,                       // 5  NormPriority
3306   THREAD_PRIORITY_NORMAL,                       // 6
3307   THREAD_PRIORITY_ABOVE_NORMAL,                 // 7
3308   THREAD_PRIORITY_ABOVE_NORMAL,                 // 8
3309   THREAD_PRIORITY_HIGHEST,                      // 9  NearMaxPriority
3310   THREAD_PRIORITY_HIGHEST                       // 10 MaxPriority

3311 };
3312 
3313 int prio_policy1[MaxPriority + 1] = {
3314   THREAD_PRIORITY_IDLE,                         // 0  Entry should never be used
3315   THREAD_PRIORITY_LOWEST,                       // 1  MinPriority
3316   THREAD_PRIORITY_LOWEST,                       // 2
3317   THREAD_PRIORITY_BELOW_NORMAL,                 // 3
3318   THREAD_PRIORITY_BELOW_NORMAL,                 // 4
3319   THREAD_PRIORITY_NORMAL,                       // 5  NormPriority
3320   THREAD_PRIORITY_ABOVE_NORMAL,                 // 6
3321   THREAD_PRIORITY_ABOVE_NORMAL,                 // 7
3322   THREAD_PRIORITY_HIGHEST,                      // 8
3323   THREAD_PRIORITY_HIGHEST,                      // 9  NearMaxPriority
3324   THREAD_PRIORITY_TIME_CRITICAL                 // 10 MaxPriority

3325 };
3326 
3327 static int prio_init() {
3328   // If ThreadPriorityPolicy is 1, switch tables
3329   if (ThreadPriorityPolicy == 1) {
3330     int i;
3331     for (i = 0; i < MaxPriority + 1; i++) {
3332       os::java_to_os_priority[i] = prio_policy1[i];
3333     }
3334   }
3335   return 0;
3336 }
3337 
3338 OSReturn os::set_native_priority(Thread* thread, int priority) {
3339   if (!UseThreadPriorities) return OS_OK;
3340   bool ret = SetThreadPriority(thread->osthread()->thread_handle(), priority) != 0;
3341   return ret ? OS_OK : OS_ERR;
3342 }
3343 
3344 OSReturn os::get_native_priority(const Thread* const thread, int* priority_ptr) {




3279   // Consider passing back the return value from SwitchToThread().
3280   if (os::Kernel32Dll::SwitchToThreadAvailable()) {
3281     return SwitchToThread() ? os::YIELD_SWITCHED : os::YIELD_NONEREADY ;
3282   } else {
3283     Sleep(0);
3284   }
3285   return os::YIELD_UNKNOWN ;
3286 }
3287 
3288 void os::yield() {  os::NakedYield(); }
3289 
3290 void os::yield_all(int attempts) {
3291   // Yields to all threads, including threads with lower priorities
3292   Sleep(1);
3293 }
3294 
3295 // Win32 only gives you access to seven real priorities at a time,
3296 // so we compress Java's ten down to seven.  It would be better
3297 // if we dynamically adjusted relative priorities.
3298 
3299 int os::java_to_os_priority[CriticalPriority + 1] = {
3300   THREAD_PRIORITY_IDLE,                         // 0  Entry should never be used
3301   THREAD_PRIORITY_LOWEST,                       // 1  MinPriority
3302   THREAD_PRIORITY_LOWEST,                       // 2
3303   THREAD_PRIORITY_BELOW_NORMAL,                 // 3
3304   THREAD_PRIORITY_BELOW_NORMAL,                 // 4
3305   THREAD_PRIORITY_NORMAL,                       // 5  NormPriority
3306   THREAD_PRIORITY_NORMAL,                       // 6
3307   THREAD_PRIORITY_ABOVE_NORMAL,                 // 7
3308   THREAD_PRIORITY_ABOVE_NORMAL,                 // 8
3309   THREAD_PRIORITY_HIGHEST,                      // 9  NearMaxPriority
3310   THREAD_PRIORITY_HIGHEST                       // 10 MaxPriority
3311   THREAD_PRIORITY_HIGHEST                       // 11 CriticalPriority
3312 };
3313 
3314 int prio_policy1[CriticalPriority + 1] = {
3315   THREAD_PRIORITY_IDLE,                         // 0  Entry should never be used
3316   THREAD_PRIORITY_LOWEST,                       // 1  MinPriority
3317   THREAD_PRIORITY_LOWEST,                       // 2
3318   THREAD_PRIORITY_BELOW_NORMAL,                 // 3
3319   THREAD_PRIORITY_BELOW_NORMAL,                 // 4
3320   THREAD_PRIORITY_NORMAL,                       // 5  NormPriority
3321   THREAD_PRIORITY_ABOVE_NORMAL,                 // 6
3322   THREAD_PRIORITY_ABOVE_NORMAL,                 // 7
3323   THREAD_PRIORITY_HIGHEST,                      // 8
3324   THREAD_PRIORITY_HIGHEST,                      // 9  NearMaxPriority
3325   THREAD_PRIORITY_TIME_CRITICAL                 // 10 MaxPriority
3326   THREAD_PRIORITY_TIME_CRITICAL                 // 11 CriticalPriority
3327 };
3328 
3329 static int prio_init() {
3330   // If ThreadPriorityPolicy is 1, switch tables
3331   if (ThreadPriorityPolicy == 1) {
3332     int i;
3333     for (i = 0; i < MaxPriority + 1; i++) {
3334       os::java_to_os_priority[i] = prio_policy1[i];
3335     }
3336   }
3337   return 0;
3338 }
3339 
3340 OSReturn os::set_native_priority(Thread* thread, int priority) {
3341   if (!UseThreadPriorities) return OS_OK;
3342   bool ret = SetThreadPriority(thread->osthread()->thread_handle(), priority) != 0;
3343   return ret ? OS_OK : OS_ERR;
3344 }
3345 
3346 OSReturn os::get_native_priority(const Thread* const thread, int* priority_ptr) {


src/os/windows/vm/os_windows.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File