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.
 |