OpenWrt:libuboxのuloop
2061 ワード
データ構造:
イベントハンドリングlibuboxの中でuloopライブラリの使用libubox-uloop
struct uloop_fd {
uloop_fd_handler cb;
int fd;
bool eof;
bool error;
bool registered;
uint8_t flags;
};
struct uloop_timeout {
struct list_head list;
bool pending;
uloop_timeout_handler cb;
struct timeval time;
};
struct uloop_process {
struct list_head list;
bool pending;
uloop_process_handler cb;
pid_t pid;
};
イベントのコールバック関数:typedef void (*uloop_fd_handler)(struct uloop_fd *u, unsigned int events) //
typedef void (*uloop_timeout_handler)(struct uloop_timeout *t) //
typedef void (*uloop_process_handler)(struct uloop_process *c, int ret) //
イベントフラグ:#define ULOOP_READ (1 << 0)
#define ULOOP_WRITE (1 << 1)
#define ULOOP_EDGE_TRIGGER (1 << 2)
#define ULOOP_BLOCKING (1 << 3)
#define ULOOP_EVENT_MASK (ULOOP_READ | ULOOP_WRITE)
メインフレーム:/**
*
*/
int uloop_init(void)
/**
*
*/
void uloop_run(void)
/**
*
*/
void uloop_done(void)
ディスクリプタイベント:/**
*
*/
int uloop_fd_add(struct uloop_fd *sock, unsigned int flags)
/**
*
*/
int uloop_fd_delete(struct uloop_fd *sock)
タイマーイベント:/**
*
*/
int uloop_timeout_add(struct uloop_timeout *timeout)
/**
* ( ),
*/
int uloop_timeout_set(struct uloop_timeout *timeout, int msecs)
/**
*
*/
int uloop_timeout_cancel(struct uloop_timeout *timeout)
/**
*
*/
int uloop_timeout_remaining(struct uloop_timeout *timeout)
プロセスイベント:/**
*
*/
int uloop_process_add(struct uloop_process *p)
/**
*
*/
int uloop_process_delete(struct uloop_process *p)
参考文献イベントハンドリングlibuboxの中でuloopライブラリの使用libubox-uloop