1// Copyright 2018 Tobias Klauser. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package sysconf_cgotest 6 7/* 8#include <unistd.h> 9*/ 10import "C" 11 12import ( 13 "testing" 14 15 "github.com/tklauser/go-sysconf" 16) 17 18func testSysconfCgoMatch(t *testing.T) { 19 testCases := []struct { 20 goVar int 21 cVar C.int 22 name string 23 }{ 24 {sysconf.SC_AIO_LISTIO_MAX, C._SC_AIO_LISTIO_MAX, "AIO_LISTIO_MAX"}, 25 {sysconf.SC_AIO_MAX, C._SC_AIO_MAX, "AIO_MAX"}, 26 {sysconf.SC_ARG_MAX, C._SC_ARG_MAX, "ARG_MAX"}, 27 {sysconf.SC_ATEXIT_MAX, C._SC_ATEXIT_MAX, "ATEXIT_MAX"}, 28 {sysconf.SC_BC_BASE_MAX, C._SC_BC_BASE_MAX, "BC_BASE_MAX"}, 29 {sysconf.SC_BC_DIM_MAX, C._SC_BC_DIM_MAX, "BC_DIM_MAX"}, 30 {sysconf.SC_BC_SCALE_MAX, C._SC_BC_SCALE_MAX, "BC_SCALE_MAX"}, 31 {sysconf.SC_BC_STRING_MAX, C._SC_BC_STRING_MAX, "BC_STRING_MAX"}, 32 {sysconf.SC_CHILD_MAX, C._SC_CHILD_MAX, "CHILD_MAX"}, 33 {sysconf.SC_CLK_TCK, C._SC_CLK_TCK, "CLK_TCK"}, 34 {sysconf.SC_COLL_WEIGHTS_MAX, C._SC_COLL_WEIGHTS_MAX, "COLL_WEIGHTS_MAX"}, 35 {sysconf.SC_EXPR_NEST_MAX, C._SC_EXPR_NEST_MAX, "EXPR_NEST_MAX"}, 36 {sysconf.SC_HOST_NAME_MAX, C._SC_HOST_NAME_MAX, "HOST_NAME_MAX"}, 37 {sysconf.SC_IOV_MAX, C._SC_IOV_MAX, "IOV_MAX"}, 38 {sysconf.SC_LINE_MAX, C._SC_LINE_MAX, "LINE_MAX"}, 39 {sysconf.SC_LOGIN_NAME_MAX, C._SC_LOGIN_NAME_MAX, "LOGIN_NAME_MAX"}, 40 {sysconf.SC_MQ_OPEN_MAX, C._SC_MQ_OPEN_MAX, "MQ_OPEN_MAX"}, 41 {sysconf.SC_MQ_PRIO_MAX, C._SC_MQ_PRIO_MAX, "MQ_PRIO_MAX"}, 42 {sysconf.SC_NGROUPS_MAX, C._SC_NGROUPS_MAX, "NGROUPS_MAX"}, 43 {sysconf.SC_OPEN_MAX, C._SC_OPEN_MAX, "OPEN_MAX"}, 44 {sysconf.SC_PAGE_SIZE, C._SC_PAGE_SIZE, "PAGE_SIZE"}, 45 {sysconf.SC_PAGESIZE, C._SC_PAGESIZE, "PAGESIZE"}, 46 {sysconf.SC_THREAD_DESTRUCTOR_ITERATIONS, C._SC_THREAD_DESTRUCTOR_ITERATIONS, "PTHREAD_DESTRUCTOR_ITERATIONS"}, 47 {sysconf.SC_THREAD_KEYS_MAX, C._SC_THREAD_KEYS_MAX, "PTHREAD_KEYS_MAX"}, 48 {sysconf.SC_THREAD_STACK_MIN, C._SC_THREAD_STACK_MIN, "PTHREAD_STACK_MIN"}, 49 {sysconf.SC_THREAD_THREADS_MAX, C._SC_THREAD_THREADS_MAX, "PTHREAD_THREADS_MAX"}, 50 {sysconf.SC_RE_DUP_MAX, C._SC_RE_DUP_MAX, "RE_DUP_MAX"}, 51 {sysconf.SC_STREAM_MAX, C._SC_STREAM_MAX, "STREAM_MAX"}, 52 {sysconf.SC_SYMLOOP_MAX, C._SC_SYMLOOP_MAX, "SYMLOOP_MAX"}, 53 {sysconf.SC_TTY_NAME_MAX, C._SC_TTY_NAME_MAX, "TTY_NAME_MAX"}, 54 {sysconf.SC_TZNAME_MAX, C._SC_TZNAME_MAX, "TZNAME_MAX"}, 55 56 {sysconf.SC_ASYNCHRONOUS_IO, C._SC_ASYNCHRONOUS_IO, "_POSIX_ASYNCHRONOUS_IO"}, 57 {sysconf.SC_BARRIERS, C._SC_BARRIERS, "_POSIX_BARRIERS"}, 58 {sysconf.SC_FSYNC, C._SC_FSYNC, "_POSIX_FSYNC"}, 59 {sysconf.SC_JOB_CONTROL, C._SC_JOB_CONTROL, "_POSIX_JOB_CONTROL"}, 60 {sysconf.SC_MAPPED_FILES, C._SC_MAPPED_FILES, "_POSIX_MAPPED_FILES"}, 61 {sysconf.SC_SEMAPHORES, C._SC_SEMAPHORES, "_POSIX_SEMAPHORES"}, 62 {sysconf.SC_SHELL, C._SC_SHELL, "_POSIX_SHELL"}, 63 {sysconf.SC_THREADS, C._SC_THREADS, "_POSIX_THREADS"}, 64 {sysconf.SC_TIMERS, C._SC_TIMERS, "_POSIX_TIMERS"}, 65 {sysconf.SC_VERSION, C._SC_VERSION, "_POSIX_VERSION"}, 66 67 {sysconf.SC_2_UPE, C._SC_2_UPE, "_POSIX2_UPE"}, 68 {sysconf.SC_2_VERSION, C._SC_2_VERSION, "_POSIX2_VERSION"}, 69 70 // non-standard 71 {sysconf.SC_PHYS_PAGES, C._SC_PHYS_PAGES, "_PHYS_PAGES"}, 72 // AV_PHYS_PAGES might change between calling Go and C version 73 // of sysconf. Don't test it for now. 74 {sysconf.SC_MONOTONIC_CLOCK, C._SC_MONOTONIC_CLOCK, "MONOTONIC_CLOCK"}, 75 {sysconf.SC_NPROCESSORS_CONF, C._SC_NPROCESSORS_CONF, "_NPROCESSORS_CONF"}, 76 {sysconf.SC_NPROCESSORS_ONLN, C._SC_NPROCESSORS_ONLN, "_NPROCESSORS_ONLN"}, 77 } 78 79 for _, tc := range testCases { 80 testSysconfGoCgo(t, tc) 81 } 82} 83