Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Jan 2008 17:03:42 +0000
From:      "Igor Mozolevsky" <igor@hybrid-lab.co.uk>
To:        "Csaba Henk" <csaba-ml@creo.hu>
Cc:        freebsd-current@freebsd.org
Subject:   Re: RFC: Adding a hw.features[2] sysctl
Message-ID:  <a2b6592c0801140903l78370630w50bf886d96118bb9@mail.gmail.com>
In-Reply-To: <slrnfon4at.i6j.csaba-ml@beastie.creo.hu>
References:  <1200197787.67286.13.camel@shumai.marcuscom.com> <20080113182457.GN929@server.vk2pj.dyndns.org> <a2b6592c0801131721w25afae5bg3dcf6a90c1a3d2b7@mail.gmail.com> <200801141254.20400.doconnor@gsoft.com.au> <a2b6592c0801131838jcde3634le6087d2f784adcbc@mail.gmail.com> <478AE741.1000105@comcast.net> <a2b6592c0801140139v42bb6ab2s667ebceb9ba3ab16@mail.gmail.com> <slrnfomt3j.i6j.csaba-ml@beastie.creo.hu> <a2b6592c0801140747r2a7ec1e5q7cd858065399ae65@mail.gmail.com> <slrnfon4at.i6j.csaba-ml@beastie.creo.hu>

next in thread | previous in thread | raw e-mail | index | archive | help
On 14/01/2008, Csaba Henk <csaba-ml@creo.hu> wrote:

> I don't pretend that I'm an expert of the topic discussed, I just don't
> see any essential difference (in terms of convenience or expressive
> power) between these:
>
> ################################################
> /* your code sample */
> cpu_features_t mask;
>
> fd = open( "/dev/cpuinfo", O_RDONLY );
> ioctl( fd, SIOCGCPUFEATURES, (caddr_t)&mask );
> close( fd );
> ################################################
>
> ################################################
> cpu_features_t mask;
> size_t len = sizeof(mask);
>
> sysctlbyname("hw.features", &mask, &len, NULL, 0);
> ################################################
>
> (and then the macro based processing of the mask
> can be done exactly the same way).
>
> > If it can be done reasonably in a MIB, I won't say a word, but
> > nobody's proposed any data representation for a (or a number of)
> > MIB(s) yet...

I didn't ask for user-land implementation detail, I was asking how
you'd represent all of this:

"
Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
Features2=0x1<SSE3>
AMD Features=0xe2500800<SYSCALL,NX,MMX+,FFXSR,LM,3DNow!+,3DNow!>
AMD Features2=0x3<LAHF,CMP>
Cores per package: 2
"

using MIBs?..

Would you need
...features=0x178bfbff
...features2=0x1
...amd.features=0xe2500800
...amd.features20x3; or
...features="1=0x178bfbff 2=0x1 AMD1=0xe2500800 AMD2=0x3", both of
which would make life on the user-land side much more difficult than a
few ioctls that hide all the details away, IMO.

> > What's the overhead of sysctl vs ioctl?
>
> Well, looking at the above code examples, the ioctl based implementation
> costs three syscalls, the sysctl based one costs only two.

syscall overhead != system overhead!

I genuinely don't know (and don't have the time to work out) the
actual overhead of a sysctl vs ioctl, so if someone knows please let
me know :-)


Igor



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a2b6592c0801140903l78370630w50bf886d96118bb9>