#: 15039 S12/OS9/68000 (OSK)
22-Apr-92 20:33:17
Sb: #15038-#serial wierdness
Fm: Carl Kreider 71076,76
To: Steve Wegert 76703,4255 (X)
Well, hot dawg!! I thought you would find that to be the case but is oh so
comforting to hear it from your keyboard!
The problem was this: if you try to set a signal when one is already set (as
sterm can do) the driver is just supposed to return 246 which gets eaten by the
caller. However, the common routine to do this (called from both read and
putstat) loads the error code, sets the carry, and pops a0 & a3 off the stack
before returning. Read pushes a0 & a3, so this works ok. As you can guess by
now, putstat does not push them. So control returns to the kernel in a manner
other than it expected, and the task ends up sleeping. Which is rather benign
compared to the other things it could do in that case ;).
There is 1 Reply.
|