From 60aa9c6712eb1a0ddf2afa60e79028f9fa8352e0 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 13 Jun 2001 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2001-06-13 --- port/devsd.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/port/devsd.c b/port/devsd.c index 2b1bd0b5114a59dc52e20e30d8f84d02d390bf2a..329c82c8b439c0eaa3deba34ed17187dfe15ea7d 100644 --- a/port/devsd.c +++ b/port/devsd.c @@ -36,12 +36,27 @@ enum { Qctl = Qunitbase, Qraw, Qpart, + + TypeLOG = 4, + NType = (1<>4) & 0x0F) -#define UNIT(q) ((((ulong)(q).path)>>8) & 0xFF) -#define QID(u, p, t) (((u)<<8)|((p)<<4)|(t)) +#define TYPE(q) ((((ulong)(q).path)>>TypeSHIFT) & TypeMASK) +#define PART(q) ((((ulong)(q).path)>>PartSHIFT) & PartMASK) +#define UNIT(q) ((((ulong)(q).path)>>UnitSHIFT) & UnitMASK) +#define QID(u, p, t) (((u)<part == nil). */ if(partno == -1){ + if(unit->npart >= NPart) + error(Enomem); if((pp = malloc(sizeof(SDpart)*(unit->npart+SDnpart))) == nil) error(Enomem); memmove(pp, unit->part, sizeof(SDpart)*unit->npart); @@ -308,6 +325,8 @@ sdreset(void) */ if(sdnunit == 0) return; + if(sdnunit > NUnit) + sdnunit = NUnit; if((sdunit = malloc(sdnunit*sizeof(SDunit*))) == nil) return; if((sdunitflg = malloc(sdnunit*sizeof(int))) == nil){