Ignore:
Timestamp:
Dec 3, 2001, 1:13:10 PM (24 years ago)
Author:
sandervl
Message:

priority updates/changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmthread.cpp

    r5920 r7532  
    1 /* $Id: hmthread.cpp,v 1.8 2001-06-06 18:59:57 phaller Exp $ */
     1/* $Id: hmthread.cpp,v 1.9 2001-12-03 12:13:08 sandervl Exp $ */
    22
    33/*
     
    2121#include <string.h>
    2222#include <misc.h>
     23#include <wprocess.h>
    2324
    2425#include <HandleManager.H>
    2526#include "HMThread.h"
     27#include "oslibdos.h"
    2628
    2729#include <win\thread.h>
     
    6163  winthread = new Win32Thread(lpStartAddr, lpvThreadParm, fdwCreate, pHMHandleData->hHMHandle);
    6264
    63   if(winthread == 0)
    64     return(0);
    65 
     65  if(winthread == 0) {
     66      SetLastError(ERROR_NOT_ENOUGH_MEMORY);
     67      return(0);
     68  }
    6669  // @@@PH Note: with debug code enabled, ODIN might request more stack space!
    6770  //SvL: Also need more stack in release build (RealPlayer 7 sometimes runs
     
    8588//******************************************************************************
    8689//******************************************************************************
    87 INT HMDeviceThreadClass::GetThreadPriority(PHMHANDLEDATA pHMHandleData)
    88 {
     90DWORD HMDeviceThreadClass::SuspendThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData)
     91{
     92    dprintf(("SuspendThread %08xh)\n", pHMHandleData->hHMHandle));
     93
     94    return O32_SuspendThread(pHMHandleData->hHMHandle);
     95}
     96//******************************************************************************
     97//******************************************************************************
     98INT HMDeviceThreadClass::GetThreadPriority(HANDLE hThread, PHMHANDLEDATA pHMHandleData)
     99{
     100    TEB *teb;
     101
    89102    dprintf(("GetThreadPriority(%08xh)\n", pHMHandleData->hHMHandle));
    90103
    91     return O32_GetThreadPriority(pHMHandleData->hHMHandle);
    92 }
    93 //******************************************************************************
    94 //******************************************************************************
    95 DWORD HMDeviceThreadClass::SuspendThread(PHMHANDLEDATA pHMHandleData)
    96 {
    97     dprintf(("SuspendThread %08xh)\n", pHMHandleData->hHMHandle));
    98 
    99     return O32_SuspendThread(pHMHandleData->hHMHandle);
    100 }
    101 //******************************************************************************
    102 //******************************************************************************
    103 BOOL HMDeviceThreadClass::SetThreadPriority(PHMHANDLEDATA pHMHandleData, int priority)
    104 {
    105     dprintf(("SetThreadPriority (%08xh,%08xh)\n",
    106              pHMHandleData->hHMHandle,
    107              priority));
    108 
    109     return O32_SetThreadPriority(pHMHandleData->hHMHandle, priority);
     104    teb = GetTEBFromThreadHandle(hThread);
     105    if(teb == NULL) {
     106        dprintf(("!WARNING!: TEB not found!!"));
     107        SetLastError(ERROR_INVALID_HANDLE);
     108        return THREAD_PRIORITY_ERROR_RETURN;
     109    }
     110    return teb->delta_priority;
     111}
     112//******************************************************************************
     113//******************************************************************************
     114BOOL HMDeviceThreadClass::SetThreadPriority(HANDLE hThread, PHMHANDLEDATA pHMHandleData, int priority)
     115{
     116    TEB  *teb;
     117
     118    dprintf(("SetThreadPriority (%08xh,%08xh)", pHMHandleData->hHMHandle, priority));
     119
     120    teb = GetTEBFromThreadHandle(hThread);
     121    if(teb == NULL) {
     122        dprintf(("!WARNING!: TEB not found!!"));
     123        SetLastError(ERROR_INVALID_HANDLE);
     124        return THREAD_PRIORITY_ERROR_RETURN;
     125    }
     126    DWORD ret = OSLibDosSetPriority(teb->o.odin.threadId, priority);
     127    if(ret == ERROR_SUCCESS) {
     128        teb->delta_priority = priority;
     129        return TRUE;
     130    }
     131    else {
     132        dprintf(("DosSetPriority failed with rc %d", ret));
     133        return FALSE;
     134    }
    110135}
    111136//******************************************************************************
    112137//TODO: Implement this??
    113138//******************************************************************************
    114 BOOL HMDeviceThreadClass::GetThreadContext(PHMHANDLEDATA pHMHandleData, PCONTEXT lpContext)
     139BOOL HMDeviceThreadClass::GetThreadContext(HANDLE hThread, PHMHANDLEDATA pHMHandleData, PCONTEXT lpContext)
    115140{
    116141  dprintf(("GetThreadContext NOT IMPLEMENTED!! (TRUE)\n"));
     
    130155//TODO: Implement this??
    131156//******************************************************************************
    132 BOOL HMDeviceThreadClass::SetThreadContext(PHMHANDLEDATA pHMHandleData, const CONTEXT *lpContext)
     157BOOL HMDeviceThreadClass::SetThreadContext(HANDLE hThread, PHMHANDLEDATA pHMHandleData, const CONTEXT *lpContext)
    133158{
    134159  dprintf(("SetThreadContext NOT IMPLEMENTED!!\n"));
     
    138163//******************************************************************************
    139164//******************************************************************************
    140 BOOL HMDeviceThreadClass::TerminateThread(PHMHANDLEDATA pHMHandleData, DWORD exitcode)
     165BOOL HMDeviceThreadClass::TerminateThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData, DWORD exitcode)
    141166{
    142167    dprintf(("TerminateThread (%08xh,%08xh)\n",
     
    149174//******************************************************************************
    150175//******************************************************************************
    151 BOOL HMDeviceThreadClass::SetThreadTerminated(PHMHANDLEDATA pHMHandleData)
     176BOOL HMDeviceThreadClass::SetThreadTerminated(HANDLE hThread, PHMHANDLEDATA pHMHandleData)
    152177{
    153178    pHMHandleData->dwUserData = THREAD_TERMINATED;
     
    156181//******************************************************************************
    157182//******************************************************************************
    158 DWORD HMDeviceThreadClass::ResumeThread(PHMHANDLEDATA pHMHandleData)
     183DWORD HMDeviceThreadClass::ResumeThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData)
    159184{
    160185    dprintf(("ResumeThread (%08xh)\n",
     
    165190//******************************************************************************
    166191//******************************************************************************
    167 BOOL HMDeviceThreadClass::GetExitCodeThread(PHMHANDLEDATA pHMHandleData, LPDWORD lpExitCode)
     192BOOL HMDeviceThreadClass::GetExitCodeThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData, LPDWORD lpExitCode)
    168193{
    169194    dprintf(("GetExitCodeThread (%08xh,%08xh)\n",
Note: See TracChangeset for help on using the changeset viewer.