NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: lib/52756: sysctl(2) in C++ constructor does not work any more



On Nov 23,  9:35am, n54%gmx.com@localhost (n54%gmx.com@localhost) wrote:
-- Subject: lib/52756: sysctl(2) in C++ constructor does not work any more


CPU_FPU_PRESENT only exists in the header file, fixing the test prints
No such file or directory as expected. If I change the test to use
CPU_FPU_SAVE, it works: 

/* g++ std=c++11 prog.c */

#include <sys/param.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <machine/cpu.h>
#include <iostream>
#include <stdlib.h>
#include <err.h>

const int fpu_save = []() -> int {
  int mib[2];
  int error;
  size_t len;                                                                                                                                                                                 
  int val;

  len = sizeof(val);
  mib[0] = CTL_MACHDEP;
  mib[1] = CPU_FPU_SAVE;

  error = sysctl(mib, __arraycount(mib), &val, &len, NULL, 0);
  if (error == -1)
    err(EXIT_FAILURE, "sysctl");

  return val;
}();

int
main(int argc, char **argv)
{
        std::cout << "fpu_save=" << fpu_save << std::endl;

        return 0;
}



Home | Main Index | Thread Index | Old Index