Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!dali.cs.montana.edu!caen!sdd.hp.com!think.com!snorkelwacker.mit.edu!bloom-beacon!eru!hagbard!sunic!mcsun!ukc!inmos!brad!davidj From: davidj@brad.inmos.co.uk (David Johnston) Newsgroups: comp.os.os9 Subject: V_BUSY, who sets it? Keywords: filemanager V_BUSY Message-ID: <16115@ganymede.inmos.co.uk> Date: 17 May 91 23:58:22 GMT Sender: news@inmos.co.uk Reply-To: davidj@inmos.UUCP (David Johnston) Organization: none Lines: 36 I have an SCF device driver which serves an IMS B014 VME transputer slave board from a VME based 68k os9 system. This works correctly, with the appropriate interrupt routines. However due to the single character nature of SCF drivers, the data transfer rate is a pitifull 30k/second. To get around this I wrote a string based filemanager , where a buffer pointer and length value are passed to the device driver. The driver is then able to send the whole buffer at a speed close to the maximum speed possible on the B014 (400k/sec). Without interrupts, this scheme functions, but when I introduce code to timeout and wait on an interrupt the whole this falls over. It appears that the V_BUSY location in the static storage area is set to 0 on entry to the device driver, and so the IRQ service routine fails to recieve the process ID of the routine which called F$SLEEP. This kind of indicates that the filemanager is responsible for setting V_BUSY correctly, however none of my documemtation (Dibble, OS9 manuals & I/O tech ref) gives information on which routine should do this, or how. Can any OS9 guru's tell me what I am meant to be doing & whether I've grasped anything approaching the correct end of the stick? Both the driver and the filemanager are written in 68020 machine code. Thanks, Dave :+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+:+-+: David Johnston, INMOS Ltd,1000 Aztec West, Almondsbury,Bristol, BS12 4SQ, UK. JANET: davidj@uk.co.inmos INET: davidj@inmos.com TEL: +44 454 616616 UUCP: ..{ukc!inmos,uunet!inmos-c}!davidj FAX: +44 454 617910