… | |
… | |
76 | static void * |
76 | static void * |
77 | evthread_proc (void *arg) |
77 | evthread_proc (void *arg) |
78 | { |
78 | { |
79 | loop = ev_loop_new (0); |
79 | loop = ev_loop_new (0); |
80 | |
80 | |
81 | ev_async_init (&tick_watcher, tick_cb); |
|
|
82 | ev_set_priority (&tick_watcher, 1); |
|
|
83 | ev_async_start (EV_DEFAULT, &tick_watcher); |
|
|
84 | |
|
|
85 | ev_periodic_init (&cede_watcher, cede_cb, 0, TICK / TICK_CYCLES, 0); |
81 | ev_periodic_init (&cede_watcher, cede_cb, 0, TICK / TICK_CYCLES, 0); |
86 | ev_periodic_start (loop, &cede_watcher); |
82 | ev_periodic_start (loop, &cede_watcher); |
87 | |
83 | |
88 | ev_loop (loop, 0); |
84 | ev_loop (loop, 0); |
89 | |
85 | |
… | |
… | |
91 | } |
87 | } |
92 | |
88 | |
93 | void evthread_start () |
89 | void evthread_start () |
94 | { |
90 | { |
95 | I_EV_API ("evthread"); |
91 | I_EV_API ("evthread"); |
|
|
92 | |
|
|
93 | ev_async_init (&tick_watcher, tick_cb); |
|
|
94 | ev_set_priority (&tick_watcher, 1); |
|
|
95 | ev_async_start (EV_DEFAULT, &tick_watcher); |
|
|
96 | |
96 | evthread.start (evthread_proc); |
97 | evthread.start (evthread_proc); |
97 | } |
98 | } |
98 | |
99 | |
99 | |
100 | |
100 | |
101 | |