1 #ifndef ETPAN_THREAD_MANAGER_H
3 #define ETPAN_THREAD_MANAGER_H
5 #include "etpan-thread-manager-types.h"
7 /* ** object creation ** */
9 struct etpan_thread_manager * etpan_thread_manager_new(void);
10 void etpan_thread_manager_free(struct etpan_thread_manager * manager);
12 struct etpan_thread * etpan_thread_new(void);
13 void etpan_thread_free(struct etpan_thread * thread);
15 struct etpan_thread_op * etpan_thread_op_new(void);
16 void etpan_thread_op_free(struct etpan_thread_op * op);
18 /* ** thread creation ** */
20 int etpan_thread_start(struct etpan_thread * thread);
22 void etpan_thread_stop(struct etpan_thread * thread);
23 int etpan_thread_is_stopped(struct etpan_thread * thread);
24 void etpan_thread_join(struct etpan_thread * thread);
27 etpan_thread_manager_get_thread(struct etpan_thread_manager * manager);
29 unsigned int etpan_thread_get_load(struct etpan_thread * thread);
30 void etpan_thread_bind(struct etpan_thread * thread);
31 void etpan_thread_unbind(struct etpan_thread * thread);
32 int etpan_thread_is_bound(struct etpan_thread * thread);
34 /* ** op schedule ** */
36 int etpan_thread_op_schedule(struct etpan_thread * thread,
37 struct etpan_thread_op * op);
39 int etpan_thread_op_cancelled(struct etpan_thread_op * op);
40 void etpan_thread_op_cancel(struct etpan_thread_op * op);
41 void etpan_thread_op_lock(struct etpan_thread_op * op);
42 void etpan_thread_op_unlock(struct etpan_thread_op * op);
44 int etpan_thread_manager_op_schedule(struct etpan_thread_manager * manager,
45 struct etpan_thread_op * op);
47 /* ** manager main loop ** */
49 void etpan_thread_manager_start(struct etpan_thread_manager * manager);
51 void etpan_thread_manager_stop(struct etpan_thread_manager * manager);
52 int etpan_thread_manager_is_stopped(struct etpan_thread_manager * manager);
53 void etpan_thread_manager_join(struct etpan_thread_manager * manager);
55 int etpan_thread_manager_get_fd(struct etpan_thread_manager * manager);
56 void etpan_thread_manager_loop(struct etpan_thread_manager * manager);