brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 38c3425 Raw
65 lines · cpp
1// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s2//3// UNSUPPORTED: linux, target={{.*solaris.*}}4 5#include <sys/param.h>6#include <sys/types.h>7 8#include <sys/sysctl.h>9 10#include <assert.h>11#include <stdio.h>12#include <stdlib.h>13 14#ifndef __arraycount15#define __arraycount(a) (sizeof(a) / sizeof(a[0]))16#endif17 18void test_sysctl() {19  char buf[100];20  size_t len = sizeof(buf);21  int mib[] = {CTL_KERN, KERN_OSTYPE};22  int rv = sysctl(mib, __arraycount(mib), buf, &len, NULL, 0);23  assert(!rv);24 25  printf("sysctl: '%s' size: '%zu'\n", buf, len);26}27 28void test_sysctlbyname() {29  char buf[100];30  size_t len = sizeof(buf);31  int rv = sysctlbyname("kern.ostype", buf, &len, NULL, 0);32  assert(!rv);33 34  printf("sysctlbyname: '%s' size: '%zu'\n", buf, len);35}36 37void test_sysctlnametomib() {38  int mib[CTL_MAXNAME];39  size_t mib_len = __arraycount(mib);40  int rv = sysctlnametomib("kern.ostype", &mib[0], &mib_len);41  assert(!rv);42 43  char buf[100];44  size_t len = sizeof(buf);45  rv = sysctl(mib, mib_len, buf, &len, NULL, 0);46  assert(!rv);47 48  printf("sysctlnametomib: '%s' size: '%zu'\n", buf, len);49}50 51int main(void) {52  printf("sysctl\n");53 54  test_sysctl();55  test_sysctlbyname();56  test_sysctlnametomib();57 58  // CHECK: sysctl59  // CHECK: sysctl: '{{.*}}' size: '{{.*}}'60  // CHECK: sysctlbyname: '{{.*}}' size: '{{.*}}'61  // CHECK: sysctlnametomib: '{{.*}}' size: '{{.*}}'62 63  return 0;64}65