Lines Matching defs:event

72 add_event_to_list(timer* event, timer* volatile* list)
77 // stick it in the event list
79 if ((bigtime_t)next->schedule_time >= (bigtime_t)event->schedule_time)
84 event->next = last->next;
85 last->next = event;
87 event->next = next;
88 *list = event;
111 while (timer* event = *it) {
113 uint32 flags = event->flags;
116 it = &event->next;
122 *it = event->next;
123 event->next = affectedTimers;
124 affectedTimers = event;
132 timer* event = affectedTimers;
133 affectedTimers = event->next;
135 bigtime_t oldTime = event->schedule_time;
136 event->schedule_time += timeDiff;
140 if (event->schedule_time < oldTime)
141 event->schedule_time = B_INFINITE_TIMEOUT;
143 if (event->schedule_time < 0)
144 event->schedule_time = 0;
147 add_event_to_list(event, &cpuData.events);
152 // If the first event has changed, reset the hardware timer.
173 for (timer* event = sPerCPU[i].events; event != NULL;
174 event = event->next) {
175 kprintf(" [%9lld] %p: ", (long long)event->schedule_time, event);
176 if ((event->flags & ~B_TIMER_FLAGS) == B_PERIODIC_TIMER)
177 kprintf("periodic %9lld, ", (long long)event->period);
182 event->flags, event->user_data, event->hook);
190 (addr_t)event->hook, NULL, &symbol, &imageName, &exactMatch);
248 timer* event;
260 event = cpuData.events;
261 while (event != NULL && ((bigtime_t)event->schedule_time < system_time())) {
262 // this event needs to happen
263 int mode = event->flags;
265 cpuData.events = (timer*)event->next;
266 cpuData.current_event = event;
271 TRACE(("timer_interrupt: calling hook %p for event %p\n", event->hook,
272 event));
275 // note: if the event is not periodic, it is ok
276 // to delete the event structure inside the callback
277 if (event->hook)
278 rc = event->hook(event);
287 event->schedule_time += event->period;
292 if (now >= event->schedule_time + event->period) {
294 event->schedule_time = now
295 - (now - event->schedule_time) % event->period;
298 add_event_to_list(event, &cpuData.events);
303 event = cpuData.events;
320 add_timer(timer* event, timer_hook hook, bigtime_t period, int32 flags)
325 if (event == NULL || hook == NULL || period < 0)
328 TRACE(("add_timer: event %p\n", event));
333 scheduleTime = event->schedule_time;
334 period = event->period;
339 event->schedule_time = (int64)scheduleTime;
340 event->period = period;
343 event->hook = hook;
344 event->flags = flags;
355 if (event->schedule_time > cpuData.real_time_offset)
356 event->schedule_time -= cpuData.real_time_offset;
358 event->schedule_time = 0;
361 add_event_to_list(event, &cpuData.events);
362 event->cpu = currentCPU;
365 if (event == cpuData.events)
376 cancel_timer(timer* event)
378 TRACE(("cancel_timer: event %p\n", event));
383 int cpu = event->cpu;
390 if (cpu == event->cpu)
395 cpu = event->cpu;
400 if (event != cpuData.current_event) {
406 if (current == event) {
426 event->cpu = 0xffff;
440 // event so that timer_interrupt() will not reschedule periodic timers.
444 // lock to be held while calling the event hook, we'll have to wait