beng work in progress, to be explained in a future commit message :).

This commit is contained in:
Ben Gras
2009-05-28 13:47:20 +00:00
parent 78e5d6d4eb
commit 9b73964f6d
50 changed files with 1096 additions and 834 deletions

View File

@@ -42,6 +42,8 @@ register message *m_ptr; /* pointer to request message */
/* No reply to EXEC call */
RTS_LOCK_UNSET(rp, RECEIVING);
printf("kernel: exec %d now %s\n", rp->p_endpoint, rp->p_name);
return(OK);
}
#endif /* USE_EXEC */

View File

@@ -88,6 +88,9 @@ register message *m_ptr; /* pointer to request message */
RTS_LOCK_UNSET(rpc, (SIGNALED | SIG_PENDING | P_STOP));
sigemptyset(&rpc->p_pending);
printf("kernel: %d / %s forked into %d\n",
rpp->p_endpoint, rpp->p_name, rpc->p_endpoint);
return r;
}

View File

@@ -18,10 +18,8 @@ PUBLIC int do_memset(m_ptr)
register message *m_ptr;
{
/* Handle sys_memset(). This writes a pattern into the specified memory. */
unsigned long p;
unsigned char c = m_ptr->MEM_PATTERN;
p = c | (c << 8) | (c << 16) | (c << 24);
phys_memset((phys_bytes) m_ptr->MEM_PTR, p, (phys_bytes) m_ptr->MEM_COUNT);
vm_phys_memset((phys_bytes) m_ptr->MEM_PTR, c, (phys_bytes) m_ptr->MEM_COUNT);
return(OK);
}

View File

@@ -8,6 +8,8 @@
*/
#include "../system.h"
#if 0
#define VM_DEBUG 0 /* enable/ disable debug output */
/*===========================================================================*
@@ -27,3 +29,5 @@ message *m_ptr; /* pointer to request message */
return OK;
}
#endif

View File

@@ -25,8 +25,6 @@ register message *m_ptr; /* pointer to request message */
if(ep == SELF) { ep = m_ptr->m_source; }
vm_init();
if(!isokendpt(ep, &proc_nr)) {
kprintf("do_vmctl: unexpected endpoint %d from VM\n", ep);
return EINVAL;
@@ -45,6 +43,9 @@ register message *m_ptr; /* pointer to request message */
if(!RTS_ISSET(rp, VMREQUEST))
minix_panic("do_vmctl: no VMREQUEST set", NO_NUM);
printf("kernel: vm request sent by: %s / %d about %d\n",
rp->p_name, rp->p_endpoint, rp->p_vmrequest.who);
/* Reply with request fields. */
m_ptr->SVMCTL_MRG_ADDR = (char *) rp->p_vmrequest.start;
m_ptr->SVMCTL_MRG_LEN = rp->p_vmrequest.length;
@@ -73,6 +74,7 @@ register message *m_ptr; /* pointer to request message */
rp->p_vmrequest.vmresult);
/* Put on restart chain. */
printf("kernel: vm reply received for %d\n", rp->p_endpoint);
rp->p_vmrequest.nextrestart = vmrestart;
vmrestart = rp;
@@ -93,10 +95,15 @@ kprintf("SYSTEM: request %d:0x%lx-0x%lx, wrflag %d, failed\n",
}
#endif
return OK;
#if VM_KERN_NOPAGEZERO
case VMCTL_NOPAGEZERO:
case VMCTL_ENABLE_PAGING:
if(vm_running)
minix_panic("do_vmctl: paging already enabled", NO_NUM);
vm_init(p);
if(!vm_running)
minix_panic("do_vmctl: paging enabling failed", NO_NUM);
if(newmap(p, m_ptr->SVMCTL_VALUE) != OK)
minix_panic("do_vmctl: newmap failed", NO_NUM);
return OK;
#endif
}
/* Try architecture-specific vmctls. */