29 lines
		
	
	
		
			884 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			884 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* The kernel call implemented in this file:
 | 
						|
 *   m_type:	SYS_READBIOS
 | 
						|
 *
 | 
						|
 * The parameters for this kernel call are:
 | 
						|
 *    m2_i1:	RDB_SIZE		number of bytes to copy
 | 
						|
 *    m2_l1:	RDB_ADDR		absolute address in BIOS area
 | 
						|
 *    m2_p1:	RDB_BUF			buffer address in requesting process
 | 
						|
 */
 | 
						|
 | 
						|
#include "kernel/system.h"
 | 
						|
#include <minix/type.h>
 | 
						|
 | 
						|
/*===========================================================================*
 | 
						|
 *				do_readbios				     *
 | 
						|
 *===========================================================================*/
 | 
						|
PUBLIC int do_readbios(struct proc * caller, message * m_ptr)
 | 
						|
{
 | 
						|
  struct vir_addr src, dst;     
 | 
						|
        
 | 
						|
  src.segment = BIOS_SEG;
 | 
						|
  dst.segment = D;
 | 
						|
  src.offset = m_ptr->RDB_ADDR;
 | 
						|
  dst.offset = (vir_bytes) m_ptr->RDB_BUF;
 | 
						|
  src.proc_nr_e = NONE;
 | 
						|
  dst.proc_nr_e = m_ptr->m_source;      
 | 
						|
 | 
						|
  return virtual_copy_vmcheck(caller, &src, &dst, m_ptr->RDB_SIZE);
 | 
						|
}
 |