On Wed, 27 Oct 2010, David Xu wrote:
I really hate to see such a problem that userland can not figure out what
kernel is using, I try hardly to guess, but still can not find what it is
using. yes, I think the doc may need to be fixed or another syscall is
needed.
Well... Jeff's code in cpuset(1) does some trivial sizeof(mask) 's, but
it just passes in cpuset_t for mask. I've seen different calling
conventions at the kernel level when I tried to get my brain in sync with
that for a bug I was looking at a few weeks ago (and sadly, failed to some
degree).
These syscalls are a bit confusing though, and apart from cpuset(1)
there aren't any really good examples in the sourcebase on how to use them
(at least not the last time I checked)... Thanks, -Garrett
The problem is that the size of cpuset is not fixed, it is tunable by the
recompiling kernel with different parameter, so if you have a program which
you want to adapt it to use any size of cpuset, it should be able to get the
size the kernel is using, if you don't have source code of the program, you
can not compile it with new parameter, then there is trouble.
Yay, it's fd_set all over again :-).
It sounds like we might just need to add a sysctl and a few wrapper functions
in userspace along the lines of (hand-wave):
cpuset_t *cpuset_alloc();
void cpuset_free();
And perhaps some sort of API that abstracts manipulation of the set (or
doesn't but allows the user to easily query its bounds).
Robert
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"