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>