| 
									
										
										
										
											2008-01-18 18:18:54 -05:00
										 |  |  | ! Copyright (C) 2008 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-12-09 18:49:03 -05:00
										 |  |  | USING: alien.syntax system sequences vocabs.loader words | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | accessors ;
 | 
					
						
							| 
									
										
										
										
											2008-01-18 18:18:54 -05:00
										 |  |  | IN: unix.kqueue | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  | << "unix.kqueue." os name>> append require >> | 
					
						
							| 
									
										
										
										
											2008-01-18 18:18:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-14 07:24:02 -04:00
										 |  |  | FUNCTION: int kqueue ( ) ;
 | 
					
						
							| 
									
										
										
										
											2008-01-18 18:18:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! actions | 
					
						
							| 
									
										
										
										
											2008-12-15 20:44:56 -05:00
										 |  |  | CONSTANT: EV_ADD     HEX: 1 ! add event to kq (implies enable) | 
					
						
							|  |  |  | CONSTANT: EV_DELETE  HEX: 2 ! delete event from kq | 
					
						
							|  |  |  | CONSTANT: EV_ENABLE  HEX: 4 ! enable event | 
					
						
							|  |  |  | CONSTANT: EV_DISABLE HEX: 8 ! disable event (not reported) | 
					
						
							| 
									
										
										
										
											2008-01-18 18:18:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! flags | 
					
						
							| 
									
										
										
										
											2008-12-15 20:44:56 -05:00
										 |  |  | CONSTANT: EV_ONESHOT HEX: 10 ! only report one occurrence | 
					
						
							|  |  |  | CONSTANT: EV_CLEAR   HEX: 20 ! clear event state after reporting | 
					
						
							| 
									
										
										
										
											2008-01-18 18:18:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 20:44:56 -05:00
										 |  |  | CONSTANT: EV_SYSFLAGS HEX: f000 ! reserved by system | 
					
						
							|  |  |  | CONSTANT: EV_FLAG0    HEX: 1000 ! filter-specific flag | 
					
						
							|  |  |  | CONSTANT: EV_FLAG1    HEX: 2000 ! filter-specific flag | 
					
						
							| 
									
										
										
										
											2008-01-18 18:18:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! returned values | 
					
						
							| 
									
										
										
										
											2008-12-15 20:44:56 -05:00
										 |  |  | CONSTANT: EV_EOF          HEX: 8000 ! EOF detected | 
					
						
							|  |  |  | CONSTANT: EV_ERROR        HEX: 4000 ! error, data contains errno | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ALIAS: EV_POLL EV_FLAG0 | 
					
						
							|  |  |  | ALIAS: EV_OOBAND EV_FLAG1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: NOTE_LOWAT      HEX: 00000001 ! low water mark | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: NOTE_DELETE     HEX: 00000001 ! vnode was removed | 
					
						
							|  |  |  | CONSTANT: NOTE_WRITE      HEX: 00000002 ! data contents changed | 
					
						
							|  |  |  | CONSTANT: NOTE_EXTEND     HEX: 00000004 ! size increased | 
					
						
							|  |  |  | CONSTANT: NOTE_ATTRIB     HEX: 00000008 ! attributes changed | 
					
						
							|  |  |  | CONSTANT: NOTE_LINK       HEX: 00000010 ! link count changed | 
					
						
							|  |  |  | CONSTANT: NOTE_RENAME     HEX: 00000020 ! vnode was renamed | 
					
						
							|  |  |  | CONSTANT: NOTE_REVOKE     HEX: 00000040 ! vnode access was revoked | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: NOTE_EXIT       HEX: 80000000 ! process exited | 
					
						
							|  |  |  | CONSTANT: NOTE_FORK       HEX: 40000000 ! process forked | 
					
						
							|  |  |  | CONSTANT: NOTE_EXEC       HEX: 20000000 ! process exec'd | 
					
						
							|  |  |  | CONSTANT: NOTE_PCTRLMASK  HEX: f0000000 ! mask for hint bits | 
					
						
							|  |  |  | CONSTANT: NOTE_PDATAMASK  HEX: 000fffff ! mask for pid | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: NOTE_SECONDS    HEX: 00000001 ! data is seconds | 
					
						
							|  |  |  | CONSTANT: NOTE_USECONDS   HEX: 00000002 ! data is microseconds | 
					
						
							|  |  |  | CONSTANT: NOTE_NSECONDS   HEX: 00000004 ! data is nanoseconds | 
					
						
							|  |  |  | CONSTANT: NOTE_ABSOLUTE   HEX: 00000008 ! absolute timeout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: NOTE_TRACK      HEX: 00000001 ! follow across forks | 
					
						
							|  |  |  | CONSTANT: NOTE_TRACKERR   HEX: 00000002 ! could not track child | 
					
						
							|  |  |  | CONSTANT: NOTE_CHILD      HEX: 00000004 ! am a child process |