. also vfs has to reply to a vm call - so use asynsend for that
Change-Id: I30ac1e591191dea5c99e25b03151a4415d1151b0
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)
int slot;
struct fproc *rfp, *vmf;
struct filp *f = NULL;
+ int r;
if(job_m_in.m_source != VM_PROC_NR)
return ENOSYS;
m_out->VMV_RESULT = result;
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;
}
/*===========================================================================*