[PATCH 2/2] kernel32/tests: Add test for 'all processors' flag on Vista and newer (try 3).

Erich Hoover ehoover at mines.edu
Fri Feb 19 18:49:12 CST 2010


On Fri, Feb 19, 2010 at 5:08 PM, Henri Verbeet <hverbeet at gmail.com> wrote:
> On 20 February 2010 00:19, Erich Hoover <ehoover at mines.edu> wrote:
>> +    /* NOTE: Pre-Vista does not recognize the "all processors" flag (-1) */
>> +    thread_affinity = -1;
> ~0UL probably makes more sense than -1 for an unsigned variable.
>
>> -            const ULONG_PTR *paff = data;
>> +            ULONG_PTR req_aff = *(ULONG_PTR *)data;
> You shouldn't cast const away.
>
> Is "-1" special, or does the call just always mask the requested mask
> with the available processors on Vista and above?

"-1" is special, I was honestly very surprised by this as it seems
like a dirty trick*.  You can see that this is the case from the test
for "other masks," which still errors out on Vista and Window 7 (ie.
the test succeeds):
---
   ok(SetThreadAffinityMask(curthread,processMask+1)==0,
      "SetThreadAffinityMask passed for an illegal processor\n");
---

Erich Hoover
ehoover at mines.edu

* That there's no good reason to do this except to artificially make
apps run better on Vista and Windows 7.



More information about the wine-devel mailing list