X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fmainloop.h;h=aca8914fce9671fb27c3e30457c307410ca65013;hb=b35c2205c744eaf557d64280b5fe98c2cb86f4ed;hp=a8626f0345c2672ef20883cb2edd2e2b6b05d83b;hpb=c29017ebe753d461771cc7a1f1878c7920ea23ea;p=libucw.git diff --git a/lib/mainloop.h b/lib/mainloop.h index a8626f03..aca8914f 100644 --- a/lib/mainloop.h +++ b/lib/mainloop.h @@ -71,10 +71,17 @@ void file_close_all(void); /* Close all known main_file's; frequently used bef 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); @@ -84,7 +91,7 @@ struct main_process { cnode n; int pid; /* Process id (0=not running) */ int status; /* Exit status (-1=fork failed) */ - byte status_msg[EXIT_STATUS_MSG_SIZE]; + char status_msg[EXIT_STATUS_MSG_SIZE]; void (*handler)(struct main_process *mp); /* [*] Called when the process exits; process_del done automatically */ void *data; /* [*] For use by the handler */ }; @@ -96,7 +103,7 @@ int process_fork(struct main_process *mp); /* The main loop */ void main_init(void); -int main_loop(void); +void main_loop(void); void main_debug(void); #endif