55{
57 union {
58 char str[32];
59 int val;
60 } value;
62 int mib[16];
63 int ret = -1;
64 size_t len, mib_len;
65
66 if (attr == NULL || ret_buf == NULL || maxlen < 1)
67 return -1;
68
69 *ret_buf = '\0';
70
71 if (!strcmp(attr, "vendor_id")) {
72 name =
"machdep.cpu.vendor";
74 } else if (!strcmp(attr, "model")) {
75 name =
"machdep.cpu.model";
77 } else if (!strcmp(attr, "cpu family")) {
78 name =
"machdep.cpu.family";
80 }
81
82 mib_len = 16;
83 ret = sysctlnametomib(
name, mib, &mib_len);
84 if (ret)
85 return -1;
86
87 len = sizeof(value);
88 ret = sysctl(mib, mib_len, &value, &len, NULL, 0);
89 if (ret)
90 return ret;
91
93 strncpy(ret_buf, value.str, maxlen);
95 snprintf(ret_buf, maxlen, "%d", value.val);
96
98
99 return ret;
100}
void __pfm_vbprintf(const char *fmt,...)