SENDREC now always has flag FRESH_ANSWER to prevent pending notifications
to be used as answer to a SENDREC call.
This commit is contained in:
		
							parent
							
								
									826fee4c6d
								
							
						
					
					
						commit
						b421423c77
					
				@ -148,8 +148,7 @@ message *m_ptr;			/* pointer to message in the caller's space */
 | 
				
			|||||||
   *   - ECHO:    the message directly will be echoed to the sender 
 | 
					   *   - ECHO:    the message directly will be echoed to the sender 
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  switch(function) {
 | 
					  switch(function) {
 | 
				
			||||||
  case SENDREC:		
 | 
					  case SENDREC:				/* has FRESH_ANSWER flags */		
 | 
				
			||||||
      flags |= FRESH_ANSWER;		/* ignore pending notifications */
 | 
					 | 
				
			||||||
      /* fall through */
 | 
					      /* fall through */
 | 
				
			||||||
  case SEND:			
 | 
					  case SEND:			
 | 
				
			||||||
      if (! isalive(src_dst)) { 			
 | 
					      if (! isalive(src_dst)) { 			
 | 
				
			||||||
 | 
				
			|||||||
@ -5,10 +5,10 @@
 | 
				
			|||||||
ECHO = 0
 | 
					ECHO = 0
 | 
				
			||||||
SEND = 1
 | 
					SEND = 1
 | 
				
			||||||
RECEIVE = 2
 | 
					RECEIVE = 2
 | 
				
			||||||
BOTH = 3
 | 
					SENDREC = 3 + 32		! flags 0x20 to request fresh answer
 | 
				
			||||||
NOTIFY = 4
 | 
					NOTIFY = 4
 | 
				
			||||||
NB_SEND = 1 + 16 		! SEND | 0xF0
 | 
					NB_SEND = 1 + 16 		! flags 0x10 to prevent blocking 
 | 
				
			||||||
NB_RECEIVE = 2 + 16		! RECEIVE | 0xF0
 | 
					NB_RECEIVE = 2 + 16		! flags 0x10 to prevent blocking 
 | 
				
			||||||
SYSVEC = 33			! trap to kernel 
 | 
					SYSVEC = 33			! trap to kernel 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SRC_DST = 8			! source/ destination process 
 | 
					SRC_DST = 8			! source/ destination process 
 | 
				
			||||||
@ -75,7 +75,7 @@ __sendrec:
 | 
				
			|||||||
	push	ebx
 | 
						push	ebx
 | 
				
			||||||
	mov	eax, SRC_DST(ebp)	! eax = dest-src
 | 
						mov	eax, SRC_DST(ebp)	! eax = dest-src
 | 
				
			||||||
	mov	ebx, MESSAGE(ebp)	! ebx = message pointer
 | 
						mov	ebx, MESSAGE(ebp)	! ebx = message pointer
 | 
				
			||||||
	mov	ecx, BOTH		! _sendrec(srcdest, ptr)
 | 
						mov	ecx, SENDREC		! _sendrec(srcdest, ptr)
 | 
				
			||||||
	int	SYSVEC			! trap to the kernel
 | 
						int	SYSVEC			! trap to the kernel
 | 
				
			||||||
	pop	ebx
 | 
						pop	ebx
 | 
				
			||||||
	pop	ebp
 | 
						pop	ebp
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user