diff --git a/debug/sysctl.c b/debug/sysctl.c new file mode 100644 index 0000000..9a3f143 --- /dev/null +++ b/debug/sysctl.c @@ -0,0 +1,89 @@ +#include +#include +#include +#include +#include + +int mib[CTL_MAXNAME]; +//int mib[2]; +size_t len; +char *p; + +static int name2oid(const char *name, int *oidp); + +int main() { + printf("SYSCTL\n"); + + + mib[0] = 1; + mib[1] = 1; + + sysctl(mib, 2, NULL, &len, NULL, 0); + p = malloc(len); + sysctl(mib, 2, p, &len, NULL, 0); + + printf("[%s]\n", p); + + mib[0] = 1; + mib[1] = 10; + + sysctl(mib, 2, NULL, &len, NULL, 0); + p = malloc(len); + sysctl(mib, 2, p, &len, NULL, 0); + + printf("[%s]\n", p); + + mib[0] = 1; + mib[1] = 2; + + sysctl(mib, 2, NULL, &len, NULL, 0); + p = malloc(len); + sysctl(mib, 2, p, &len, NULL, 0); + + printf("[%s]\n", p); + + mib[0] = 1; + mib[1] = 4; + + sysctl(mib, 2, NULL, &len, NULL, 0); + p = malloc(len); + sysctl(mib, 2, p, &len, NULL, 0); + + printf("[%s]\n", p); + + mib[0] = 6; + mib[1] = 1; + + sysctl(mib, 2, NULL, &len, NULL, 0); + p = malloc(len); + sysctl(mib, 2, p, &len, NULL, 0); + + printf("[%s]\n", p); + + size_t j; + + j = name2oid("vm.overcommit", mib); + + printf("j:[%i]\n", j); + + for (int i = 0; i < j; i++) + printf("[%i]", mib[i]); + printf("\n"); +} + +static int name2oid(const char *name, int *oidp) +{ + int oid[2]; + int i; + size_t j; + + oid[0] = 0; + oid[1] = 3; + + j = CTL_MAXNAME * sizeof(int); + i = sysctl(oid, 2, oidp, &j, name, strlen(name)); + if (i < 0) + return (i); + j /= sizeof(int); + return (j); +}