29 |
mach_msg_header_t *outp); |
mach_msg_header_t *outp); |
30 |
extern int _pager_seqnos_notify_server (mach_msg_header_t *inp, |
extern int _pager_seqnos_notify_server (mach_msg_header_t *inp, |
31 |
mach_msg_header_t *outp); |
mach_msg_header_t *outp); |
32 |
|
|
33 |
int result = _pager_seqnos_memory_object_server (inp, outp) |
int result = _pager_seqnos_memory_object_server (inp, outp) |
34 |
|| _pager_seqnos_notify_server (inp, outp); |
|| _pager_seqnos_notify_server (inp, outp); |
35 |
if (!result) |
if (!result) |
39 |
p = ports_lookup_port (0, inp->msgh_remote_port, _pager_class); |
p = ports_lookup_port (0, inp->msgh_remote_port, _pager_class); |
40 |
if (p) |
if (p) |
41 |
{ |
{ |
42 |
|
/* Synchronize our bookkeeping of the port's seqno with |
43 |
|
the one consumed by this bogus message. */ |
44 |
mutex_lock (&p->interlock); |
mutex_lock (&p->interlock); |
45 |
_pager_wait_for_seqno (p, seqno); |
_pager_wait_for_seqno (p, inp->msgh_seqno); |
46 |
_pager_release_seqno (p, seqno); |
_pager_release_seqno (p, inp->msgh_seqno); |
47 |
mutex_unlock (&p->interlock); |
mutex_unlock (&p->interlock); |
48 |
ports_port_deref (p); |
ports_port_deref (p); |
49 |
} |
} |
50 |
} |
} |
51 |
return result; |
return result; |
52 |
} |
} |
|
|
|
|
|
|
|
|
|