Re: Piep beim shutdown

From: Oliver Fromme <olli(at)secnetix.de>
Date: Fri, 3 Aug 2001 15:42:50 +0200 (CEST)

Philipp Mergenthaler <un1i(at)rz.uni-karlsruhe.de> wrote:
> On Fri, Aug 03, 2001 at 11:08:56AM +0200, Nicolas Rachinsky wrote:
> Wieso Piepsen während des Shutdowns so verhindert wird, weiß ich nicht.

Eben nachgeschaut: Weil zu dem Zeitpunkt (nach dem Shut-
down) Timer-Interrupts nicht mehr funktionieren, was ja
auch ziemlich einleuchtend ist. Das bedeutet, daß die
Funktion zum Abstellen des Tons nicht aufgerufen werden
kann.

> sysbeep(800, (5*hz+99)/100);
>
> Das erste Argument gibt die Tonhöhe an (nicht die Frequenz sondern die
> Periode oder so),

Die Periode in Ticks des i8254-Timers. Der läuft mit einer
Frequenz von TIMER_FREQ (1193182 Hz bei einem intel-PC).
Um einen 440Hz-Ton auszugeben, müßte man also einen Wert
von TIMER_FREQ / 440 verwenden.

> Falls es einen Grund gibt, weshalb während des Shutdowns nicht gepiepst
> werden kann/soll/darf, wirst Du das schon merken. :-)

Ja -- es hört nicht auf zu piepesen, bis man den großen
Knopf gedrückt hat. :-)

Bessere Lösung wäre, den Pieps einzuschalten, kurze Zeit zu
warten, und ihn dann explizit wieder auszuschalten (das
macht sysbeepstop(NULL);). Das warten könnte man vermut-
lich mit DELAY(x) machen, wobei x in Mikrosekunden ist
(also DELAY(250000) für eine Viertelsekunde), aber ich bin
nicht ganz sicher, ob das nach einem Shutdown noch funktio-
niert. Theoretisch sollte es gehen, da sie keine Inter-
rupts verwendet, sondern den Timer pollt (was zu dem Zeit-
punkt ausnahmsweise keine Todsünde ist).

Also mit anderen Worten:

   sysbeep(TIMER_FREQ / 440, 0); /* zweiter Wert egal */
   DELAY(250000);
   sysbeepstop(NULL);

Ich hab das nicht getestet, ist nur graue Theorie. :-)

> Damit kenne ich mich praktisch nicht aus, aber vielleicht reicht es ja, die
> neue Option in sys/conf/options einzutragen.

Tut es. Das bewirkt, daß er die Option als #define in ein
Header-File reinschreibt. Am Anfang von sys/conf/options
findet man ein wenig Doku dazu.

Man könnte auch einen sysctl-Schalter dafür machen, das ist
aber geringfügig aufwendiger.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 03 Aug 2001 - 15:42:53 CEST

search this site