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