int procslot;
NOREC_ENTER(linlincopy);
- FIXME("lin_lin_copy requires big pages");
vmassert(vm_running);
vmassert(!catch_pagefaults);
vmassert(nfreepdes >= 3);
_PROTOTYPE( int _memcpy_k_fault, (void) );
_PROTOTYPE( u32_t read_cr3, (void) );
_PROTOTYPE( void reload_cr3, (void) );
+_PROTOTYPE( void phys_memset, (phys_bytes ph, u32_t c, phys_bytes bytes) );
/* protect.c */
_PROTOTYPE( void prot_init, (void) );
ser_debug(c);
}
+PRIVATE void ser_dump_queues(void)
+{
+ int q;
+ for(q = 0; q < NR_SCHED_QUEUES; q++) {
+ struct proc *p;
+ if(rdy_head[q])
+ printf("%2d: ", q);
+ for(p = rdy_head[q]; p; p = p->p_nextready) {
+ printf("%s / %d ", p->p_name, p->p_endpoint);
+ }
+ printf("\n");
+ }
+
+}
+
PRIVATE void ser_debug(int c)
{
int u = 0;
printslot(depproc, level+1);
}
-PUBLIC void ser_dump_queues()
-{
- int q;
- for(q = 0; q < NR_SCHED_QUEUES; q++) {
- struct proc *p;
- if(rdy_head[q])
- printf("%2d: ", q);
- for(p = rdy_head[q]; p; p = p->p_nextready) {
- printf("%s / %d ", p->p_name, p->p_endpoint);
- }
- printf("\n");
- }
-
-}
PUBLIC void ser_dump_proc()
{
if(varname) { \
minix_panic(#varname " recursive enter", __LINE__); \
} \
- varname = 1; \
- FIXME(#varname " recursion check enabled");
+ varname = 1;
#define NOREC_RETURN(varname, v) do { \
if(!varname) \
vmassert(!(dst->p_misc_flags & MF_DELIVERMSG));
vmassert(dst->p_delivermsg_lin);
vmassert(isokendpt(ep, &k));
- FIXME("copy messages directly if in memory");
- FIXME("possibly also msgcopy specific function");
if(INMEMORY(dst)) {
PHYS_COPY_CATCH(msg_lin, dst->p_delivermsg_lin,
dst->p_delivermsg.m_source = ep;
dst->p_misc_flags |= MF_DELIVERMSG;
-#if 0
- if(INMEMORY(dst)) {
- delivermsg(dst);
- }
-#endif
-
NOREC_RETURN(queuemess, OK);
}
#endif
/* Found acceptable message. Copy it and update status. */
- FIXME("message copied twice here");
vmassert(!(caller_ptr->p_misc_flags & MF_DELIVERMSG));
QueueMess((*xpp)->p_endpoint,
vir2phys(&(*xpp)->p_sendmsg), caller_ptr);
if(!(linaddr = umap_local(caller_ptr, D, (vir_bytes) table,
size * sizeof(*table)))) {
+ printf("mini_senda: umap_local failed; 0x%lx len 0x%lx\n",
+ table, size * sizeof(*table));
return EFAULT;
}
rp = proc_addr(proc);
if(rp->p_misc_flags & MF_DELIVERMSG) {
- printf("%s / %d has MF_DELIVERMSG on during exec - clearing.\n",
- rp->p_name, rp->p_endpoint);
-#if 1
rp->p_misc_flags &= ~MF_DELIVERMSG;
rp->p_delivermsg_lin = 0;
-#endif
}
/* Save command name for debugging, ps(1) output, etc. */
}
CHECKHOLES;
-
- FIXME("below 16MB allocation not done");
}
/*===========================================================================*
* mapping. VM has its own pagetable,
* don't check it.
*/
- printf("VM: not giving %d its own pt\n",
- vmp->vm_endpoint);
if(!(vmp->vm_flags & VMF_HASPT)) {
pt_check(vmp);
}
continue;
}
- printf("VM: giving %d its own pt\n", vmp->vm_endpoint);
old_stack =
vmp->vm_arch.vm_seg[S].mem_vir +