24 lines
		
	
	
	
		
			906 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			906 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| The read event demultiplexer
 | |
| 
 | |
|     select(2) on Unix FDs
 | |
|         ...
 | |
|     Fill up AX.25 interface packet buffers
 | |
|         ...
 | |
|     Decode as many packets as possible on each interface
 | |
|         ...
 | |
|     Fill up buffers for pending caller reads, open new connections
 | |
|         ...
 | |
|     If:
 | |
|         * ax25_select() is called: Notify caller of I/O events
 | |
| 
 | |
|         * ax25_read() is called: Provide caller access to requested
 | |
|           buffer region
 | |
| 
 | |
|     Buffer may be discarded upon next ax25_read() event, but should not
 | |
|     be discarded after an ax25_select() necessarily.
 | |
| 
 | |
| Most crucially: This sequence of events is triggered by ANY of the I/O calls,
 | |
| so as to facilitate the same sort of behaviors that one would expect when
 | |
| letting a kernel thread be responsible for all this activity from a userland
 | |
| process' perspective.  The main difference in behavior in any of these calls is
 | |
| the result provided to the caller.
 |