Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site watrose.UUCP Path: utzoo!watmath!watrose!arwhite From: arwhite@watrose.UUCP (Alex White) Newsgroups: net.bugs.4bsd Subject: Standalone use of uda on non-zero unibus under 4.1bsd Message-ID: <108@watrose.UUCP> Date: Thu, 6-Oct-83 12:37:19 EDT Article-I.D.: watrose.108 Posted: Thu Oct 6 12:37:19 1983 Date-Received: Fri, 7-Oct-83 10:11:28 EDT Organization: U of Waterloo, Ontario Lines: 22 Both the uda50 and ts11 drivers have to map in a communications area to talk to the device. They do this with a dummy struct iob which they call ubasetup with after setting the communications regions address and size; the problem is that ubasetup does the mapping for the unibus specified in io_unit, this is zero for the dummy struct which is correct for uba0 but if you want to work for other unibuses you should set this in udaopen: if (ud_ubaddr == 0) { cudbuf.i_ma = (caddr_t)&uda; cudbuf.i_cc = sizeof(uda); cudbuf.i_unit = io->i_unit; /* Extra line */ ud_ubaddr = (struct uda *)ubasetup(&cudbuf, 2); } By the way, I really don't think these drivers are at all re-entrant in so much as they set ud_ubaddr and never clear it, thus if you do Boot : ra(0,0)vmunix vmunix not found : ra(8,0)vmunix # Get vmunix from backup disk on other uba will hence use the info from the first open since ud_ubaddr is non-zero now.