[comp.os.os9] Immortal Processes

ocker@lan.informatik.tu-muenchen.dbp.de (Wolfgang Ocker) (11/14/88)

[I know only OS-9/68000, but I don't think that OS-9 and OSK are
different in this point]

Condemned processes which don't want to die often 
loop in the TermNat routine of a SCF device driver. OS9, as you know,
tries do de-initialize a device, after closing all pathes on it 
(assumed no previous "iniz" has been done.) The reason of that
(necessary) behaviour of a driver is, that it must flush the output
buffer before it can terminate the device (i.e. uninstall the IRQ,
free the buffers etc.) Flushing of the output is not possible when
a XOff is pending. The TermNat routine often looks like this:

TermNat00:
  <sleep>
TermNat:
  tst.w OutBufferCount(a2)
  bne.s TermNat00 ; still characters in output buffer!

  <go on terminating device>


To avoid this problem, you can "iniz" the device before using it.
If the driver hangs already because of a XOff (typically on modem
lines :-() you can try to connect another terminal to that line
and give the driver what he wants (a XOn).

I have no idea how to work around this problem. An additional
SetStat function, which should clear the XOff condition, isn't
useful, because SCF blocks all calls to a driver when it's in use.
Perhaps a timeout would help ...

/// Wolfgang Ocker
-- 
  |  Wolfgang Ocker          |  ocker@lan.informatik.tu-muenchen.dbp.de  |
  |  Lochhauserstr. 35a      |      pyramid!tmpmbx!recco!weo (home)      |
  |  D-8039 Puchheim         |     Technische Universitaet Muenchen      |
  |  Voice: +49 89 80 77 02  |          Huh, What? Where am I?           |