blob: 5b9b1023d03d4660e32439e29f569f63729b151f [file] [log] [blame]
/*
* Copyright 2009 The Native Client Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/*
* Windows thread priority support.
*/
#include <windows.h>
#include "native_client/src/shared/platform/nacl_log.h"
#include "native_client/src/trusted/service_runtime/include/sys/nacl_nice.h"
void NaClThreadNiceInit(void) { }
int nacl_thread_nice(int nacl_nice) {
BOOL rc;
HANDLE mThreadHandle = GetCurrentThread();
switch (nacl_nice) {
case NICE_REALTIME:
/* It appears as though you can lock up a machine if you use
* THREAD_PRIORITY_TIME_CRITICAL or THREAD_PRIORITY_ABOVE_NORMAL.
* So Windows does not get real-time threads for now.
*/
rc = SetThreadPriority(mThreadHandle, THREAD_PRIORITY_NORMAL);
/* THREAD_PRIORITY_ABOVE_NORMAL); */
/* THREAD_PRIORITY_TIME_CRITICAL); */
break;
case NICE_NORMAL:
rc = SetThreadPriority(mThreadHandle, THREAD_PRIORITY_NORMAL);
break;
case NICE_BACKGROUND:
rc = SetThreadPriority(mThreadHandle, THREAD_PRIORITY_BELOW_NORMAL);
break;
default:
NaClLog(LOG_WARNING, "nacl_thread_nice() failed (bad nice value).\n");
return -1;
}
if (!rc) {
NaClLog(LOG_WARNING, "nacl_thread_nice() failed.\n");
return -1;
}
return 0;
}