mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-27 07:44:09 +02:00
handle block drivers that indicate load failure just by returning units = 0
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/branches/UNSTABLE@1074 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
parent
e90387e6dd
commit
4de23bcebf
@ -1443,7 +1443,8 @@ STATIC BOOL LoadDevice(PCStr p, VFP top, int mode)
|
||||
do
|
||||
{
|
||||
struct dhdr FAR *dhp = MK_PTR(struct dhdr, base, next);
|
||||
if ((ret = init_device(dhp, szBuf, mode, &top)) != SUCCESS)
|
||||
/* init_device returns FALSE on SUCCESS, TRUE otherwise */
|
||||
if ((ret = init_device(dhp, szBuf, mode, &top)))
|
||||
break;
|
||||
|
||||
next = FP_OFF(dhp->dh_next);
|
||||
|
@ -478,6 +478,7 @@ BOOL init_device(struct dhdr FAR * dhp, PCStr cmdLine, int mode, VFP *r_top)
|
||||
if (r_top)
|
||||
{
|
||||
/* Don't link in device drivers which do not take up memory */
|
||||
/* ie device drivers that fail to load and return top==CS:0 */
|
||||
if (rq.r_endaddr == (BYTE FAR *) dhp)
|
||||
return TRUE;
|
||||
|
||||
@ -530,11 +531,16 @@ BOOL init_device(struct dhdr FAR * dhp, PCStr cmdLine, int mode, VFP *r_top)
|
||||
*r_top = rq.r_endaddr;
|
||||
}
|
||||
|
||||
if (!(dhp->dh_attr & ATTR_CHAR) && (rq.r_nunits != 0))
|
||||
if (!(dhp->dh_attr & ATTR_CHAR)) /* if block device (not character) */
|
||||
{
|
||||
if (rq.r_nunits) /* if unit count is nonzero */
|
||||
{
|
||||
dhp->dh_name[0] = rq.r_nunits;
|
||||
update_dcb(dhp);
|
||||
}
|
||||
else /* returned unit count of 0, indication of load failure */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (dhp->dh_attr & ATTR_CONIN)
|
||||
LoL->syscon = dhp;
|
||||
|
Loading…
x
Reference in New Issue
Block a user