[PATCH] linux get affinity syscall

Jeff Roberson jroberson at chesapeake.net
Thu Mar 6 04:32:35 UTC 2008


On Wed, 5 Mar 2008, Roman Divacky wrote:

>>>>>>      if (args->len < sizeof(cpumask_t))
>>>>>>              return (EINVAL);
>>
>> This should not be necessary anymore.
>>
>>>>>
>>>>> Len here is in number of bits I believe as it is for our cpusetsize.
>>>>
>>>> no.. its specified in  bytes
>>>
>>> You are right.  So it is with fdsets.  Please hold on and I'll change
>>> cpuset to be bytes as well.
>>>
>>>>
>>>>>>
>>>>>>      cga.level = CPU_LEVEL_WHICH;
>>>>>>      cga.which = CPU_WHICH_PID;
>>>>>>      cga.id = args->pid;
>>>>>>      cga.cpusetsize = sizeof(cpumask_t) * NBBY;
>>>>>>      cga.mask = (long *) args->user_mask_ptr;
>>>>>
>>
>> I checked in a change to make our cpusetsize compatible.  You should only
>> have to supply CPU_LEVEL_WHICH and CPU_WHICH_PID now.  The rest of the
>> arguments are compatible.
>
> is it possible to make cpuset_setproc non-static?
>
> if so could you please review the following patch:
>
> 	www.vlakno.cz/~rdivacky/linux_affinity.patch
>
> and tell me if its ok? (it lacks #include of something that should
> contain the prototype for cpuset_setproc())

Why not call cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, id, 
cpusetlen, user_mask_ptr); as you do with getaffinity?  Then we don't have 
to expose the internal interface.  You also don't have to error check the 
length then.

Thanks,
Jeff

>
> thnx, roman
>


More information about the freebsd-emulation mailing list