The good news is that this more than covers everything used by AOSP. The bad news is that it turns out that the relationship between the actual constant names and the names understood by the GNU getconf (I didn't test a BSD getconf) turn out to be pretty random, especially in terms of whether or not they use a leading underscore.
(Though since I _don't_ want this generated by a script, that's good news for me too.) --- toys/posix/getconf.c | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-)
From fae766d4a49e6c90730ce78e98c787a43f40605a Mon Sep 17 00:00:00 2001 From: Elliott Hughes <[email protected]> Date: Fri, 5 Oct 2018 16:12:55 -0700 Subject: [PATCH] getconf: add missing names used by AOSP. The good news is that this more than covers everything used by AOSP. The bad news is that it turns out that the relationship between the actual constant names and the names understood by the GNU getconf (I didn't test a BSD getconf) turn out to be pretty random, especially in terms of whether or not they use a leading underscore. (Though since I _don't_ want this generated by a script, that's good news for me too.) --- toys/posix/getconf.c | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/toys/posix/getconf.c b/toys/posix/getconf.c index 38c74d5..4faf58f 100644 --- a/toys/posix/getconf.c +++ b/toys/posix/getconf.c @@ -32,7 +32,7 @@ config GETCONF struct config { char *name; - int value; + long long int value; }; // Lists of symbols getconf can query, broken down by whether we call sysconf(), @@ -63,7 +63,7 @@ struct config sysconfs[] = { /* POSIX.2 */ #undef CONF -#define CONF(n) {"_POSIX2_" #n,_SC_2_ ## n} +#define CONF(n) {"POSIX2_" #n,_SC_2_ ## n} CONF(C_BIND), CONF(C_DEV), CONF(CHAR_TERM), CONF(FORT_DEV), CONF(FORT_RUN), CONF(LOCALEDEF), CONF(PBS), CONF(PBS_ACCOUNTING), CONF(PBS_CHECKPOINT), CONF(PBS_LOCATE), CONF(PBS_MESSAGE), CONF(PBS_TRACK), CONF(SW_DEV), @@ -80,7 +80,7 @@ struct config sysconfs[] = { #define CONF(n) {#n,_SC_ ## n} CONF(AIO_LISTIO_MAX), CONF(AIO_MAX), CONF(AIO_PRIO_DELTA_MAX), CONF(ARG_MAX), CONF(ATEXIT_MAX), CONF(BC_BASE_MAX), CONF(BC_DIM_MAX), CONF(BC_SCALE_MAX), - CONF(BC_STRING_MAX), CONF(CHILD_MAX), CONF(COLL_WEIGHTS_MAX), + CONF(BC_STRING_MAX), CONF(CHILD_MAX), CONF(CLK_TCK), CONF(COLL_WEIGHTS_MAX), CONF(DELAYTIMER_MAX), CONF(EXPR_NEST_MAX), CONF(HOST_NAME_MAX), CONF(IOV_MAX), CONF(LINE_MAX), CONF(LOGIN_NAME_MAX), CONF(NGROUPS_MAX), CONF(MQ_OPEN_MAX), CONF(MQ_PRIO_MAX), CONF(OPEN_MAX), CONF(PAGE_SIZE), @@ -90,10 +90,12 @@ struct config sysconfs[] = { {"PTHREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX}, {"PTHREAD_STACK_MIN", _SC_THREAD_STACK_MIN}, {"PTHREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX}, - CONF(RE_DUP_MAX), CONF(RTSIG_MAX), CONF(SEM_NSEMS_MAX), CONF(SEM_VALUE_MAX), - CONF(SIGQUEUE_MAX), CONF(STREAM_MAX), CONF(SYMLOOP_MAX), CONF(TIMER_MAX), - CONF(TTY_NAME_MAX), CONF(TZNAME_MAX), CONF(NPROCESSORS_CONF), - CONF(NPROCESSORS_ONLN) + CONF(RAW_SOCKETS), CONF(RE_DUP_MAX), CONF(RTSIG_MAX), CONF(SEM_NSEMS_MAX), + CONF(SEM_VALUE_MAX), CONF(SIGQUEUE_MAX), CONF(STREAM_MAX), CONF(SYMLOOP_MAX), + CONF(TIMER_MAX), CONF(TTY_NAME_MAX), CONF(TZNAME_MAX), + {"_AVPHYS_PAGES", _SC_AVPHYS_PAGES}, {"_PHYS_PAGES", _SC_PHYS_PAGES}, + {"_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF}, + {"_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN}, }; // Probe the live system with a path @@ -103,7 +105,8 @@ struct config pathconfs[] = { CONF(ASYNC_IO), CONF(CHOWN_RESTRICTED), CONF(FILESIZEBITS), CONF(LINK_MAX), CONF(MAX_CANON), CONF(MAX_INPUT), CONF(NAME_MAX), CONF(NO_TRUNC), CONF(PATH_MAX), CONF(PIPE_BUF), CONF(PRIO_IO), CONF(SYMLINK_MAX), - CONF(SYNC_IO), CONF(VDISABLE), + CONF(SYNC_IO), + {"_POSIX_VDISABLE", _PC_VDISABLE}, }; // Strings out of a header @@ -129,10 +132,22 @@ struct config limits[] = { CONF(_POSIX_THREAD_DESTRUCTOR_ITERATIONS), CONF(_POSIX_THREAD_KEYS_MAX), CONF(_POSIX_THREAD_THREADS_MAX), CONF(_POSIX_TIMER_MAX), CONF(_POSIX_TTY_NAME_MAX), CONF(_POSIX_TZNAME_MAX), - CONF(_POSIX2_BC_BASE_MAX), CONF(_POSIX2_BC_DIM_MAX), - CONF(_POSIX2_BC_SCALE_MAX), CONF(_POSIX2_BC_STRING_MAX), - CONF(_POSIX2_CHARCLASS_NAME_MAX), CONF(_POSIX2_COLL_WEIGHTS_MAX), - CONF(_POSIX2_EXPR_NEST_MAX), CONF(_POSIX2_LINE_MAX), CONF(_POSIX2_RE_DUP_MAX) +#undef CONF +#define CONF(n) {#n,_ ## n} + CONF(POSIX2_BC_BASE_MAX), CONF(POSIX2_BC_DIM_MAX), + CONF(POSIX2_BC_SCALE_MAX), CONF(POSIX2_BC_STRING_MAX), + CONF(POSIX2_CHARCLASS_NAME_MAX), CONF(POSIX2_COLL_WEIGHTS_MAX), + CONF(POSIX2_EXPR_NEST_MAX), CONF(POSIX2_LINE_MAX), CONF(POSIX2_RE_DUP_MAX), +#undef CONF +#define CONF(n) {#n,n} + CONF(CHAR_BIT), + /* Not available in glibc without _GNU_SOURCE. */ + {"LONG_BIT", 8*sizeof(long)}, + {"WORD_BIT", 8*sizeof(int)}, + CONF(CHAR_MAX), CONF(CHAR_MIN), CONF(INT_MAX), CONF(INT_MIN), CONF(SCHAR_MAX), + CONF(SCHAR_MIN), CONF(SHRT_MAX), CONF(SHRT_MIN), CONF(SSIZE_MAX), + CONF(UCHAR_MAX), CONF(UINT_MAX), CONF(ULONG_MAX), CONF(USHRT_MAX), + CONF(UIO_MAXIOV), }; // Names that default to blank @@ -189,7 +204,7 @@ void getconf_main(void) else if (i==2) { confstr(c->value, toybuf, sizeof(toybuf)); puts(toybuf); - } else if (i==3) printf("%d\n", c->value); + } else if (i==3) printf("%lld\n", c->value); // For legacy kernel build else if (sizeof(long)==4 && !j) { puts("-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"); -- 2.19.0.605.g01d371f741-goog
_______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
