[PATCH] linux get affinity syscall
Roman Divacky
rdivacky at freebsd.org
Mon Mar 3 14:42:11 UTC 2008
On Mon, Mar 03, 2008 at 02:23:49AM -1000, Jeff Roberson wrote:
>
> On Sun, 2 Mar 2008, Roman Divacky wrote:
>
> >hi..
> >
> >jeff commited his cpu set and I tried to map that to linuxulator
> >version of linux_sched_getaffinity(), the current (untested) code
> >looks like this:
> >
> >/*
> >* Get affinity of a process
> >*/
> >int
> >linux_sched_getaffinity(struct thread *td,
> > struct linux_sched_getaffinity_args *args)
> >{
> > int error;
> > struct cpuset_getaffinity_args cga;
> >
> > if (args->len < sizeof(cpumask_t))
> > return (EINVAL);
>
> Len here is in number of bits I believe as it is for our cpusetsize.
no.. its specified in bytes
> >
> > 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;
>
> Our call will accept larger values and zero fill any bits we don't use.
> It should be safe to pass the original len.
ok.. will do it like that
thnx for the comments, can anyone test the stuff? (I have access
to UP only ATM)
roman
More information about the freebsd-emulation
mailing list