From: Ronan Desplanques Date: Mon, 15 Apr 2024 12:17:13 +0000 (+0200) Subject: ada: Fix usage of SetThreadAffinityMask X-Git-Tag: basepoints/gcc-16~8408 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c5aa1535e1328af279b8145fef1ae6fdc91b75fa;p=thirdparty%2Fgcc.git ada: Fix usage of SetThreadAffinityMask This patches fixes the signature of the binding to SetThreadAffinityMask in the run-time library. It also fixes the error checking after calls to SetThreadAffinityMask. The previous code behaved as if SetThreadAffinityMask returned 1 on success, but it in fact returns a pointer value on success and 0 on failure. gcc/ada/ * libgnarl/s-taprop__mingw.adb (Set_Task_Affinity): Fix usage of SetThreadAffinityMask. * libgnat/s-winext.ads (SetThreadAffinityMask): Fix binding signature. --- diff --git a/gcc/ada/libgnarl/s-taprop__mingw.adb b/gcc/ada/libgnarl/s-taprop__mingw.adb index 38e281cb721..f77d71970b8 100644 --- a/gcc/ada/libgnarl/s-taprop__mingw.adb +++ b/gcc/ada/libgnarl/s-taprop__mingw.adb @@ -1340,7 +1340,7 @@ package body System.Task_Primitives.Operations is then declare CPU_Set : DWORD := 0; - + Mask_Result : DWORD_PTR; begin for Proc in T.Common.Domain'Range loop if T.Common.Domain (Proc) then @@ -1352,8 +1352,8 @@ package body System.Task_Primitives.Operations is end if; end loop; - Result := SetThreadAffinityMask (T.Common.LL.Thread, CPU_Set); - pragma Assert (Result = 1); + Mask_Result := SetThreadAffinityMask (T.Common.LL.Thread, CPU_Set); + pragma Assert (Mask_Result /= 0); end; end if; end Set_Task_Affinity; diff --git a/gcc/ada/libgnat/s-winext.ads b/gcc/ada/libgnat/s-winext.ads index 3f14fc04e60..b402a5615c9 100644 --- a/gcc/ada/libgnat/s-winext.ads +++ b/gcc/ada/libgnat/s-winext.ads @@ -55,7 +55,7 @@ package System.Win32.Ext is function SetThreadAffinityMask (hThread : HANDLE; - dwThreadAffinityMask : DWORD) return DWORD; + dwThreadAffinityMask : DWORD) return DWORD_PTR; pragma Import (Stdcall, SetThreadAffinityMask, "SetThreadAffinityMask"); --------------