Lines Matching defs:daemon

22 // But since the kernel daemon is documented to be very inaccurate, this
26 struct daemon : DoublyLinkedListLinkImpl<struct daemon> {
35 typedef DoublyLinkedList<struct daemon> DaemonList;
50 struct daemon* _NextDaemon(struct daemon& marker);
90 struct ::daemon* daemon = new(std::nothrow) (struct ::daemon);
91 if (daemon == NULL)
94 daemon->function = function;
95 daemon->arg = arg;
96 daemon->frequency = frequency;
97 daemon->executing = false;
102 // we try to balance the work-load for each daemon run
113 daemon->offset = num % frequency;
115 daemon->offset = 0;
117 fDaemons.Add(daemon);
129 // search for the daemon and remove it from the list
131 struct daemon* daemon = iterator.Next();
133 if (daemon->function == function && daemon->arg == arg) {
137 while (daemon->executing) {
152 delete daemon;
167 struct daemon* daemon = iterator.Next();
173 (addr_t)daemon->function, NULL, &symbol, &imageName, &exactMatch);
178 kprintf("\t%s:%s (%p)", imageName, symbol, daemon->function);
180 kprintf("\t%p", daemon->function);
182 kprintf(", arg %p%s\n", daemon->arg,
183 daemon->executing ? " (running) " : "");
195 struct daemon*
196 KernelDaemon::_NextDaemon(struct daemon& marker)
198 struct daemon* daemon;
202 daemon = fDaemons.Head();
204 daemon = fDaemons.GetNext(&marker);
208 marker.arg = daemon;
210 if (daemon != NULL)
211 fDaemons.InsertAfter(daemon, &marker);
213 return daemon;
220 struct daemon marker;
228 // iterate through the list and execute each daemon if needed
229 while (struct daemon* daemon = _NextDaemon(marker)) {
230 daemon->executing = true;
233 if (((iteration + daemon->offset) % daemon->frequency) == 0)
234 daemon->function(daemon->arg, iteration);
237 daemon->executing = false;
316 if (sKernelDaemon.Init("kernel daemon") != B_OK)
317 panic("kernel_daemon_init(): failed to init kernel daemon");