* [9fans] Hooking up to a timer in a driver
@ 1999-06-21 17:51 Chris
0 siblings, 0 replies; 4+ messages in thread
From: Chris @ 1999-06-21 17:51 UTC (permalink / raw)
Hey all,
I have been hunting through the kernel code to try and figure out how to
setup a timer in a file system driver I am writing.
Here is my problem :
I am currently outputting data to a device via my own file system (MIDI). I
need a way to have a timer go off in the file system every n Milliseconds,
and check my output queue to see if it is time to send the data. Currently
I am doing this by spawning a kproc in the driver, and having it sleep for
n milliseconds, wake up, check the queue the sleep. Thought this seems to
work, it does not seem like the cleanest way to do this.
I would like to wire up a handler to a timer mechanism that the OS supports
so I could just have the OS call my function every n ticks.
I have not been able to find such a thing by searching the source code.
Any Clues ?
Thanks!
-Chris Pane
^ permalink raw reply [flat|nested] 4+ messages in thread
* [9fans] Hooking up to a timer in a driver
@ 1999-06-22 3:20 jmk
0 siblings, 0 replies; 4+ messages in thread
From: jmk @ 1999-06-22 3:20 UTC (permalink / raw)
cpane@metamorsw.com:
>It looks like if you want to get interrupted you insert a call to your
>clock routine inside the clock() function in pc/clock.c.
Yes, you can do that. Brazil has slightly generalised this by having a routine
which drivers can call to add a function to a linked-list of functions to be called
per clock tick, so there are no dependancies in clock.c for the uart, mouse, etc.
--jim
^ permalink raw reply [flat|nested] 4+ messages in thread
* [9fans] Hooking up to a timer in a driver
@ 1999-06-22 2:17 Christopher
0 siblings, 0 replies; 4+ messages in thread
From: Christopher @ 1999-06-22 2:17 UTC (permalink / raw)
Hi,
This is an update.
I have been hacking into how the pc kernal setups up the 8253 PIT.
It looks like if you want to get interrupted you insert a call to your
clock routine inside the clock() function in pc/clock.c.
Here is what is there now -
static void
clock(Ureg *ur, void *arg)
{
Proc *p;
int nrun = 0;
USED(arg);
m->ticks++;
checkalarms();
uartclock();
hardclock();
/* And more clock stuff */
}
Is it correct to assume that if I want a clock interrupt I can add a
midiclock() function , like the uartclock() and mouseclock() functions
that will get called every time clock is called by the timer, thus
giving me a way to sample the output queue for my file system, and
decide if is time to send the data to the MIDI port?
Am I way off here, I am kind exploring how to do this by reverse
engineering what is going on in the code !!!
Thanks
-Chris Pane
^ permalink raw reply [flat|nested] 4+ messages in thread
* [9fans] Hooking up to a timer in a driver
@ 1999-06-21 18:05 Chris
0 siblings, 0 replies; 4+ messages in thread
From: Chris @ 1999-06-21 18:05 UTC (permalink / raw)
Hey all,
I have been hunting through the kernel code to try and figure out how to
setup a timer in a file system driver I am writing.
Here is my problem :
I am currently outputting data to a device via my own file system (MIDI). I
need a way to have a timer go off in the file system every n Milliseconds,
and check my output queue to see if it is time to send the data. Currently
I am doing this by spawning a kproc in the driver, and having it sleep for
n milliseconds, wake up, check the queue the sleep. Thought this seems to
work, it does not seem like the cleanest way to do this.
I would like to wire up a handler to a timer mechanism that the OS supports
so I could just have the OS call my function every n ticks.
I have not been able to find such a thing by searching the source code.
Any Clues ?
Thanks!
-Chris Pane
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~1999-06-22 3:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-06-21 17:51 [9fans] Hooking up to a timer in a driver Chris
1999-06-21 18:05 Chris
1999-06-22 2:17 Christopher
1999-06-22 3:20 jmk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).