MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / timer_enable

Function timer_enable

src/pcem/timer.cpp:12–64  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10static pc_timer_t *timer_head = NULL;
11
12void timer_enable(pc_timer_t *timer)
13{
14 pc_timer_t *timer_node = timer_head;
15
16// pclog("timer->enable %p %i\n", timer, timer->enabled);
17 if (timer->enabled)
18 timer_disable(timer);
19
20 if (timer->next || timer->prev)
21 fatal("timer_enable - timer->next\n");
22
23 timer->enabled = 1;
24
25 /*List currently empty - add to head*/
26 if (!timer_head)
27 {
28 timer_head = timer;
29 timer->next = timer->prev = NULL;
30 timer_target = timer_head->ts_integer;
31 return;
32 }
33
34 timer_node = timer_head;
35
36 while (1)
37 {
38 /*Timer expires before timer_node. Add to list in front of timer_node*/
39 if (TIMER_LESS_THAN(timer, timer_node))
40 {
41 timer->next = timer_node;
42 timer->prev = timer_node->prev;
43 timer_node->prev = timer;
44 if (timer->prev)
45 timer->prev->next = timer;
46 else
47 {
48 timer_head = timer;
49 timer_target = timer_head->ts_integer;
50 }
51 return;
52 }
53
54 /*timer_node is last in the list. Add timer to end of list*/
55 if (!timer_node->next)
56 {
57 timer_node->next = timer;
58 timer->prev = timer_node;
59 return;
60 }
61
62 timer_node = timer_node->next;
63 }
64}
65void timer_disable(pc_timer_t *timer)
66{
67// pclog("timer->disable %p\n", timer);

Callers 2

timer_advance_u64Function · 0.85
timer_set_delay_u64Function · 0.85

Calls 2

timer_disableFunction · 0.85
fatalFunction · 0.85

Tested by

no test coverage detected