Re: getaffinity/setaffinity and cpu sets.
- From: Daniel Eischen <deischen@xxxxxxxxxxx>
- Date: Thu, 21 Feb 2008 11:34:09 -0500 (EST)
On Wed, 20 Feb 2008, Jeff Roberson wrote:
I have the following api working:
/*
* Parameters for the level argument to getaffinity.
*/
#define CPU_LEVEL_SYS 1 /* All system cpus. */
#define CPU_LEVEL_AVAIL 2 /* Available cpus for which. */
#define CPU_LEVEL_WHICH 3 /* Actual mask for which. */
/*
* Parameters for the which argument to {get,set}affinity.
*/
#define CPU_WHICH_TID 1 /* Specifies a thread id. */
#define CPU_WHICH_PID 2 /* Specifies a process id. */
#define CPU_WHICH_SET 3 /* Specifies a set id. */
Along with a CPU_CLR, CPU_COPY, CPU_ISSET, CPU_SET, CPU_ZERO for manipulating the sets.
int getaffinity(int level, int which, int id, int cpusetsize, long *mask);
int setaffinity(int which, int id, int cpusetsize, long *mask);
The get call has a notion of 'level' which allows us to fetch different masks. The system set is all processors in the system. The available set is the set of cpus available to the tid/pid in the 'which' argument. An application would fetch the avail set and then potentially reduce it.
The setaffinity call doesn't have a level because the avail/sys sets are immutable. You can only set things which can be specified by the which argument.
Everything looks pretty good to me, but if you add the 'level' to
setaffinity(), you might be able to say "run on any ONE of the CPUs
in the cpuset - I don't care which one".
--
DE
_______________________________________________
freebsd-arch@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-unsubscribe@xxxxxxxxxxx"
- References:
- Re: Linux compatible setaffinity.
- From: Jeff Roberson
- Re: Linux compatible setaffinity.
- From: Robert Watson
- Re: Linux compatible setaffinity.
- From: Jeff Roberson
- Re: Linux compatible setaffinity.
- From: Robert Watson
- Re: Linux compatible setaffinity.
- From: David Xu
- Re: Linux compatible setaffinity.
- From: Jeff Roberson
- getaffinity/setaffinity and cpu sets.
- From: Jeff Roberson
- Re: Linux compatible setaffinity.
- Prev by Date: Re: dev.* analogue for interfaces
- Next by Date: Re: dev.* analogue for interfaces
- Previous by thread: Re: cpuset and affinity implementation
- Next by thread: Re: getaffinity/setaffinity and cpu sets.
- Index(es):
Relevant Pages
|