Dear STREAMS and kernel experts,
I got a problem with a simple pseudodevice driver programmed by me.
Long time, anything works fine but then suddenly a deadlock occures.
This thing is very strang because of the following:
- the program reading the pseudo device is in a _read and blocked
- the streams head shows mit flags $3E or 076, which tells me:
(QWANTR) someone up (_read) needs data (indeed)
(QWANTW) someone from below has data (indeed)
(QFULL) block by flow control (got 6k, flow allows 5k)
(QREADR,QUSE) ok, the normal way
and nothing happens. So how can QWANTR and QFULL set at one time,
i.e. how can a _read block with 6k bytes of data waiting on the
queue? I put all the data with 'putnext' to the queue, using a
service procedure, 'canput' and whatever UNIX likes. What can be
We are running DG/UX 4.31 on a Data General AViiON 300.
Thank you in advance
Physikalisches Institut der Universitaet Bonn
5300 Bonn 1