Changeset 7318 for trunk/src/kernel32/oslibdos.cpp
- Timestamp:
- Nov 10, 2001, 1:47:48 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/oslibdos.cpp
r7286 r7318 1 /* $Id: oslibdos.cpp,v 1.8 3 2001-11-05 15:00:36 sandervl Exp $ */1 /* $Id: oslibdos.cpp,v 1.84 2001-11-10 12:47:46 sandervl Exp $ */ 2 2 /* 3 3 * Wrappers for OS/2 Dos* API … … 2815 2815 //****************************************************************************** 2816 2816 //****************************************************************************** 2817 BOOL OSLibDosSetThreadAffinity(DWORD dwThreadAffinityMask) 2818 { 2819 static PROC_DosSetThreadAffinity pfnDosSetThreadAffinity = NULL; 2820 static BOOL fInit = FALSE; 2821 MPAFFINITY mask; 2822 2823 if(fInit == FALSE && pfnDosSetThreadAffinity == NULL) { 2824 HMODULE hDoscalls; 2825 if(DosQueryModuleHandle("DOSCALLS", &hDoscalls) == NO_ERROR) { 2826 DosQueryProcAddr(hDoscalls, 564, NULL, (PFN *)&pfnDosSetThreadAffinity); 2827 } 2828 fInit = TRUE; 2829 } 2830 if(fInit && pfnDosSetThreadAffinity == NULL) { 2831 SetLastError(ERROR_SUCCESS_W); 2832 return TRUE; 2833 } 2834 APIRET rc; 2835 USHORT sel = RestoreOS2FS(); 2836 2837 mask.mask[0] = dwThreadAffinityMask; 2838 mask.mask[1] = 0; //TODO: this might not be a good idea, but then again, not many people have > 32 cpus 2839 2840 rc = pfnDosSetThreadAffinity(&mask); 2841 SetFS(sel); 2842 2843 SetLastError(error2WinError(rc,ERROR_INVALID_PARAMETER)); 2844 return (rc == NO_ERROR); 2845 } 2846 //****************************************************************************** 2847 //****************************************************************************** 2848 BOOL OSLibDosQueryAffinity(DWORD fMaskType, DWORD *pdwThreadAffinityMask) 2849 { 2850 static PROC_DosQueryThreadAffinity pfnDosQueryThreadAffinity = NULL; 2851 static BOOL fInit = FALSE; 2852 MPAFFINITY mask; 2853 2854 if(fInit == FALSE && pfnDosQueryThreadAffinity == NULL) { 2855 HMODULE hDoscalls; 2856 if(DosQueryModuleHandle("DOSCALLS", &hDoscalls) == NO_ERROR) { 2857 DosQueryProcAddr(hDoscalls, 563, NULL, (PFN *)&pfnDosQueryThreadAffinity); 2858 } 2859 fInit = TRUE; 2860 } 2861 if(fInit && pfnDosQueryThreadAffinity == NULL) { 2862 *pdwThreadAffinityMask = 1; 2863 SetLastError(ERROR_SUCCESS_W); 2864 return TRUE; 2865 } 2866 2867 ULONG scope = (fMaskType == MASK_SYSTEM) ? AFNTY_SYSTEM : AFNTY_THREAD; 2868 2869 APIRET rc; 2870 USHORT sel = RestoreOS2FS(); 2871 2872 rc = pfnDosQueryThreadAffinity(scope, &mask); 2873 SetFS(sel); 2874 2875 if(rc == NO_ERROR) { 2876 *pdwThreadAffinityMask = mask.mask[0]; 2877 } 2878 SetLastError(error2WinError(rc,ERROR_INVALID_PARAMETER)); 2879 return (rc == NO_ERROR); 2880 } 2881 //****************************************************************************** 2882 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.