2017-06-14 11:47:38 +00:00
|
|
|
#ifndef MM_SIGNAL_MGR_H
|
|
|
|
#define MM_SIGNAL_MGR_H
|
|
|
|
|
|
|
|
/*
|
|
|
|
* machinarium.
|
|
|
|
*
|
|
|
|
* cooperative multitasking engine.
|
2020-04-02 11:00:56 +00:00
|
|
|
*/
|
2017-06-14 11:47:38 +00:00
|
|
|
|
2020-04-02 11:00:56 +00:00
|
|
|
typedef struct mm_signalrd mm_signalrd_t;
|
2017-06-14 11:47:38 +00:00
|
|
|
typedef struct mm_signalmgr mm_signalmgr_t;
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
struct mm_signalrd {
|
2017-06-14 11:47:38 +00:00
|
|
|
mm_call_t call;
|
2020-04-02 11:00:56 +00:00
|
|
|
int signal;
|
2017-06-14 11:47:38 +00:00
|
|
|
mm_list_t link;
|
|
|
|
};
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
struct mm_signalmgr {
|
2020-04-02 11:00:56 +00:00
|
|
|
mm_fd_t fd;
|
2017-06-14 11:47:38 +00:00
|
|
|
mm_list_t readers;
|
2020-04-02 11:00:56 +00:00
|
|
|
int readers_count;
|
2017-06-14 11:47:38 +00:00
|
|
|
};
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
int mm_signalmgr_init(mm_signalmgr_t *, mm_loop_t *);
|
|
|
|
void mm_signalmgr_free(mm_signalmgr_t *, mm_loop_t *);
|
|
|
|
int mm_signalmgr_set(mm_signalmgr_t *, sigset_t *, sigset_t *);
|
|
|
|
int mm_signalmgr_wait(mm_signalmgr_t *, uint32_t);
|
2017-06-14 11:47:38 +00:00
|
|
|
|
|
|
|
#endif /* MM_SIGNAL_MGR_H */
|