[comp.sys.amiga] OpenDevice from tasks

thywiss@csvax.cs.ukans.edu (John A. Thywissen) (05/17/89)

In article <0539,AA0539@chroma>, Bryan Ford writes
that CloseDevice() should be called from processes only, 
because a DELayed EXPunge may cause DOS's UnLoadSeg() to be
called.

This is not quite a valid conclusion because:
  1.  Libraries/Devices can be expunged by the memory allocater
      when RAM gets short, and CERTAINLY AllocMem() is safe from
      a task.
  2.  Actually, UnLoadSeg() isn't called.  Exec (or actually ramlib)
      frees the SegList itself.  If you look carefully, I don't
      think you will find any EXPLICIT references to UnLoadSeg in
      the docs.  [I hope -- I wasn't able to.]

--John
-------
John A. Thywissen                 <thywiss@csvax.cs.ukans.edu>
1122 West Campus Rd.  Rm. 213        /| |\/| |  / \ |\
Lawrence, KS  66045-8081            / | |  | | |    | \
(913) 864 2646                     _/_-_-_|_ _|_ _ _|_ _|_ _ _\__|_ _|_-_-_\

carlson@betelgeuse (Richard L. Carlson) (05/17/89)

In article <15593@louie.udel.EDU> thywiss@csvax.cs.ukans.edu (John A. Thywissen) writes:
>In article <0539,AA0539@chroma>, Bryan Ford writes
>that CloseDevice() should be called from processes only, 
>because a DELayed EXPunge may cause DOS's UnLoadSeg() to be
>called.
>
>This is not quite a valid conclusion because:
> ...
>  2.  Actually, UnLoadSeg() isn't called.  Exec (or actually ramlib)
>      frees the SegList itself. ...

Since I started this discussion, and since other people seem to be
interested in the results, I should probably jump back in here.

The consensus of Randell Jesup (who posted a followup) and Adam Levin
of CATS (who sent me email) [wow, what support from C-A!] is that there
should *not* be a problem with doing a CloseDevice() from a task (at
least with the current set of devices).  I would guess that John's
explanation above is the correct reason.

-- Richard
   ...!ucbvax!ernie!carlson
   carlson@ernie.berkeley.edu

bryan@chroma.UUCP (Bryan Ford) (05/25/89)

In article <15593@louie.udel.EDU>, John A. Thywissen writes:
>  2.  Actually, UnLoadSeg() isn't called.  Exec (or actually ramlib)
>      frees the SegList itself.  If you look carefully, I don't
>      think you will find any EXPLICIT references to UnLoadSeg in
>      the docs.  [I hope -- I wasn't able to.]

I  really  don't know, you may be right.  However, the docs aren't always a
valid  source  of  information for obscure things like this.  I suppose the
only  real  way  to  find  out  would  be  to  ask C-A directly or do a ROM
disassembly on the Exec Expunge routine.

				Bryan

--

     ______________________________________
   _/ Bryan Ford - bryan@chroma.inland.com \_
 _/   ..!utah-cs!caeco!i_core!chroma!bryan   \_
/  ..!uunet!iconsys!caeco!i_core!chroma!bryan  \