From owner-freebsd-hackers Tue Nov 28 19:56:26 1995 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id TAA06043 for hackers-outgoing; Tue, 28 Nov 1995 19:56:26 -0800 Received: from genesis.atrad.adelaide.edu.au (genesis.atrad.adelaide.edu.au [129.127.96.120]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id TAA06029 for ; Tue, 28 Nov 1995 19:56:10 -0800 Received: from msmith@localhost by genesis.atrad.adelaide.edu.au (8.6.12/8.6.9) id DAA10336 for hackers@freebsd.org; Wed, 29 Nov 1995 03:50:43 GMT From: Michael Smith Message-Id: <199511290350.DAA10336@genesis.atrad.adelaide.edu.au> Subject: more device driver question 8) To: hackers@freebsd.org Date: Wed, 29 Nov 1995 03:50:42 +0000 () MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 1042 Sender: owner-hackers@freebsd.org Precedence: bulk Ok, and another one 8) Driver read routine sets up buffers, etc. Driver enables interrupts on peripheral. Peripheral immediately interrupts, may satisfy whole read request. Driver goes to sleep waiting for read request to be satsified. ... I can't see how to avoid this race; I'm sure it must be possible, but browsing other drivers yields no immediate inspiration. Some sleep at raised interrupt level: spltty() tsleep(...) splx() Does this imply that tsleep() restores the base interrupt level while it's running? Because the peripheral's data rate is entirely dependant on an external source, it's impossible to know how fast or slow it will be 8( -- ]] Mike Smith, Software Engineer msmith@atrad.adelaide.edu.au [[ ]] Genesis Software genesis@atrad.adelaide.edu.au [[ ]] High-speed data acquisition and (GSM mobile) 041-122-496 [[ ]] realtime instrument control (ph/fax) +61-8-267-3039 [[ ]] "Who does BSD?" "We do Chucky, we do." [[