From: olsen@sourcery.mxm.sub.org (Olaf Barthel)
Newsgroups: de.comp.sys.amiga.misc
Subject: Re: Was kostet FindPort()/PutMsg()
Distribution: world
X-NewsSoftware: GRn 1.16e (7/4/92) by Mike Schwartz & Michael B. Smith
Date: 27 Sep 92 19:59:08 CET
Organization: MXM Barthel & Paesler

In article <8UMJr*z20@oberon.nbg.sub.org> hartmut@oberon.nbg.sub.org (hartmut Goebel) writes:
> In article <olsen.3053@sourcery.mxm.sub.org>, Olaf Barthel writes:
> 
>  >   Eins nach dem anderen. Ich beziehe mich bei der Verwendung von
>  >Disable()/Enable() in den Routinen der exec.library auf Informationen,
>  >die mittlerweile nicht mehr unbedingt Gueltigkeit haben muessen. Zumindest
> 
> Haeh? Welch Infos denn? Ich kenn nur die, die Nessy auch aufgefuerht hat.

   Das wirklich *uralte* Listing des disassemblierten Exec-Kernals.

>  >was die Vorlaeufer von Kickstart 2.0 betrifft, wird Disable()/Enable() in
>  >allen Faellen angewandt, in denen das Task-Scheduling oder die Verarbeitung
>                                         ^^^^^^^^^^^^^^^
> Um das Task-Scheduling auszuschalten genuegen Forbid()/Permit() voellig.
> Disable()/Enable() benutzen hiesse, mit Kanonen auf Spatzen zu scheissen.

   Du missverstehst mich. Es geht nicht darum, dass Anwenderprogramme zeitweilig
das Multitasking ausschalten, sondern dass im Scheduler selbst Multitasking
und Interruptverarbeitung zeitweilig abgeklemmt werden.

>  >von Interruptsignalen zeitweilig ausgesetzt werden muss. Dies passiert(e)
>  >z.B. bei der Manipulation der Task-Liste im Scheduler selbst oder auch
>  >wenn die Message-Liste eines MsgPorts veraendert wird.
> 
> Nein, eben nicht!
> Fuer das Aendern der MsgPort-Liste war und ist kein
> Disable()/Enablle() noetig! (fuer die Task-Liste schin.) Weil sich
> diese Liste nur aendern kann, wenn ein anderer Task an die Reihe
> kommt. Interrupts duerfen keine MsgPorts manipulieren (seit jeher)
> und Forbid()/Permit() verhindern den Task-Switch.

   Wie gesagt, es geht nicht um die Ausfuehrung eines Anwenderprogrammes.
Beim PutMsg() war es meines Wissens nach bisher notwendig, per Disable()
die Interruptverarbeitung abzuklemmen, da als Message-arrival-action auch
das Ausloesen eines Software-Interrupts moeglich ist. Dergleichen darf
allerdings erst passieren, nachdem die Message in die Liste des jeweiligen
MsgPorts eingehaengt und das System wieder in einem definierten Zustand
ist.

>  >koennen. Innerhalb kurzer Zeitintervalle halte ich (dies ist meine
>  >persoenliche Meinung) Disable()/Enable() fuer vertretbar, obwohl das
>  >Anwendungsgebiet fuer diese Funktionen sehr beschraenkt ist. Verwendet
> 
> [...]
> BTW: Was heisst "kurze Zeitintervalle"? ISt das Suchen eines Ports
> eins? Kann naermlich zeimlich lange dauern, insb. bei vielen
> Background-Tools.

   Ich hatte in meiner ersten Reply bereits auf eine alternative
Loesungsmethode hingewiesen.

> | Hartmut Goebel | UseNet: hartmut@oberon.nbg.sub.org              |
> | Amiga Software | Z-Netz: HARTMUT@ASN.ZER           // Only Amiga |
> | Manufactur     | Fido: 2:246/81.1  IRC: Essich   \X/ Oberon  ZOC |

-- 
Olaf Barthel       | Internet: olsen@sourcery.mxm.sub.org
Brabeckstrasse 35  |           o.barthel@a-link-h.comlink.de
D-3000 Hannover 71 |           cbmvax.commodore.com!cbmehq!sourcery!olsen
MXM, ECG127        |   Z-Netz: O.BARTHEL@A-LINK-H
-------------------------------------------------------------------------
"Dull, irritating Enchanter (M) seeks exciting, loving F for magic
 moments and possible lasting relationship. Must be truthful and
 kind or a good liar. No pros or adventurers need reply. Box Y3"