2009/3/6 <micro...@virginbroadband.com.au>

> > Anyway in any case how does shell get the 'd' or anything from the
> > keyboard?
> > What are the exact steps?
>
> I'm a Linux kernel newbie, (although I have heavy embedded MCU coding
> background) but I can help with the general approach of this scenario.
> First, it's important to note that any interrupt handler should be as
> *short* as possible.
> This applies to any CPU/MCU system. Once the handler (ISR) has acted upon
> the event, it will have relevant data stored somewhere, which then the OS
> or "foreground" code can act upon. This is commonly referred to as "bottom
> half".
>
> For a keyboard handler, it will typically use a ring buffer (OSs will use
> queues). The ring buffer will have a pointer to the head (where the latest
> or newest data was stored) and the tail (where the oldest data resides).
> When head and tail are equal the ring buffer is empty.
> In your example, the head pointer will point to the character 'd' and the
> tail will be one behind.
> It's most convenient (and fastest)  to assign a buffer size of a power of
> 2.
>
> Note that at this stage it's not per se necessary that further interrupts
> or task yielding occurs.
> The application code could do something as simple as polling whether there
> is data in the buffer by looking at the head/tail pointers on a frequent
> basis.
>
> In the case of an OS, the task of retrieving and processing the keyboard
> data will activate if it wasn't active.
> Where that keyboard data then is off to will depend on what
> shell/application/process is running. The received 'd' character might even
> just sit there in the buffer but no one is interested in it...
>
> Perhaps that gives a very general insight at machine level of what goes on.
>



Can you make it simple please ...as simple as the question .. ?










-- 
With Love..
.      .Shinooooo

Reply via email to