regarding timeout/untimeout kernel functions
Joseph M Link
freebsd at joelink.net
Thu Jul 22 20:58:55 PDT 2004
I dont know anything about the kevent timer stuff, so you should
probably look into that before re-inventing the wheel. However, you
would only need 1 thread to implement this timer functionality.
There are a couple data structures you could use, but it would probably
be easiest to use a priorityq. You insert each timer event into the
priorityq keyed on when it is due to fire. You look at first item in
the queue and subtract the current time from it (gettimeofday()) to
determine how long to sleep until the next one is ready. If use select,
you'll need to create a pipe and select on it to wake up the thread when
you insert new timer events.
pradeep reddy punnam wrote:
> HI joseph ,
> i thought of threading with select before , but i belive that if the number of timers to be checked increases the number of the threads to be maintained increses,so the process may become very hevy. what do u think.
> i think ultimatley i am going to use the above thing.
> but in the process of my search i came across the timeout kernel function implemenation
> but i can not use that ( which i belive very efficient implementation of timers ), which user can not able to use it , so i just want to discuss it .
> - pradeep
> Joseph M Link <freebsd at joelink.net> wrote:
> If you're willing to take some precautions, you could run the timer code
> with select/usleep in a separate thread. However, since the callbacks
> would originate from that thread, you would need mutexes to protect any
> data that the function accesses that could also be accessed by the
> normal program flow.
> pradeep reddy punnam wrote:
>>i am working on a project , where i came across a situation where i need to execute a function when a timer expires ,exactly similar to functionality of the timeout() kernel function but i need this in userland(application), and the execution of the function is time sensitive, it should be run immediately when timer expires.
>>i can't be using poll or select for timer becuse those will block the process untill the timer expires.for me the proess should not be blocked.
>>and i also thought of taking the service of the timeout function by writing a system call and using signaling mechanism but i think this will become expensive when the number of timers to be checked increeses.
>>i read the kern_timeout.c code that is very good implentation.with very less expensive.
>>but i think user unable to enjoy that service.
>>i will thankful if somebody can tell if there is any such a service or way provided by os( that i overlooked).
>>Do you Yahoo!?
>>Vote for the stars of Yahoo!'s next ad campaign!
>>freebsd-hackers at freebsd.org mailing list
>>To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
> Do you Yahoo!?
> Vote for the stars of Yahoo!'s next ad campaign!
More information about the freebsd-hackers