Added dmap_async_driver and dmap_sel_filp fields. Support for asynch character
drivers (needs cleaning up).
This commit is contained in:
parent
9df94c5ee8
commit
d9a9b727e2
@ -16,7 +16,7 @@
|
|||||||
/* Some devices may or may not be there in the next table. */
|
/* Some devices may or may not be there in the next table. */
|
||||||
#define DT(enable, opcl, io, driver, flags, label) \
|
#define DT(enable, opcl, io, driver, flags, label) \
|
||||||
{ (enable?(opcl):no_dev), (enable?(io):0), \
|
{ (enable?(opcl):no_dev), (enable?(io):0), \
|
||||||
(enable?(driver):0), (flags), label },
|
(enable?(driver):0), (flags), label, FALSE },
|
||||||
#define NC(x) (NR_CTRLRS >= (x))
|
#define NC(x) (NR_CTRLRS >= (x))
|
||||||
|
|
||||||
/* The order of the entries here determines the mapping between major device
|
/* The order of the entries here determines the mapping between major device
|
||||||
@ -49,10 +49,10 @@ PRIVATE struct dmap init_dmap[] = {
|
|||||||
DT(0, 0, 0, 0, DMAP_MUTABLE, "") /*11 = not used */
|
DT(0, 0, 0, 0, DMAP_MUTABLE, "") /*11 = not used */
|
||||||
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*12 = /dev/c3 */
|
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*12 = /dev/c3 */
|
||||||
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*13 = /dev/audio */
|
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*13 = /dev/audio */
|
||||||
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*14 = /dev/mixer */
|
DT(0, 0, 0, 0, DMAP_MUTABLE, "") /*14 = not used */
|
||||||
DT(1, gen_opcl, gen_io, LOG_PROC_NR, 0, "") /*15 = /dev/klog */
|
DT(1, gen_opcl, gen_io, LOG_PROC_NR, 0, "") /*15 = /dev/klog */
|
||||||
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*16 = /dev/random*/
|
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*16 = /dev/random*/
|
||||||
DT(0, no_dev, 0, NONE, DMAP_MUTABLE, "") /*17 = /dev/cmos */
|
DT(0, 0, 0, 0, DMAP_MUTABLE, "") /*17 = not used */
|
||||||
#endif /* IBM_PC */
|
#endif /* IBM_PC */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -169,7 +169,10 @@ PUBLIC int do_mapdriver()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isokendpt(tasknr, &proc_nr_n) != OK)
|
if (isokendpt(tasknr, &proc_nr_n) != OK)
|
||||||
|
{
|
||||||
|
printf("vfs:do_mapdriver: bad endpoint %d\n", tasknr);
|
||||||
return(EINVAL);
|
return(EINVAL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Try to update device mapping. */
|
/* Try to update device mapping. */
|
||||||
major= m_in.md_major;
|
major= m_in.md_major;
|
||||||
@ -316,6 +319,9 @@ int force;
|
|||||||
dp->dmap_io = gen_io;
|
dp->dmap_io = gen_io;
|
||||||
dp->dmap_driver = proc_nr_e;
|
dp->dmap_driver = proc_nr_e;
|
||||||
|
|
||||||
|
if (dp->dmap_async_driver)
|
||||||
|
dp->dmap_io= asyn_io;
|
||||||
|
|
||||||
return(OK);
|
return(OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,6 +363,7 @@ PUBLIC void build_dmap()
|
|||||||
dp->dmap_driver = init_dmap[i].dmap_driver;
|
dp->dmap_driver = init_dmap[i].dmap_driver;
|
||||||
dp->dmap_flags = init_dmap[i].dmap_flags;
|
dp->dmap_flags = init_dmap[i].dmap_flags;
|
||||||
strcpy(dp->dmap_label, init_dmap[i].dmap_label);
|
strcpy(dp->dmap_label, init_dmap[i].dmap_label);
|
||||||
|
dp->dmap_async_driver= FALSE;
|
||||||
} else { /* no default */
|
} else { /* no default */
|
||||||
dp->dmap_opcl = no_dev;
|
dp->dmap_opcl = no_dev;
|
||||||
dp->dmap_io = no_dev_io;
|
dp->dmap_io = no_dev_io;
|
||||||
@ -365,32 +372,11 @@ PUBLIC void build_dmap()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
dmap[13].dmap_async_driver= TRUE; /* Audio */
|
||||||
/* Get settings of 'controller' and 'driver' at the boot monitor. */
|
dmap[15].dmap_async_driver= TRUE; /* Log */
|
||||||
if ((s = env_get_param("label", driver, sizeof(driver))) != OK)
|
dmap[15].dmap_io= asyn_io;
|
||||||
panic(__FILE__,"couldn't get boot monitor parameter 'driver'", s);
|
dmap[16].dmap_async_driver= TRUE; /* Random */
|
||||||
if ((s = env_get_param("controller", controller, sizeof(controller))) != OK)
|
|
||||||
panic(__FILE__,"couldn't get boot monitor parameter 'controller'", s);
|
|
||||||
|
|
||||||
/* Determine major number to map driver onto. */
|
|
||||||
if (controller[0] == 'f' && controller[1] == 'd') {
|
|
||||||
major = FLOPPY_MAJOR;
|
|
||||||
}
|
|
||||||
else if (controller[0] == 'c' && isdigit(controller[1])) {
|
|
||||||
if ((nr = (unsigned) atoi(&controller[1])) > NR_CTRLRS)
|
|
||||||
panic(__FILE__,"monitor 'controller' maximum 'c#' is", NR_CTRLRS);
|
|
||||||
major = CTRLR(nr);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
panic(__FILE__,"monitor 'controller' syntax is 'c#' of 'fd'", NO_NUM);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now try to set the actual mapping and report to the user. */
|
|
||||||
if ((s=map_driver(major, DRVR_PROC_NR, STYLE_DEV)) != OK)
|
|
||||||
panic(__FILE__,"map_driver failed",s);
|
|
||||||
printf("Boot medium driver: %s driver mapped onto controller %s.\n",
|
|
||||||
driver, controller);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
|
@ -18,7 +18,9 @@ dmap.h
|
|||||||
extern struct dmap {
|
extern struct dmap {
|
||||||
int _PROTOTYPE ((*dmap_opcl), (int, Dev_t, int, int) );
|
int _PROTOTYPE ((*dmap_opcl), (int, Dev_t, int, int) );
|
||||||
int _PROTOTYPE ((*dmap_io), (int, message *) );
|
int _PROTOTYPE ((*dmap_io), (int, message *) );
|
||||||
int dmap_driver;
|
endpoint_t dmap_driver;
|
||||||
int dmap_flags;
|
int dmap_flags;
|
||||||
char dmap_label[16];
|
char dmap_label[16];
|
||||||
|
int dmap_async_driver;
|
||||||
|
struct filp *dmap_sel_filp;
|
||||||
} dmap[];
|
} dmap[];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user