server: Only commit SetThreadPriority if new priority is correct.
This commit is contained in:
parent
f204ed1d19
commit
6763742090
|
@ -594,25 +594,21 @@ static VOID test_thread_priority(void)
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
rc = SetThreadPriority(curthread,min_priority-1);
|
rc = SetThreadPriority(curthread,min_priority-1);
|
||||||
|
|
||||||
todo_wine {
|
ok(rc == FALSE, "SetThreadPriority passed with a bad argument\n");
|
||||||
ok(rc == FALSE, "SetThreadPriority passed with a bad argument\n");
|
ok(GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
ok(GetLastError() == ERROR_INVALID_PARAMETER,
|
"SetThreadPriority error %d, expected ERROR_INVALID_PARAMETER (87)\n", GetLastError());
|
||||||
"SetThreadPriority error %d, expected ERROR_INVALID_PARAMETER (87)\n", GetLastError());
|
ok(GetThreadPriority(curthread)==min_priority,
|
||||||
ok(GetThreadPriority(curthread)==min_priority,
|
"GetThreadPriority didn't return min_priority\n");
|
||||||
"GetThreadPriority didn't return min_priority\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
SetThreadPriority(curthread,max_priority);
|
SetThreadPriority(curthread,max_priority);
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
rc = SetThreadPriority(curthread,max_priority+1);
|
rc = SetThreadPriority(curthread,max_priority+1);
|
||||||
|
|
||||||
todo_wine {
|
ok(rc == FALSE, "SetThreadPriority passed with a bad argument\n");
|
||||||
ok(rc == FALSE, "SetThreadPriority passed with a bad argument\n");
|
ok(GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
ok(GetLastError() == ERROR_INVALID_PARAMETER,
|
"SetThreadPriority error %d, expected ERROR_INVALID_PARAMETER (87)\n", GetLastError());
|
||||||
"SetThreadPriority error %d, expected ERROR_INVALID_PARAMETER (87)\n", GetLastError());
|
ok(GetThreadPriority(curthread)==max_priority,
|
||||||
ok(GetThreadPriority(curthread)==max_priority,
|
"GetThreadPriority didn't return max_priority\n");
|
||||||
"GetThreadPriority didn't return max_priority\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check thread priority boost */
|
/* Check thread priority boost */
|
||||||
if (!pGetThreadPriorityBoost || !pSetThreadPriorityBoost)
|
if (!pGetThreadPriorityBoost || !pSetThreadPriorityBoost)
|
||||||
|
|
|
@ -383,12 +383,29 @@ struct thread *get_thread_from_pid( int pid )
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define THREAD_PRIORITY_REALTIME_HIGHEST 6
|
||||||
|
#define THREAD_PRIORITY_REALTIME_LOWEST -7
|
||||||
|
|
||||||
/* set all information about a thread */
|
/* set all information about a thread */
|
||||||
static void set_thread_info( struct thread *thread,
|
static void set_thread_info( struct thread *thread,
|
||||||
const struct set_thread_info_request *req )
|
const struct set_thread_info_request *req )
|
||||||
{
|
{
|
||||||
if (req->mask & SET_THREAD_INFO_PRIORITY)
|
if (req->mask & SET_THREAD_INFO_PRIORITY)
|
||||||
thread->priority = req->priority;
|
{
|
||||||
|
int max = THREAD_PRIORITY_HIGHEST;
|
||||||
|
int min = THREAD_PRIORITY_LOWEST;
|
||||||
|
if (thread->process->priority == PROCESS_PRIOCLASS_REALTIME)
|
||||||
|
{
|
||||||
|
max = THREAD_PRIORITY_REALTIME_HIGHEST;
|
||||||
|
min = THREAD_PRIORITY_REALTIME_LOWEST;
|
||||||
|
}
|
||||||
|
if ((req->priority >= min && req->priority <= max) ||
|
||||||
|
req->priority == THREAD_PRIORITY_IDLE ||
|
||||||
|
req->priority == THREAD_PRIORITY_TIME_CRITICAL)
|
||||||
|
thread->priority = req->priority;
|
||||||
|
else
|
||||||
|
set_error( STATUS_INVALID_PARAMETER );
|
||||||
|
}
|
||||||
if (req->mask & SET_THREAD_INFO_AFFINITY)
|
if (req->mask & SET_THREAD_INFO_AFFINITY)
|
||||||
{
|
{
|
||||||
if (req->affinity != 1) set_error( STATUS_INVALID_PARAMETER );
|
if (req->affinity != 1) set_error( STATUS_INVALID_PARAMETER );
|
||||||
|
|
Loading…
Reference in New Issue