diff --git a/basis/io/backend/unix/multiplexers/kqueue/kqueue.factor b/basis/io/backend/unix/multiplexers/kqueue/kqueue.factor index f7b15beb54..e01f33bbd8 100644 --- a/basis/io/backend/unix/multiplexers/kqueue/kqueue.factor +++ b/basis/io/backend/unix/multiplexers/kqueue/kqueue.factor @@ -2,28 +2,28 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types combinators destructors io.backend.unix kernel math.bitwise sequences struct-arrays unix -unix.kqueue unix.time assocs io.backend.unix.multiplexers ; +unix.kqueue unix.time assocs io.backend.unix.multiplexers +classes.struct ; IN: io.backend.unix.multiplexers.kqueue TUPLE: kqueue-mx < mx events ; -: max-events ( -- n ) - #! We read up to 256 events at a time. This is an arbitrary - #! constant... - 256 ; inline +! We read up to 256 events at a time. This is an arbitrary +! constant... +CONSTANT: max-events 256 : ( -- mx ) kqueue-mx new-mx kqueue dup io-error >>fd - max-events "kevent" >>events ; + max-events \ kevent >>events ; M: kqueue-mx dispose* fd>> close-file ; : make-kevent ( fd filter flags -- event ) - "kevent" - [ set-kevent-flags ] keep - [ set-kevent-filter ] keep - [ set-kevent-ident ] keep ; + \ kevent + swap >>flags + swap >>filter + swap >>ident ; : register-kevent ( kevent mx -- ) fd>> swap 1 f 0 f kevent io-error ; @@ -63,13 +63,14 @@ M: kqueue-mx remove-output-callbacks ( fd mx -- seq ) ] dip kevent multiplexer-error ; : handle-kevent ( mx kevent -- ) - [ kevent-ident swap ] [ kevent-filter ] bi { + [ ident>> swap ] [ filter>> ] bi { { EVFILT_READ [ input-available ] } { EVFILT_WRITE [ output-available ] } } case ; : handle-kevents ( mx n -- ) - [ dup events>> ] dip head-slice [ handle-kevent ] with each ; + [ dup events>> ] dip head-slice + [ \ kevent memory>struct handle-kevent ] with each ; M: kqueue-mx wait-for-events ( us mx -- ) swap dup [ make-timespec ] when diff --git a/basis/io/files/info/unix/openbsd/openbsd.factor b/basis/io/files/info/unix/openbsd/openbsd.factor index 7f23324fec..6c334b8d62 100644 --- a/basis/io/files/info/unix/openbsd/openbsd.factor +++ b/basis/io/files/info/unix/openbsd/openbsd.factor @@ -47,6 +47,6 @@ M: openbsd statvfs>file-system-info ( file-system-info statvfs -- file-system-in M: openbsd file-systems ( -- seq ) f 0 0 getfsstat dup io-error - statfs dup dup length 0 getfsstat io-error - statfs heap-size group + \ statfs dup dup length 0 getfsstat io-error + \ statfs heap-size group [ f_mntonname>> alien>native-string file-system-info ] map ; diff --git a/basis/unix/kqueue/freebsd/freebsd.factor b/basis/unix/kqueue/freebsd/freebsd.factor index 1153b997c2..4bf5af8482 100644 --- a/basis/unix/kqueue/freebsd/freebsd.factor +++ b/basis/unix/kqueue/freebsd/freebsd.factor @@ -1,14 +1,13 @@ -USING: alien.syntax ; +USING: alien.syntax classes.struct ; IN: unix.kqueue -C-STRUCT: kevent - { "ulong" "ident" } ! identifier for this event - { "short" "filter" } ! filter for event - { "ushort" "flags" } ! action flags for kqueue - { "uint" "fflags" } ! filter flag value - { "long" "data" } ! filter data value - { "void*" "udata" } ! opaque user data identifier -; +STRUCT: kevent + { ident ulong } + { filter short } + { flags ushort } + { fflags uint } + { data long } + { udata void* } ; FUNCTION: int kevent ( int kq, kevent* changelist, int nchanges, kevent* eventlist, int nevents, timespec* timeout ) ; diff --git a/basis/unix/kqueue/macosx/macosx.factor b/basis/unix/kqueue/macosx/macosx.factor index 843a0afad9..c30584efab 100644 --- a/basis/unix/kqueue/macosx/macosx.factor +++ b/basis/unix/kqueue/macosx/macosx.factor @@ -1,14 +1,13 @@ -USING: alien.syntax ; +USING: alien.syntax classes.struct ; IN: unix.kqueue -C-STRUCT: kevent - { "ulong" "ident" } ! identifier for this event - { "short" "filter" } ! filter for event - { "ushort" "flags" } ! action flags for kqueue - { "uint" "fflags" } ! filter flag value - { "long" "data" } ! filter data value - { "void*" "udata" } ! opaque user data identifier -; +STRUCT: kevent + { ident ulong } + { filter short } + { flags ushort } + { fflags uint } + { data long } + { udata void* } ; FUNCTION: int kevent ( int kq, kevent* changelist, int nchanges, kevent* eventlist, int nevents, timespec* timeout ) ; diff --git a/basis/unix/kqueue/netbsd/netbsd.factor b/basis/unix/kqueue/netbsd/netbsd.factor index 7ba942d712..d9a9116930 100644 --- a/basis/unix/kqueue/netbsd/netbsd.factor +++ b/basis/unix/kqueue/netbsd/netbsd.factor @@ -1,14 +1,13 @@ -USING: alien.syntax ; +USING: alien.syntax classes.struct ; IN: unix.kqueue -C-STRUCT: kevent - { "ulong" "ident" } ! identifier for this event - { "uint" "filter" } ! filter for event - { "uint" "flags" } ! action flags for kqueue - { "uint" "fflags" } ! filter flag value - { "longlong" "data" } ! filter data value - { "void*" "udata" } ! opaque user data identifier -; +STRUCT: kevent + { ident ulong } + { filter uint } + { flags uint } + { fflags uint } + { data longlong } + { udata void* } ; FUNCTION: int kevent ( int kq, kevent* changelist, size_t nchanges, kevent* eventlist, size_t nevents, timespec* timeout ) ; diff --git a/basis/unix/kqueue/openbsd/openbsd.factor b/basis/unix/kqueue/openbsd/openbsd.factor index c62ba05a4c..1d851c8d68 100644 --- a/basis/unix/kqueue/openbsd/openbsd.factor +++ b/basis/unix/kqueue/openbsd/openbsd.factor @@ -1,14 +1,13 @@ -USING: alien.syntax ; +USING: alien.syntax classes.struct ; IN: unix.kqueue -C-STRUCT: kevent - { "uint" "ident" } ! identifier for this event - { "short" "filter" } ! filter for event - { "ushort" "flags" } ! action flags for kqueue - { "uint" "fflags" } ! filter flag value - { "int" "data" } ! filter data value - { "void*" "udata" } ! opaque user data identifier -; +STRUCT: kevent + { ident uint } + { filter short } + { flags ushort } + { fflags uint } + { data int } + { udata void* } ; FUNCTION: int kevent ( int kq, kevent* changelist, int nchanges, kevent* eventlist, int nevents, timespec* timeout ) ; diff --git a/basis/unix/stat/freebsd/freebsd.factor b/basis/unix/stat/freebsd/freebsd.factor index aeec5ef7a3..0acf2512e8 100644 --- a/basis/unix/stat/freebsd/freebsd.factor +++ b/basis/unix/stat/freebsd/freebsd.factor @@ -18,10 +18,10 @@ STRUCT: stat { st_blocks blkcnt_t } { st_blksize blksize_t } { st_flags fflags_t } - { st_gen _uint32_t } + { st_gen __uint32_t } { st_lspare __int32_t } { st_birthtimespec timespec } - { pad0 __int32_t[2] } + { pad0 __int32_t[2] } ; FUNCTION: int stat ( char* pathname, stat* buf ) ; FUNCTION: int lstat ( char* pathname, stat* buf ) ;