home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!math.fu-berlin.de!fub!geminix.in-berlin.de!zikzak!amk
- From: amk@zikzak.in-berlin.de (Andreas M. Kirchwitz)
- Newsgroups: de.comp.sys.amiga.misc
- Subject: UseCount in Resident-List falsch
- Message-ID: <O7Wds*TV4@zikzak.in-berlin.de>
- Date: Fri, 01 Jan 1993 05:13:06 GMT
- Organization: Department of Fun & Games
- X-Newsreader: Arn V1.00
- Lines: 41
-
- Ausnahmsweise mal wieder was Intelligentes:
-
- Warum ist der "UseCount" (seg_UC, siehe <dos/dosextens.h>) bei den
- Segment-Strukturen in der Resident-Liste stets eins zu hoch?
- (z.B. im Vergleich zum internen "Resident"-Kommando)
-
- Folgender Source (Ausschnitt):
-
- {
- struct Segment *seg;
- Forbid();
- seg = (struct Segment *)BADDR(((struct DosInfo *)
- BADDR(DOSBase->dl_Root->rn_Info))->di_NetHand);
-
- /* seg zeigt nun auf das erste Element der Resident-Liste */
-
- while (seg) {
- /* hier nun jeweils "seg->seg_UC" auslesen */
- seg = (struct Segment *)BADDR(seg->seg_Next);
- }
- Permit();
- }
-
- Es stellt sich heraus, dass "seg->seg_UC" (falls >= 0) immer eins
- zu gross ist. Die anderen Werte (wenn < 0) stimmen allerdings
- (-1, -2 und -999). Ein UseCount von 0 kommt also nie vor.
-
- Mir scheint das alles etwas merkwuerdig zu sein.
-
- Bei einem UseCount von stets mindestens "1" duerfte man ja im Prinzip
- kein resident gemachtes Programm wieder entfernen duerfen. Ich muss
- ja nicht erwaehnen, dass dies natuerlich trotzdem korrekt funktioniert.
-
- Geh ich da vielleicht die falsche Liste durch? Kann ich kaum glauben.
- (wenn Ralph Babel das so sagt, wird's wohl die richtige sein ;-)
-
- WAS MACHE ICH FALSCH ?!?! ... Andreas
-
- --
- IRC-Nick: | Andreas M. Kirchwitz, Seesener Str. 69, W-1000 Berlin 31, Germany
- `bonzo' | Phone: +49 (0)30 873376, Mail: amk@{zikzak.in|cs.tu|fu}-berlin.de
-