Fix Unix io.launcher
							parent
							
								
									b5a337bb2a
								
							
						
					
					
						commit
						0b4be5f0a2
					
				| 
						 | 
					@ -2,8 +2,8 @@
 | 
				
			||||||
! See http://factorcode.org/license.txt for BSD license.
 | 
					! See http://factorcode.org/license.txt for BSD license.
 | 
				
			||||||
IN: io.unix.bsd
 | 
					IN: io.unix.bsd
 | 
				
			||||||
USING: io.backend io.unix.backend io.unix.kqueue io.unix.select
 | 
					USING: io.backend io.unix.backend io.unix.kqueue io.unix.select
 | 
				
			||||||
io.unix.launcher namespaces kernel assocs threads continuations
 | 
					io.launcher io.unix.launcher namespaces kernel assocs threads 
 | 
				
			||||||
;
 | 
					continuations ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! On *BSD and Mac OS X, we use select() for the top-level
 | 
					! On *BSD and Mac OS X, we use select() for the top-level
 | 
				
			||||||
! multiplexer, and we hang a kqueue off of it but file change
 | 
					! multiplexer, and we hang a kqueue off of it but file change
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
! See http://factorcode.org/license.txt for BSD license.
 | 
					! See http://factorcode.org/license.txt for BSD license.
 | 
				
			||||||
USING: alien.c-types kernel io.nonblocking io.unix.backend
 | 
					USING: alien.c-types kernel io.nonblocking io.unix.backend
 | 
				
			||||||
sequences assocs unix unix.kqueue unix.process math namespaces
 | 
					sequences assocs unix unix.kqueue unix.process math namespaces
 | 
				
			||||||
combinators threads vectors ;
 | 
					combinators threads vectors io.launcher io.unix.launcher ;
 | 
				
			||||||
IN: io.unix.kqueue
 | 
					IN: io.unix.kqueue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TUPLE: kqueue-mx events ;
 | 
					TUPLE: kqueue-mx events ;
 | 
				
			||||||
| 
						 | 
					@ -50,15 +50,15 @@ M: kqueue-mx unregister-io-task ( task mx -- )
 | 
				
			||||||
: kevent-write-task ( mx fd -- )
 | 
					: kevent-write-task ( mx fd -- )
 | 
				
			||||||
    over mx-reads at handle-io-task ;
 | 
					    over mx-reads at handle-io-task ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: kevent-proc-task ( mx pid -- )
 | 
					: kevent-proc-task ( pid -- )
 | 
				
			||||||
    dup (wait-for-pid) swap find-process
 | 
					    dup wait-for-pid swap find-process
 | 
				
			||||||
    dup [ notify-exit ] [ 2drop ] if ;
 | 
					    dup [ notify-exit ] [ 2drop ] if ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: handle-kevent ( mx kevent -- )
 | 
					: handle-kevent ( mx kevent -- )
 | 
				
			||||||
    dup kevent-ident swap kevent-filter {
 | 
					    dup kevent-ident swap kevent-filter {
 | 
				
			||||||
        { [ dup EVFILT_READ = ] [ drop kevent-read-task ] }
 | 
					        { [ dup EVFILT_READ = ] [ drop kevent-read-task ] }
 | 
				
			||||||
        { [ dup EVFILT_WRITE = ] [ drop kevent-write-task ] }
 | 
					        { [ dup EVFILT_WRITE = ] [ drop kevent-write-task ] }
 | 
				
			||||||
        { [ dup EVFILT_PROC = ] [ drop kevent-proc-task ] }
 | 
					        { [ dup EVFILT_PROC = ] [ drop kevent-proc-task drop ] }
 | 
				
			||||||
    } cond ;
 | 
					    } cond ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: handle-kevents ( mx n -- )
 | 
					: handle-kevents ( mx n -- )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
USING: io io.backend io.launcher io.unix.backend io.nonblocking
 | 
					USING: io io.backend io.launcher io.unix.backend io.nonblocking
 | 
				
			||||||
sequences kernel namespaces math system alien.c-types debugger
 | 
					sequences kernel namespaces math system alien.c-types debugger
 | 
				
			||||||
continuations arrays assocs combinators unix.process
 | 
					continuations arrays assocs combinators unix.process
 | 
				
			||||||
parser-combinators memoize promises strings ;
 | 
					parser-combinators memoize promises strings threads ;
 | 
				
			||||||
IN: io.unix.launcher
 | 
					IN: io.unix.launcher
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! Search unix first
 | 
					! Search unix first
 | 
				
			||||||
| 
						 | 
					@ -78,7 +78,8 @@ M: unix-io process-stream*
 | 
				
			||||||
    ] with-descriptor ;
 | 
					    ] with-descriptor ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: find-process ( handle -- process )
 | 
					: find-process ( handle -- process )
 | 
				
			||||||
    f process construct-boa processes get at ;
 | 
					    processes get swap [ nip swap process-handle = ] curry
 | 
				
			||||||
 | 
					    assoc-find 2drop ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! Inefficient process wait polling, used on Linux and Solaris.
 | 
					! Inefficient process wait polling, used on Linux and Solaris.
 | 
				
			||||||
! On BSD and Mac OS X, we use kqueue() which scales better.
 | 
					! On BSD and Mac OS X, we use kqueue() which scales better.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue