Changeset 7744 for trunk/src


Ignore:
Timestamp:
Jan 8, 2002, 11:34:11 PM (24 years ago)
Author:
sandervl
Message:

DosSet/QueryAffinity fixes for non-SMP systems

Location:
trunk/src/kernel32
Files:
2 edited

Legend:

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

    r7724 r7744  
    1 /* $Id: oslibdos.cpp,v 1.92 2002-01-04 14:11:23 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.93 2002-01-08 22:34:10 sandervl Exp $ */
    22/*
    33 * Wrappers for OS/2 Dos* API
     
    30283028  static PROC_DosSetThreadAffinity pfnDosSetThreadAffinity = NULL;
    30293029  static BOOL fInit = FALSE;
    3030   MPAFFINITY mask;
    3031 
    3032     if(fInit == FALSE && pfnDosSetThreadAffinity == NULL) {
     3030  MPAFFINITY  mask;
     3031  APIRET      rc;
     3032
     3033    if(fInit == FALSE && pfnDosSetThreadAffinity == NULL)
     3034    {
     3035        ULONG nrCPUs;
     3036
     3037        rc = DosQuerySysInfo(QSV_NUMPROCESSORS, QSV_NUMPROCESSORS, &nrCPUs, sizeof(nrCPUs));
     3038        if (rc != 0 || nrCPUs == 1)
     3039        {//not supported
     3040            fInit = TRUE;
     3041            SetLastError(ERROR_SUCCESS_W);
     3042            return TRUE;
     3043        }
     3044
    30333045        HMODULE hDoscalls;
    30343046        if(DosQueryModuleHandle("DOSCALLS", &hDoscalls) == NO_ERROR) {
     
    30413053        return TRUE;
    30423054    }
    3043     APIRET rc;
    30443055    USHORT sel = RestoreOS2FS();
    30453056
     
    30593070  static PROC_DosQueryThreadAffinity pfnDosQueryThreadAffinity = NULL;
    30603071  static BOOL fInit = FALSE;
    3061   MPAFFINITY mask;
    3062 
    3063     if(fInit == FALSE && pfnDosQueryThreadAffinity == NULL) {
     3072  MPAFFINITY  mask;
     3073  APIRET      rc;
     3074
     3075    if(fInit == FALSE && pfnDosQueryThreadAffinity == NULL)
     3076    {
     3077        ULONG nrCPUs;
     3078
     3079        rc = DosQuerySysInfo(QSV_NUMPROCESSORS, QSV_NUMPROCESSORS, &nrCPUs, sizeof(nrCPUs));
     3080        if (rc != 0 || nrCPUs == 1)
     3081        {//not supported
     3082            fInit = TRUE;
     3083            *pdwThreadAffinityMask = 1;
     3084            SetLastError(ERROR_SUCCESS_W);
     3085            return TRUE;
     3086        }
     3087
    30643088        HMODULE hDoscalls;
    30653089        if(DosQueryModuleHandle("DOSCALLS", &hDoscalls) == NO_ERROR) {
     
    30763100    ULONG scope = (fMaskType == MASK_SYSTEM) ? AFNTY_SYSTEM : AFNTY_THREAD;
    30773101
    3078     APIRET rc;
    30793102    USHORT sel = RestoreOS2FS();
    30803103
     
    30833106
    30843107    if(rc == NO_ERROR) {
    3085         *pdwThreadAffinityMask = mask.mask[0];
    3086     }
     3108         *pdwThreadAffinityMask = mask.mask[0];
     3109    }
     3110
    30873111    SetLastError(error2WinError(rc,ERROR_INVALID_PARAMETER));
    30883112    return (rc == NO_ERROR);
  • trunk/src/kernel32/process.cpp

    r7318 r7744  
    1 /* $Id: process.cpp,v 1.9 2001-11-10 12:47:47 sandervl Exp $ */
     1/* $Id: process.cpp,v 1.10 2002-01-08 22:34:11 sandervl Exp $ */
    22
    33/*
     
    124124BOOL WINAPI SetProcessAffinityMask( HANDLE hProcess, DWORD affmask )
    125125{
     126    dprintf(("SetProcessAffinityMask %x %x", hProcess, affmask));
    126127    ProcessAffinityMask = affmask;
    127128    //TODO: should update all threads, but that doesn't seem possible in OS/2
     
    135136                                     LPDWORD lpSystemAffinityMask)
    136137{
     138    dprintf(("GetProcessAffinityMask %x %x %x", hProcess, lpProcessAffinityMask, lpSystemAffinityMask));
     139
    137140    /* It is definitely important for a process to know on what processor
    138141       it is running :-) */
Note: See TracChangeset for help on using the changeset viewer.