RTEMS...kbd handler
Joel Sherrill <joel@merlin.gcs.redstone.army.mil>
joel@merlin.gcs.redstone.army.mil
Mon Mar 24 09:15:00 GMT 1997
On Sat, 22 Mar 1997, Kurt Van Delden wrote:
> I know this is not the primary topic of the mailing list, but here it goes.
Since there is currently no dedicated rtems list, this is as good a place
as any. :)
> I have rtems 3.60 & newlib 1.70 setup as follows:
> target: i386-go32-rtems
> host: i586-unknown-linux
> It works....
> I can compile the examples. In addition I have constructed a serial
> driver from various sources. My current difficulty is detecting if a key
> stroke is available.. I don't know if newlib has a "kbhit" equivalent. I
> can link libpc.a in, yet this doesn't seem to help,. kbhit nor
> bioskey(0x01) do the trick. If I use scanf, rtems doesn't deschedule the
> process voluntarily. Scanf seems to poll for keys, and only gets
> descheduled when the time-slice is up. Does RTEMS have it's own kb
> handler, or does it use djgpp's/dos' ?
The place to look is in c/src/lib/libbsp/i386/go32/console. In the
console driver, you will see that read boils down to a call to inbyte()
which in turn calls a routine _IBMPC_inch(). This polls for a character
to become available using the _IBMPC_chrdy() call. The driver appears to
provide it's own ISR handler but has no mechanism to block in terms of OS
services until a keystroke is available. It polls for the availability
of a character in the ISR buffer or until "kbhit()" retuns 1.
We would like to merge your serial driver into the source and if you are
so inclined to provide blocking keyboard input, let me know. I may be
able to cut down on the work required to do this.
--joel
Joel Sherrill Sr. Computer Scientist
joel@OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (205) 722-9985
More information about the crossgcc
mailing list