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
2 changed files with 5 additions and 6 deletions
|
@ -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…
Reference in a new issue