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.

>
> 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.

>
> if ((error = cpuset_getaffinity(td, &cga)) == 0)
> td->td_retval[0] = sizeof(cpumask_t);
>
> return (error);
> }


Thanks,
Jeff

>
>
> can someone comment on this? thnx
>
> roman
>

_______________________________________________
freebsd-emulation@freebsd.org mailing list
http://lists.freebsd.org/mailman/lis...ebsd-emulation
To unsubscribe, send any mail to "freebsd-emulation-unsubscribe@freebsd.org"