# define super_user (fp->fp_effuid == SU_UID ? 1 : 0)
# define scratch(p) (scratchpad[((int) ((p) - fproc))])
EXTERN struct worker_thread *self;
-EXTERN endpoint_t receive_from;/* endpoint with pending reply */
EXTERN int force_sync; /* toggle forced synchronous communication */
EXTERN int verbose;
EXTERN int deadlock_resolving;
FORWARD _PROTOTYPE( void sef_local_startup, (void) );
FORWARD _PROTOTYPE( int sef_cb_init_fresh, (int type, sef_init_info_t *info) );
PRIVATE mutex_t pm_lock;
+PRIVATE endpoint_t receive_from;
/*===========================================================================*
* main *
struct rprocpub rprocpub[NR_BOOT_PROCS];
force_sync = 0;
+ receive_from = ANY;
/* Initialize proc endpoints to NONE */
for (rfp = &fproc[0]; rfp < &fproc[NR_PROCS]; rfp++) {
init_filps(); /* Init filp structures */
mount_pfs(); /* mount Pipe File Server */
worker_start(do_init_root); /* mount initial ramdisk as file system root */
+ yield(); /* force do_init_root to start */
return(OK);
}
rfp->fp_wd = NULL;
}
+ receive_from = MFS_PROC_NR;
if ((r = mount_fs(DEV_IMGRD, "/", MFS_PROC_NR, 0, mount_label)) != OK)
panic("Failed to initialize root");
+ receive_from = ANY;
unlock_pm();
thread_cleanup(fp);
for(;;) {
/* Normal case. No one to revive. Get a useful request. */
- if ((r = sef_receive(ANY, &m_in)) != OK) {
+ if ((r = sef_receive(receive_from, &m_in)) != OK) {
panic("VFS: sef_receive error: %d", r);
}