inline sendnb should not call send vector
. also vfs has to reply to a vm call - so use asynsend for that Change-Id: I30ac1e591191dea5c99e25b03151a4415d1151b0
This commit is contained in:
parent
63306d0ad5
commit
9e43052b21
@ -227,7 +227,7 @@ static inline int _sendrec(endpoint_t src_dest, message *m_ptr)
|
|||||||
|
|
||||||
static inline int _sendnb(endpoint_t dest, message *m_ptr)
|
static inline int _sendnb(endpoint_t dest, message *m_ptr)
|
||||||
{
|
{
|
||||||
return _minix_ipcvecs.send(dest, m_ptr);
|
return _minix_ipcvecs.sendnb(dest, m_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int _notify(endpoint_t dest)
|
static inline int _notify(endpoint_t dest)
|
||||||
|
@ -382,6 +382,7 @@ int do_vm_call(message *m_out)
|
|||||||
int slot;
|
int slot;
|
||||||
struct fproc *rfp, *vmf;
|
struct fproc *rfp, *vmf;
|
||||||
struct filp *f = NULL;
|
struct filp *f = NULL;
|
||||||
|
int r;
|
||||||
|
|
||||||
if(job_m_in.m_source != VM_PROC_NR)
|
if(job_m_in.m_source != VM_PROC_NR)
|
||||||
return ENOSYS;
|
return ENOSYS;
|
||||||
@ -468,7 +469,16 @@ reqdone:
|
|||||||
m_out->VMV_RESULT = result;
|
m_out->VMV_RESULT = result;
|
||||||
m_out->VMV_REQID = req_id;
|
m_out->VMV_REQID = req_id;
|
||||||
|
|
||||||
return VM_VFS_REPLY;
|
/* reply asynchronously as VM may not be able to receive
|
||||||
|
* a sendnb() message
|
||||||
|
*/
|
||||||
|
|
||||||
|
m_out->m_type = VM_VFS_REPLY;
|
||||||
|
r = asynsend3(VM_PROC_NR, m_out, 0);
|
||||||
|
if(r != OK) printf("VFS: couldn't asynsend3() to VM\n");
|
||||||
|
|
||||||
|
/* VFS does not reply any further */
|
||||||
|
return SUSPEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user