亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

libev 中 ev_loop 結構體中的成員變量

2024-06-28 13:23:26
字體:
來源:轉載
供稿:網友
libev 中 ev_loop 結構體中的成員變量

1、ev_loop是libev用來描述事件循環的結構體。在libev中的定義比較繞,這里把它摘抄出來,做下注釋,方便學習。libev的定義如下

struct ev_loop{  ev_tstamp ev_rt_now;  #define ev_rt_now ((loop)->ev_rt_now)  #define VAR(name,decl) decl;    #include "ev_vars.h"  #undef VAR};#include "ev_wrap.h"static struct ev_loop default_loop_struct;EV_API_DECL struct ev_loop *ev_default_loop_ptr = 0;

ev_tstamp 是double類型,是一個時間事件的計數類型,這里使用define來定義ev_rt_now為((loop)->ev_rt_now),程序里可以直接使用ev_rt_now,后邊結構體的定義都是這樣,這可能是作者的一些編程技巧。

#define VAR(name,decl) decl; #define VARx(type,name) VAR(name, type name)

這兩行表示了一個意思,用type來定義name,就是等于 type name;如 int backend;相當于在結構體中定義了一個變量。具體變量在ev_vars.h頭文件中定義。

ev_warp.h文件的作用和#define ev_rt_now ((loop)->ev_rt_now) 相同。具體兩個文件代碼如下:

#define VARx(type,name) VAR(name, type name)VARx(ev_tstamp, now_floor) /* last time we refreshed rt_time */VARx(ev_tstamp, mn_now)    /* monotonic clock "now" */VARx(ev_tstamp, rtmn_diff) /* difference realtime - monotonic time *//* for reverse feeding of events */VARx(W *, rfeeds)VARx(int, rfeedmax)VARx(int, rfeedcnt)VAR (pendings, ANPENDING *pendings [NUMPRI])VAR (pendingmax, int pendingmax [NUMPRI])VAR (pendingcnt, int pendingcnt [NUMPRI])VARx(int, pendingpri) /* highest priority currently pending */VARx(ev_prepare, pending_w) /* dummy pending watcher */VARx(ev_tstamp, io_blocktime)VARx(ev_tstamp, timeout_blocktime)VARx(int, backend)VARx(int, activecnt) /* total number of active events ("refcount") */VARx(EV_ATOMIC_T, loop_done)  /* signal by ev_break */VARx(int, backend_fd)VARx(ev_tstamp, backend_mintime) /* assumed typical timer resolution */VAR (backend_modify, void (*backend_modify)(EV_P_ int fd, int oev, int nev))VAR (backend_poll  , void (*backend_poll)(EV_P_ ev_tstamp timeout))VARx(ANFD *, anfds)VARx(int, anfdmax)VAR (evpipe, int evpipe [2])VARx(ev_io, pipe_w)VARx(EV_ATOMIC_T, pipe_write_wanted)VARx(EV_ATOMIC_T, pipe_write_skipped)#if !defined(_WIN32) || EV_GENWRAPVARx(pid_t, curpid)#endifVARx(char, postfork)  /* true if we need to recreate kernel state after fork */#if EV_USE_SELECT || EV_GENWRAPVARx(void *, vec_ri)VARx(void *, vec_ro)VARx(void *, vec_wi)VARx(void *, vec_wo)#if defined(_WIN32) || EV_GENWRAPVARx(void *, vec_eo)#endifVARx(int, vec_max)#endif#if EV_USE_POLL || EV_GENWRAPVARx(struct pollfd *, polls)VARx(int, pollmax)VARx(int, pollcnt)VARx(int *, pollidxs) /* maps fds into structure indices */VARx(int, pollidxmax)#endif#if EV_USE_EPOLL || EV_GENWRAPVARx(struct epoll_event *, epoll_events)VARx(int, epoll_eventmax)VARx(int *, epoll_eperms)VARx(int, epoll_epermcnt)VARx(int, epoll_epermmax)#endif#if EV_USE_KQUEUE || EV_GENWRAPVARx(pid_t, kqueue_fd_pid)VARx(struct kevent *, kqueue_changes)VARx(int, kqueue_changemax)VARx(int, kqueue_changecnt)VARx(struct kevent *, kqueue_events)VARx(int, kqueue_eventmax)#endif#if EV_USE_PORT || EV_GENWRAPVARx(struct port_event *, port_events)VARx(int, port_eventmax)#endif#if EV_USE_IOCP || EV_GENWRAPVARx(HANDLE, iocp)#endifVARx(int *, fdchanges)VARx(int, fdchangemax)VARx(int, fdchangecnt)VARx(ANHE *, timers)VARx(int, timermax)VARx(int, timercnt)#if EV_PERIODIC_ENABLE || EV_GENWRAPVARx(ANHE *, periodics)VARx(int, periodicmax)VARx(int, periodiccnt)#endif#if EV_IDLE_ENABLE || EV_GENWRAPVAR (idles, ev_idle **idles [NUMPRI])VAR (idlemax, int idlemax [NUMPRI])VAR (idlecnt, int idlecnt [NUMPRI])#endifVARx(int, idleall) /* total number */VARx(struct ev_prepare **, prepares)VARx(int, preparemax)VARx(int, preparecnt)VARx(struct ev_check **, checks)VARx(int, checkmax)VARx(int, checkcnt)#if EV_FORK_ENABLE || EV_GENWRAPVARx(struct ev_fork **, forks)VARx(int, forkmax)VARx(int, forkcnt)#endif#if EV_CLEANUP_ENABLE || EV_GENWRAPVARx(struct ev_cleanup **, cleanups)VARx(int, cleanupmax)VARx(int, cleanupcnt)#endif#if EV_ASYNC_ENABLE || EV_GENWRAPVARx(EV_ATOMIC_T, async_pending)VARx(struct ev_async **, asyncs)VARx(int, asyncmax)VARx(int, asynccnt)#endif#if EV_USE_INOTIFY || EV_GENWRAPVARx(int, fs_fd)VARx(ev_io, fs_w)VARx(char, fs_2625) /* whether we are running in linux 2.6.25 or newer */VAR (fs_hash, ANFS fs_hash [EV_INOTIFY_HASHSIZE])#endifVARx(EV_ATOMIC_T, sig_pending)#if EV_USE_SIGNALFD || EV_GENWRAPVARx(int, sigfd)VARx(ev_io, sigfd_w)VARx(sigset_t, sigfd_set)#endifVARx(unsigned int, origflags) /* original loop flags */#if EV_FEATURE_API || EV_GENWRAPVARx(unsigned int, loop_count) /* total number of loop iterations/blocks */VARx(unsigned int, loop_depth) /* #ev_run enters - #ev_run leaves */VARx(void *, userdata)/* C++ doesn't support the ev_loop_callback typedef here. stinks. */VAR (release_cb, void (*release_cb)(EV_P) EV_THROW)VAR (acquire_cb, void (*acquire_cb)(EV_P) EV_THROW)VAR (invoke_cb , ev_loop_callback invoke_cb)#endif#undef VARx

 

#define acquire_cb ((loop)->acquire_cb)#define activecnt ((loop)->activecnt)#define anfdmax ((loop)->anfdmax)#define anfds ((loop)->anfds)#define async_pending ((loop)->async_pending)#define asynccnt ((loop)->asynccnt)#define asyncmax ((loop)->asyncmax)#define asyncs ((loop)->asyncs)#define backend ((loop)->backend)#define backend_fd ((loop)->backend_fd)#define backend_mintime ((loop)->backend_mintime)#define backend_modify ((loop)->backend_modify)#define backend_poll ((loop)->backend_poll)#define checkcnt ((loop)->checkcnt)#define checkmax ((loop)->checkmax)#define checks ((loop)->checks)#define cleanupcnt ((loop)->cleanupcnt)#define cleanupmax ((loop)->cleanupmax)#define cleanups ((loop)->cleanups)#define curpid ((loop)->curpid)#define epoll_epermcnt ((loop)->epoll_epermcnt)#define epoll_epermmax ((loop)->epoll_epermmax)#define epoll_eperms ((loop)->epoll_eperms)#define epoll_eventmax ((loop)->epoll_eventmax)#define epoll_events ((loop)->epoll_events)#define evpipe ((loop)->evpipe)#define fdchangecnt ((loop)->fdchangecnt)#define fdchangemax ((loop)->fdchangemax)#define fdchanges ((loop)->fdchanges)#define forkcnt ((loop)->forkcnt)#define forkmax ((loop)->forkmax)#define forks ((loop)->forks)#define fs_2625 ((loop)->fs_2625)#define fs_fd ((loop)->fs_fd)#define fs_hash ((loop)->fs_hash)#define fs_w ((loop)->fs_w)#define idleall ((loop)->idleall)#define idlecnt ((loop)->idlecnt)#define idlemax ((loop)->idlemax)#define idles ((loop)->idles)#define invoke_cb ((loop)->invoke_cb)#define io_blocktime ((loop)->io_blocktime)#define iocp ((loop)->iocp)#define kqueue_changecnt ((loop)->kqueue_changecnt)#define kqueue_changemax ((loop)->kqueue_changemax)#define kqueue_changes ((loop)->kqueue_changes)#define kqueue_eventmax ((loop)->kqueue_eventmax)#define kqueue_events ((loop)->kqueue_events)#define kqueue_fd_pid ((loop)->kqueue_fd_pid)#define loop_count ((loop)->loop_count)#define loop_depth ((loop)->loop_depth)#define loop_done ((loop)->loop_done)#define mn_now ((loop)->mn_now)#define now_floor ((loop)->now_floor)#define origflags ((loop)->origflags)#define pending_w ((loop)->pending_w)#define pendingcnt ((loop)->pendingcnt)#define pendingmax ((loop)->pendingmax)#define pendingpri ((loop)->pendingpri)#define pendings ((loop)->pendings)#define periodiccnt ((loop)->periodiccnt)#define periodicmax ((loop)->periodicmax)#define periodics ((loop)->periodics)#define pipe_w ((loop)->pipe_w)#define pipe_write_skipped ((loop)->pipe_write_skipped)#define pipe_write_wanted ((loop)->pipe_write_wanted)#define pollcnt ((loop)->pollcnt)#define pollidxmax ((loop)->pollidxmax)#define pollidxs ((loop)->pollidxs)#define pollmax ((loop)->pollmax)#define polls ((loop)->polls)#define port_eventmax ((loop)->port_eventmax)#define port_events ((loop)->port_events)#define postfork ((loop)->postfork)#define preparecnt ((loop)->preparecnt)#define preparemax ((loop)->preparemax)#define prepares ((loop)->prepares)#define release_cb ((loop)->release_cb)#define rfeedcnt ((loop)->rfeedcnt)#define rfeedmax ((loop)->rfeedmax)#define rfeeds ((loop)->rfeeds)#define rtmn_diff ((loop)->rtmn_diff)#define sig_pending ((loop)->sig_pending)#define sigfd ((loop)->sigfd)#define sigfd_set ((loop)->sigfd_set)#define sigfd_w ((loop)->sigfd_w)#define timeout_blocktime ((loop)->timeout_blocktime)#define timercnt ((loop)->timercnt)#define timermax ((loop)->timermax)#define timers ((loop)->timers)#define userdata ((loop)->userdata)#define vec_eo ((loop)->vec_eo)#define vec_max ((loop)->vec_max)#define vec_ri ((loop)->vec_ri)#define vec_ro ((loop)->vec_ro)#define vec_wi ((loop)->vec_wi)#define vec_wo ((loop)->vec_wo)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品福利| 亚洲美女性生活视频| 亚洲国产精品va在线看黑人| 国产精品福利在线观看网址| 亚洲精品国产拍免费91在线| 国产性猛交xxxx免费看久久| 久久久久久久久电影| 日本国产精品视频| 国产一区二区香蕉| 久久久久久中文字幕| 欧美性资源免费| 国产日韩综合一区二区性色av| 亚洲在线视频福利| 欧美成年人在线观看| 成人夜晚看av| 亚洲精品电影网| 不卡毛片在线看| 国产精品丝袜白浆摸在线| 日韩在线中文字幕| 久久久国产一区二区三区| 在线播放国产一区中文字幕剧情欧美| 久久中文字幕国产| 亚洲国产精品久久久| 免费av在线一区| 欧美亚洲国产日本| 日韩欧美高清视频| 91精品视频免费观看| 秋霞av国产精品一区| 久久久最新网址| 亚洲аv电影天堂网| 亚洲精品xxx| 精品国产一区二区在线| 中文字幕亚洲综合| 日韩国产一区三区| 色偷偷88888欧美精品久久久| 日本精品久久电影| 亚洲欧美日韩一区二区三区在线| 国产一区二区三区在线观看网站| 欧美成人免费全部| 成人福利免费观看| 色偷偷88888欧美精品久久久| 国产精品午夜视频| 欧美尺度大的性做爰视频| 日韩一区二区欧美| 欧美第一黄色网| 欧美日韩性生活视频| 久久综合电影一区| 成人免费观看49www在线观看| 国产精选久久久久久| 国产欧美一区二区| 亚洲欧美福利视频| 91国内在线视频| 亚洲无线码在线一区观看| 久久久久久久电影一区| 欧美亚洲另类激情另类| 欧美日韩国产一区中文午夜| 久久91亚洲人成电影网站| 亚洲xxxx妇黄裸体| 欧美性猛交99久久久久99按摩| 北条麻妃在线一区二区| 欧美激情视频网| 中文字幕亚洲欧美一区二区三区| 国产区精品在线观看| 97超碰蝌蚪网人人做人人爽| 亚洲老头同性xxxxx| 亚洲中国色老太| 九九精品在线视频| 中文字幕日韩有码| 国产一区二区三区在线| 国产免费观看久久黄| 91久久久久久久一区二区| 欧美成人免费观看| 欧美成人网在线| 欧美精品在线免费| 国产精品自拍视频| 欧美性受xxx| 亚洲变态欧美另类捆绑| 亚洲精品wwwww| 欧美成人自拍视频| 国产美女精品免费电影| 川上优av一区二区线观看| 欧美成人午夜剧场免费观看| 久久免费视频这里只有精品| 国产精品一区二区久久久久| 在线成人一区二区| 国产精品电影网站| 日韩免费电影在线观看| 欧美日韩免费在线观看| xxxxx91麻豆| 国产精品999| 欧美丰满片xxx777| 欧美黑人极品猛少妇色xxxxx| 另类色图亚洲色图| 欧美精品video| 日韩精品视频免费专区在线播放| 久久人人爽国产| 日韩精品在线观看一区二区| 91av在线免费观看| 亚洲男人的天堂网站| 久久亚洲精品中文字幕冲田杏梨| 永久免费毛片在线播放不卡| 欧美激情免费在线| 欧美激情videos| 久久精品99久久香蕉国产色戒| 欧美小视频在线观看| 在线观看不卡av| 国产午夜精品视频| 精品久久久一区二区| 亚洲欧美日韩视频一区| 欧美性猛交丰臀xxxxx网站| 日韩激情av在线免费观看| 精品国产欧美一区二区三区成人| 亚洲人成绝费网站色www| 97精品久久久| 亚洲缚视频在线观看| 日韩在线免费观看视频| 国外成人性视频| 亚洲男人天堂古典| 欧美日韩国产一中文字不卡| 亚洲国产成人91精品| 日韩欧美大尺度| 成人日韩av在线| 97超碰蝌蚪网人人做人人爽| 久久中文字幕国产| 日韩中文有码在线视频| 国产一区二区三区在线观看视频| 久久噜噜噜精品国产亚洲综合| 精品激情国产视频| 欧美大片在线看| 91欧美精品成人综合在线观看| 欧美三级免费观看| 亚洲性无码av在线| 欧美在线视频一区二区| 亚洲视频精品在线| 欧美精品在线观看91| 欧美专区日韩视频| 久久久综合av| 日韩精品免费在线视频| 91美女片黄在线观| 久久久久北条麻妃免费看| 亚洲国产97在线精品一区| 国产精品美女av| 欧美俄罗斯乱妇| 97精品久久久中文字幕免费| 国产日韩综合一区二区性色av| 欧美激情久久久| 亚洲精品国产综合区久久久久久久| 欧美激情一区二区久久久| 成人做爰www免费看视频网站| 在线视频欧美日韩| 亚洲黄页视频免费观看| 奇米影视亚洲狠狠色| 欧美黑人性猛交| 91老司机精品视频| 亚洲综合在线中文字幕| 色爱精品视频一区| 久久777国产线看观看精品| 国产日韩欧美中文在线播放| 中文字幕日韩电影| 色综合久久久888| 中文字幕av日韩| 57pao成人永久免费视频| 欧美福利视频在线| 欧美日韩午夜视频在线观看|