* of the GNU Lesser General Public License.
*/
+#ifndef _UCW_MAINLOOP_H
+#define _UCW_MAINLOOP_H
+
#include "lib/clists.h"
typedef s64 timestamp_t; /* We measure time in milliseconds */
void timer_add(struct main_timer *tm, timestamp_t expires); /* Can modify a running timer, too */
void timer_del(struct main_timer *tm);
+void main_get_time(void); /* Refresh main_now */
+
/* Files to poll */
struct main_file {
struct main_hook {
cnode n;
- int (*handler)(struct main_hook *ho); /* [*] Hook function; returns 1 if should be called again */
+ int (*handler)(struct main_hook *ho); /* [*] Hook function; returns HOOK_xxx */
void *data; /* [*] For use by the handler */
};
+enum main_hook_return {
+ HOOK_IDLE, /* Call again when the main loop becomes idle again */
+ HOOK_RETRY, /* Call again as soon as possible */
+ HOOK_DONE = -1, /* Shut down the main loop if all hooks return this value */
+ HOOK_SHUTDOWN = -2 /* Shut down the main loop immediately */
+};
+
void hook_add(struct main_hook *ho);
void hook_del(struct main_hook *ho);
void main_init(void);
void main_loop(void);
void main_debug(void);
+
+#endif