Newer
Older
UbixOS / debug / sysctl.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <string.h>

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);
}