Re: additional sysconf variables
Matthew Fluet <[email protected]> Tue, 12 Jul 2011 16:56:22 -0400
| Newsgroups | gmane.comp.lang.ml.mlton.devel |
|---|---|
| Message-ID | <CAMrhFL6JN_E31MvUQCkzuNYxyFwxEMxqvd0U_umqORQr=Sibbg@mail.gmail.com> |
For the most part, we've been following the Single Unix Specification for the POSIX functionality. The currently supported sysconf variables correspond to those that are required by the specification (http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html). I'm not sure the best way of handling variables above and beyond the required set. Adding them piecemeal like this seems to be an onerous process. SML/NJ tries to mine <unistd.h> for _SC* names and generates a table specific to the target platform. On Sun, Jul 10, 2011 at 8:16 PM, Christopher Cramer <[email protected]> wrote: > Hi > > Below is a patch that adds support for querying these variables with > Posix.ProcEnv.sysconf: > > AVPHYS_PAGES > NPROCESSORS_CONF > NPROCESSORS_ONLN > PHYS_PAGES > > Index: runtime/basis/Posix/ProcEnv/sysconf-consts.c > =================================================================== > --- runtime/basis/Posix/ProcEnv/sysconf-consts.c (revision 7550) > +++ runtime/basis/Posix/ProcEnv/sysconf-consts.c (working copy) > @@ -100,6 +100,10 @@ > #define _SC_ADVISORY_INFO -1 > #endif > const C_Int_t Posix_ProcEnv_SC_ADVISORY_INFO = _SC_ADVISORY_INFO; > +#ifndef _SC_AVPHYS_PAGES > +#define _SC_AVPHYS_PAGES -1 > +#endif > +const C_Int_t Posix_ProcEnv_SC_AVPHYS_PAGES = _SC_AVPHYS_PAGES; > #ifndef _SC_BARRIERS > #define _SC_BARRIERS -1 > #endif > @@ -152,6 +156,18 @@ > #define _SC_MONOTONIC_CLOCK -1 > #endif > const C_Int_t Posix_ProcEnv_SC_MONOTONIC_CLOCK = _SC_MONOTONIC_CLOCK; > +#ifndef _SC_NPROCESSORS_CONF > +#define _SC_NPROCESSORS_CONF -1 > +#endif > +const C_Int_t Posix_ProcEnv_SC_NPROCESSORS_CONF = _SC_NPROCESSORS_CONF; > +#ifndef _SC_NPROCESSORS_ONLN > +#define _SC_NPROCESSORS_ONLN -1 > +#endif > +const C_Int_t Posix_ProcEnv_SC_NPROCESSORS_ONLN = _SC_NPROCESSORS_ONLN; > +#ifndef _SC_PHYS_PAGES > +#define _SC_PHYS_PAGES -1 > +#endif > +const C_Int_t Posix_ProcEnv_SC_PHYS_PAGES = _SC_PHYS_PAGES; > #ifndef _SC_PRIORITIZED_IO > #define _SC_PRIORITIZED_IO -1 > #endif > Index: runtime/gen/basis-ffi.def > =================================================================== > --- runtime/gen/basis-ffi.def (revision 7550) > +++ runtime/gen/basis-ffi.def (working copy) > @@ -411,6 +411,7 @@ > Posix.ProcEnv.SC_ARG_MAX = _const : C_Int.t > Posix.ProcEnv.SC_ASYNCHRONOUS_IO = _const : C_Int.t > Posix.ProcEnv.SC_ATEXIT_MAX = _const : C_Int.t > +Posix.ProcEnv.SC_AVPHYS_PAGES = _const : C_Int.t > Posix.ProcEnv.SC_BARRIERS = _const : C_Int.t > Posix.ProcEnv.SC_BC_BASE_MAX = _const : C_Int.t > Posix.ProcEnv.SC_BC_DIM_MAX = _const : C_Int.t > @@ -441,9 +442,12 @@ > Posix.ProcEnv.SC_MQ_OPEN_MAX = _const : C_Int.t > Posix.ProcEnv.SC_MQ_PRIO_MAX = _const : C_Int.t > Posix.ProcEnv.SC_NGROUPS_MAX = _const : C_Int.t > +Posix.ProcEnv.SC_NPROCESSORS_CONF = _const : C_Int.t > +Posix.ProcEnv.SC_NPROCESSORS_ONLN = _const : C_Int.t > Posix.ProcEnv.SC_OPEN_MAX = _const : C_Int.t > Posix.ProcEnv.SC_PAGESIZE = _const : C_Int.t > Posix.ProcEnv.SC_PAGE_SIZE = _const : C_Int.t > +Posix.ProcEnv.SC_PHYS_PAGES = _const : C_Int.t > Posix.ProcEnv.SC_PRIORITIZED_IO = _const : C_Int.t > Posix.ProcEnv.SC_PRIORITY_SCHEDULING = _const : C_Int.t > Posix.ProcEnv.SC_RAW_SOCKETS = _const : C_Int.t > Index: basis-library/posix/proc-env.sml > =================================================================== > --- basis-library/posix/proc-env.sml (revision 7550) > +++ basis-library/posix/proc-env.sml (working copy) > @@ -121,6 +121,7 @@ > (Prim.SC_ARG_MAX,"ARG_MAX") ::? > (Prim.SC_ASYNCHRONOUS_IO,"ASYNCHRONOUS_IO") ::? > (Prim.SC_ATEXIT_MAX,"ATEXIT_MAX") ::? > + (Prim.SC_AVPHYS_PAGES,"AVPHYS_PAGES") ::? > (Prim.SC_BARRIERS,"BARRIERS") ::? > (Prim.SC_BC_BASE_MAX,"BC_BASE_MAX") ::? > (Prim.SC_BC_DIM_MAX,"BC_DIM_MAX") ::? > @@ -151,9 +152,12 @@ > (Prim.SC_MQ_OPEN_MAX,"MQ_OPEN_MAX") ::? > (Prim.SC_MQ_PRIO_MAX,"MQ_PRIO_MAX") ::? > (Prim.SC_NGROUPS_MAX,"NGROUPS_MAX") ::? > + (Prim.SC_NPROCESSORS_CONF,"NPROCESSORS_CONF") ::? > + (Prim.SC_NPROCESSORS_ONLN,"NPROCESSORS_ONLN") ::? > (Prim.SC_OPEN_MAX,"OPEN_MAX") ::? > (Prim.SC_PAGESIZE,"PAGESIZE") ::? > (Prim.SC_PAGE_SIZE,"PAGE_SIZE") ::? > + (Prim.SC_PHYS_PAGES,"PHYS_PAGES") ::? > (Prim.SC_PRIORITIZED_IO,"PRIORITIZED_IO") ::? > (Prim.SC_PRIORITY_SCHEDULING,"PRIORITY_SCHEDULING") ::? > (Prim.SC_RAW_SOCKETS,"RAW_SOCKETS") ::? > Index: basis-library/primitive/basis-ffi.sml > =================================================================== > --- basis-library/primitive/basis-ffi.sml (revision 7550) > +++ basis-library/primitive/basis-ffi.sml (working copy) > @@ -540,6 +540,7 @@ > val SC_ARG_MAX = _const "Posix_ProcEnv_SC_ARG_MAX" : C_Int.t; > val SC_ASYNCHRONOUS_IO = _const "Posix_ProcEnv_SC_ASYNCHRONOUS_IO" : C_Int.t; > val SC_ATEXIT_MAX = _const "Posix_ProcEnv_SC_ATEXIT_MAX" : C_Int.t; > +val SC_AVPHYS_PAGES = _const "Posix_ProcEnv_SC_AVPHYS_PAGES" : C_Int.t; > val SC_BARRIERS = _const "Posix_ProcEnv_SC_BARRIERS" : C_Int.t; > val SC_BC_BASE_MAX = _const "Posix_ProcEnv_SC_BC_BASE_MAX" : C_Int.t; > val SC_BC_DIM_MAX = _const "Posix_ProcEnv_SC_BC_DIM_MAX" : C_Int.t; > @@ -570,9 +571,12 @@ > val SC_MQ_OPEN_MAX = _const "Posix_ProcEnv_SC_MQ_OPEN_MAX" : C_Int.t; > val SC_MQ_PRIO_MAX = _const "Posix_ProcEnv_SC_MQ_PRIO_MAX" : C_Int.t; > val SC_NGROUPS_MAX = _const "Posix_ProcEnv_SC_NGROUPS_MAX" : C_Int.t; > +val SC_NPROCESSORS_CONF = _const "Posix_ProcEnv_SC_NPROCESSORS_CONF" : C_Int.t; > +val SC_NPROCESSORS_ONLN = _const "Posix_ProcEnv_SC_NPROCESSORS_ONLN" : C_Int.t; > val SC_OPEN_MAX = _const "Posix_ProcEnv_SC_OPEN_MAX" : C_Int.t; > val SC_PAGE_SIZE = _const "Posix_ProcEnv_SC_PAGE_SIZE" : C_Int.t; > val SC_PAGESIZE = _const "Posix_ProcEnv_SC_PAGESIZE" : C_Int.t; > +val SC_PHYS_PAGES = _const "Posix_ProcEnv_SC_PHYS_PAGES" : C_Int.t; > val SC_PRIORITIZED_IO = _const "Posix_ProcEnv_SC_PRIORITIZED_IO" : C_Int.t; > val SC_PRIORITY_SCHEDULING = _const "Posix_ProcEnv_SC_PRIORITY_SCHEDULING" : C_Int.t; > val SC_RAW_SOCKETS = _const "Posix_ProcEnv_SC_RAW_SOCKETS" : C_Int.t; > > _______________________________________________ > MLton mailing list > [email protected] > http://mlton.org/mailman/listinfo/mlton >