kick not called

If I am writing a device driver and my interrupt service routine returns the
correct Hardware pid along with an action of ACT_OUTPUT_READY, can anyone
think of a reason why my kick would not be called?

This is happening intermittently on my test system and I cannot figure out
what is causing kick to not be triggered.

Allan

“Allan Smith” <aes@connecttech.com> wrote in message
news:bkcv44$48o$1@inn.qnx.com

If I am writing a device driver and my interrupt service routine returns
the
correct Hardware pid along with an action of ACT_OUTPUT_READY, can anyone
think of a reason why my kick would not be called?

Along with the action? What do you mean? And what is kick, a fonction?

This is happening intermittently on my test system and I cannot figure out
what is causing kick to not be triggered.

Please rephrase I can’t understand what you are talking about :wink:

Allan

“action” is a member of QNX4’s output buffer structure.

Kick is a function (a standard call back in pretty much any driver set by
the dev_drvr_register command) and Dev calls it when a change has occurred
in the output buffer.

Al

“Mario Charest” postmaster@127.0.0.1 wrote in message
news:bkd0me$5k3$1@inn.qnx.com

“Allan Smith” <> aes@connecttech.com> > wrote in message
news:bkcv44$48o$> 1@inn.qnx.com> …
If I am writing a device driver and my interrupt service routine returns
the
correct Hardware pid along with an action of ACT_OUTPUT_READY, can
anyone
think of a reason why my kick would not be called?

Along with the action? What do you mean? And what is kick, a fonction?


This is happening intermittently on my test system and I cannot figure
out
what is causing kick to not be triggered.


Please rephrase I can’t understand what you are talking about > :wink:

“Allan Smith” <aes@connecttech.com> wrote in message
news:bkd1a0$5ug$1@inn.qnx.com

“action” is a member of QNX4’s output buffer structure.

Kick is a function (a standard call back in pretty much any driver set by
the dev_drvr_register command) and Dev calls it when a change has occurred
in the output buffer.

Ah, you are making references to a Dev type of driver > :wink: > It didn’t occured

to me that’s what you meant by “device driver” :wink:

Well there can be lots of thing that could cause this problem. Hard to give
a list here, can you post code of you int handler, tto and kick fct?

Al

“Mario Charest” postmaster@127.0.0.1 wrote in message
news:bkd0me$5k3$> 1@inn.qnx.com> …

“Allan Smith” <> aes@connecttech.com> > wrote in message
news:bkcv44$48o$> 1@inn.qnx.com> …
If I am writing a device driver and my interrupt service routine
returns
the
correct Hardware pid along with an action of ACT_OUTPUT_READY, can
anyone
think of a reason why my kick would not be called?

Along with the action? What do you mean? And what is kick, a fonction?


This is happening intermittently on my test system and I cannot figure
out
what is causing kick to not be triggered.


Please rephrase I can’t understand what you are talking about > :wink:

No I cannot post my code as it is confidential.

I can tell you that the same basic flow has been maintained as the standard
driver but because I am implementing a 5th generation UART, I am able to
move up to 64 bytes of data to it at a time and querry how many characters
are currently in the TX (and RX for that matter) FIFOs.

My Kick code returns a 1 if it did something and a 0 if it decided not to
actually kick the Tx Data Stream.

The tto code returns the hardware pid if the output buffer threshold has
been reached. Very simular to the standard driver.

I have used trace messages to get the flow of the the driver on one port.
The following is a decoded version of it so you can see the normal flow:

Allan
— start of my trace buffer ----
Sep 19 10:13:07.238 tto entered
Sep 19 10:13:07.238 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.238 tto exit: pid returned=00000000h obuf->size=3C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=380, 40h
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=340, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=300, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h obuf->size=2C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=280, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=24,0 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=200, 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=1C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=180, 40h
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=140, 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=100, 40h
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=0C0, 40h
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=080, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=040h, 40h
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=000h, 40h
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 tto exit: pid returned=00000012h, obuf->size=000h, 00h
chars on UART FIFO

Sep 19 10:13:07.268 Kick was called
Sep 19 10:13:07.268 Kick, Kicked the output data stream

Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=3C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=380, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=340, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=300, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=2C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=280, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=240, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=200, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=1C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=180, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=140, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=100, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=0C0, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=080, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=040h, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=000h, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 tto exit: pid returned=00000012, obuf->size=000h, 00h
chars on UART FIFO

Sep 19 10:13:07.298 Kick was called
Sep 19 10:13:07.298 Kick, Kicked the output data stream

Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 3Fh chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=3C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=380, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=340, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=300, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=2C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=280, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=240, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=200, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=1C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=180, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=140, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=100, 40h
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=0C0, 40h
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=080, 3Fh
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=040h, 3Fh
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h, 3Fh chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=000h, 3Fh
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 tto exit: pid returned=00000012, obuf->size=000h, 00h
chars on UART FIFO

nothing more happens because Kick did not get called
---- end of my trace buffer ----

“Mario Charest” postmaster@127.0.0.1 wrote in message
news:bkden0$ejb$1@inn.qnx.com

“Allan Smith” <> aes@connecttech.com> > wrote in message
news:bkd1a0$5ug$> 1@inn.qnx.com> …
“action” is a member of QNX4’s output buffer structure.

Kick is a function (a standard call back in pretty much any driver set
by
the dev_drvr_register command) and Dev calls it when a change has
occurred
in the output buffer.

Ah, you are making references to a Dev type of driver > :wink: > It didn’t
occured
to me that’s what you meant by “device driver” > :wink:

Well there can be lots of thing that could cause this problem. Hard to
give
a list here, can you post code of you int handler, tto and kick fct?