1 /* The system call implemented in this file: 2 * m_type: SYS_IOPENABLE 3 * 4 * The parameters for this system call are: 5 * m_lsys_krn_sys_iopenable.endpt (process to give I/O Protection Level bits) 6 * 7 * Author: 8 * Jorrit N. Herder <jnherder@cs.vu.nl> 9 */ 10 11 #include "kernel/system.h" 12 #include <minix/endpoint.h> 13 14 #include "arch_proto.h" 15 16 /*===========================================================================* 17 * do_iopenable * 18 *===========================================================================*/ 19 int do_iopenable(struct proc * caller, message * m_ptr) 20 { 21 int proc_nr; 22 23 #if 1 /* ENABLE_USERPRIV && ENABLE_USERIOPL */ 24 if (m_ptr->m_lsys_krn_sys_iopenable.endpt == SELF) { 25 okendpt(caller->p_endpoint, &proc_nr); 26 } else if(!isokendpt(m_ptr->m_lsys_krn_sys_iopenable.endpt, &proc_nr)) 27 return(EINVAL); 28 enable_iop(proc_addr(proc_nr)); 29 return(OK); 30 #else 31 return(EPERM); 32 #endif 33 } 34 35 36