[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Periodic task functions...

>Having a unique "update" process would be a Good Thing (in terms of
>performance) not only for file-systems, but also for device drivers; In
>both cases, there are tasks which must be done (checked) periodically,
>whether the device driver is called or not.  In minixfs and modm0dev,
>this is accomplished by an auxiliary daemon process: this causes
>significant overhead, and even more importantly, this process runs in
>non-kernel mode, which forbids some functions like (*kernel->wake)()
>which would be extremely handy. 

And things like TCP, and for that matter almost every communications
protocol require a regular cleanout kicking. (There's no point in 
registering a timeout for each and every connection you have open)

>It would be nice to have a supplementary kernel function -- let's say
>add_periodic_task(short period, void (*func)()) -- to register function
>"func" to be executed _in kernel mode_ every "period" milliseconds. 

Sounds pretty handy, although it'd be a real time eater unless you keep 
the granularity pretty coarse.  I think that just having two lists,
one on (say) 5ms (200Hz) and the other say 500ms (2Hz) would probably cover
99.9% of the requirements, and be much lighter on the overhead.

>Any comments about this?

Yeah, please guys, for every add_* function, make sure there's a 
remove_* function 8)


# mike smith : miff@apanix.apana.org.au - Silicon grease monkey        #
# "The question 'why are the fundamental laws of nature mathematical'  #
# then invites the trivial response 'because we define as fundamental  #
# those laws which are mathematical'". Paul Davies, _The_Mind_of_God_. #