1 ! Copyright (C) 2008 Doug Coleman, John Benediktsson.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.data alien.strings alien.syntax
4 byte-arrays io.encodings.utf8 kernel libc sequences
11 FUNCTION: int sysctl ( int* name, uint namelen, void* oldp, size_t* oldlenp, void* newp, size_t newlen )
12 FUNCTION: int sysctlbyname ( c-string name, void* oldp, size_t* oldlenp, void* newp, size_t newlen )
14 : (sysctl-query) ( name namelen oldp oldlenp -- oldp )
15 over [ f 0 sysctl io-error ] dip ;
17 : (sysctl-name-query) ( name oldp oldlenp -- oldp )
18 over [ f 0 sysctlbyname io-error ] dip ;
20 : sysctl-query ( seq n -- byte-array )
21 [ [ int >c-array ] [ length ] bi ] dip
22 [ <byte-array> ] [ uint <ref> ] bi (sysctl-query) ;
24 : sysctl-name-query ( name n -- byte-array )
25 [ <byte-array> ] [ uint <ref> ] bi (sysctl-name-query) ;
27 : sysctl-query-string ( seq -- n )
28 4096 sysctl-query utf8 alien>string ;
30 : sysctl-name-query-string ( str -- n )
31 4096 sysctl-name-query utf8 alien>string ;
33 : sysctl-query-uint ( seq -- n )
34 4 sysctl-query uint deref ;
36 : sysctl-name-query-uint ( str -- n )
37 4 sysctl-name-query uint deref ;
39 : sysctl-query-ulonglong ( seq -- n )
40 8 sysctl-query ulonglong deref ;
42 : sysctl-name-query-ulonglong ( str -- n )
43 8 sysctl-name-query ulonglong deref ;