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

DosSet/QueryAffinity fixes for non-SMP systems

File:
1 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);
Note: See TracChangeset for help on using the changeset viewer.