2008-12-06 23:58:19 -05:00
|
|
|
! Copyright (C) 2008 Doug Coleman.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2010-12-25 19:54:45 -05:00
|
|
|
USING: alien alien.c-types alien.data alien.strings alien.syntax
|
2008-04-20 06:15:46 -04:00
|
|
|
byte-arrays kernel namespaces sequences unix
|
2008-12-15 02:13:35 -05:00
|
|
|
system-info.backend system io.encodings.utf8 ;
|
2008-12-06 23:58:19 -05:00
|
|
|
IN: system-info.macosx
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
! See /usr/include/sys/sysctl.h for constants
|
|
|
|
|
|
|
|
LIBRARY: libc
|
|
|
|
FUNCTION: int sysctl ( int* name, uint namelen, void* oldp, size_t* oldlenp, void* newp, size_t newlen ) ;
|
|
|
|
|
|
|
|
: make-int-array ( seq -- byte-array )
|
2010-10-20 18:42:53 -04:00
|
|
|
[ int <ref> ] map concat ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-11-16 16:50:48 -05:00
|
|
|
: (sysctl-query) ( name namelen oldp oldlenp -- oldp )
|
|
|
|
over [ f 0 sysctl io-error ] dip ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: sysctl-query ( seq n -- byte-array )
|
2008-11-16 16:50:48 -05:00
|
|
|
[ [ make-int-array ] [ length ] bi ] dip
|
2010-10-20 18:42:53 -04:00
|
|
|
[ <byte-array> ] [ uint <ref> ] bi (sysctl-query) ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: sysctl-query-string ( seq -- n )
|
2008-12-06 23:58:19 -05:00
|
|
|
4096 sysctl-query utf8 alien>string ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: sysctl-query-uint ( seq -- n )
|
2010-10-20 18:42:53 -04:00
|
|
|
4 sysctl-query uint deref ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: sysctl-query-ulonglong ( seq -- n )
|
2010-10-20 18:42:53 -04:00
|
|
|
8 sysctl-query ulonglong deref ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: machine ( -- str ) { 6 1 } sysctl-query-string ;
|
|
|
|
: model ( -- str ) { 6 2 } sysctl-query-string ;
|
|
|
|
M: macosx cpus ( -- n ) { 6 3 } sysctl-query-uint ;
|
|
|
|
: byte-order ( -- n ) { 6 4 } sysctl-query-uint ;
|
2008-04-03 02:48:29 -04:00
|
|
|
M: macosx physical-mem ( -- n ) { 6 5 } sysctl-query-uint ;
|
|
|
|
: user-mem ( -- n ) { 6 6 } sysctl-query-uint ;
|
2007-09-20 18:09:08 -04:00
|
|
|
: page-size ( -- n ) { 6 7 } sysctl-query-uint ;
|
2008-04-03 02:48:29 -04:00
|
|
|
: disknames ( -- n ) { 6 8 } 8 sysctl-query ;
|
|
|
|
: diskstats ( -- n ) { 6 9 } 8 sysctl-query ;
|
|
|
|
: epoch ( -- n ) { 6 10 } sysctl-query-uint ;
|
|
|
|
: floating-point ( -- n ) { 6 11 } sysctl-query-uint ;
|
|
|
|
: machine-arch ( -- n ) { 6 12 } sysctl-query-string ;
|
|
|
|
: vector-unit ( -- n ) { 6 13 } sysctl-query-uint ;
|
2007-09-20 18:09:08 -04:00
|
|
|
: bus-frequency ( -- n ) { 6 14 } sysctl-query-uint ;
|
2008-04-04 00:35:57 -04:00
|
|
|
M: macosx cpu-mhz ( -- n ) { 6 15 } sysctl-query-uint ;
|
2007-09-20 18:09:08 -04:00
|
|
|
: cacheline-size ( -- n ) { 6 16 } sysctl-query-uint ;
|
|
|
|
: l1-icache-size ( -- n ) { 6 17 } sysctl-query-uint ;
|
|
|
|
: l1-dcache-size ( -- n ) { 6 18 } sysctl-query-uint ;
|
|
|
|
: l2-cache-settings ( -- n ) { 6 19 } sysctl-query-uint ;
|
|
|
|
: l2-cache-size ( -- n ) { 6 20 } sysctl-query-uint ;
|
|
|
|
: l3-cache-settings ( -- n ) { 6 21 } sysctl-query-uint ;
|
|
|
|
: l3-cache-size ( -- n ) { 6 22 } sysctl-query-uint ;
|
2008-04-03 02:48:29 -04:00
|
|
|
: tb-frequency ( -- n ) { 6 23 } sysctl-query-uint ;
|
|
|
|
: mem-size ( -- n ) { 6 24 } sysctl-query-ulonglong ;
|
2007-09-20 18:09:08 -04:00
|
|
|
: available-cpus ( -- n ) { 6 25 } sysctl-query-uint ;
|