From owner-freebsd-hackers Mon Jun 2 10:25:59 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id KAA00275 for hackers-outgoing; Mon, 2 Jun 1997 10:25:59 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id KAA00270 for ; Mon, 2 Jun 1997 10:25:56 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.5/8.6.9) id DAA05361; Tue, 3 Jun 1997 03:22:11 +1000 Date: Tue, 3 Jun 1997 03:22:11 +1000 From: Bruce Evans Message-Id: <199706021722.DAA05361@godzilla.zeta.org.au> To: msmith@atrad.adelaide.edu.au, msmith@genesis.atrad.adelaide.edu.au Subject: Re: weird scheduler crash (2.2) Cc: dg@root.com, hackers@FreeBSD.ORG Sender: owner-hackers@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >> How do I determine whether an interrupt handler is configured "fast" or >> "slow"? Where are the rules for "fast" and "slow" handlers described? > >Scratch the first one, I've found that. Teach me to crib code from >other drivers 8( The driver author should know :-). >Is there a list of rules for "fast" interrupt handlers? To begin with, here is the list of non-auto variables that may be accessed without special locking from within a fast interrupt handler: { } and as a consequence, here is the list of general kernel functions that may be called from a fast interrupt handler: { } Special functions may be called if the side effects are all known and none is harmful. Here is the list of special functions called in the sio fast interrupt handler: inb(); /* actually inline */ outb(); /* actually inline */ setsofttty(); /* was inline; now pessimized */ schedsofttty(); /* was inline; now pessimized */ breakpoint();; /* actually inline */ microtime(); /* bug; microtime() must not be called if * clock interrupts have been disabled for * more than about 15 usec; siointr() cannot * always satisfy this timing. */ Bruce