郑州网站建设代理商,什么公司可以做网站等级保护,长春建设厅官方网站,网页设计动态页面想看源码#xff0c;宏太多#xff0c;看着累#xff0c;宏展开#xff0c;再看#xff0c;功力时间不够#xff0c;先放下 放上宏展开后的代码。 libev4.20 展开方示为 ./configure 修改makefile文件#xff0c;字符串 替换CC为 CPP 注意要把基础的CC定义保留 make mv …想看源码宏太多看着累宏展开再看功力时间不够先放下 放上宏展开后的代码。 libev4.20 展开方示为 ./configure 修改makefile文件字符串 替换CC为 CPP 注意要把基础的CC定义保留 make mv ev.o ev.c mv event.o event.c make clean 修改makefile文件字符串替换CPP-》CC 注意要把基础的CPP定义保留 宏展开后#号注释的代码可以修改CPP的定义 加个参数 ev.c,event.c 及为展开后的代码 测试可编译通过 附ev.c部分代码 struct ev_loop;
enum {EV_UNDEF (int)0xFFFFFFFF,EV_NONE 0x00,EV_READ 0x01,EV_WRITE 0x02,EV__IOFDSET 0x80,EV_IO EV_READ,EV_TIMER 0x00000100,EV_TIMEOUT EV_TIMER,EV_PERIODIC 0x00000200,EV_SIGNAL 0x00000400,EV_CHILD 0x00000800,EV_STAT 0x00001000,EV_IDLE 0x00002000,EV_PREPARE 0x00004000,EV_CHECK 0x00008000,EV_EMBED 0x00010000,EV_FORK 0x00020000,EV_CLEANUP 0x00040000,EV_ASYNC 0x00080000,EV_CUSTOM 0x01000000,EV_ERROR (int)0x80000000
};
typedef struct ev_watcher
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_watcher *w, int revents);
} ev_watcher;typedef struct ev_watcher_list
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_watcher_list *w, int revents);struct ev_watcher_list *next;
} ev_watcher_list;typedef struct ev_watcher_time
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_watcher_time *w, int revents);ev_tstamp at;
} ev_watcher_time;typedef struct ev_io
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_io *w, int revents);struct ev_watcher_list *next;int fd;int events;
} ev_io;typedef struct ev_timer
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_timer *w, int revents);ev_tstamp at;ev_tstamp repeat;
} ev_timer;typedef struct ev_periodic
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_periodic *w, int revents); ev_tstamp at;ev_tstamp offset;ev_tstamp interval;ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) ;
} ev_periodic;typedef struct ev_signal
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_signal *w, int revents);struct ev_watcher_list *next;int signum;
} ev_signal;typedef struct ev_child
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_child *w, int revents);struct ev_watcher_list *next;int flags;int pid;int rpid;int rstatus;
} ev_child;typedef struct stat ev_statdata;typedef struct ev_stat
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_stat *w, int revents);struct ev_watcher_list *next;ev_timer timer;ev_tstamp interval;const char *path;ev_statdata prev;ev_statdata attr;int wd;
} ev_stat;typedef struct ev_idle
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_idle *w, int revents);
} ev_idle;typedef struct ev_prepare
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_prepare *w, int revents);
} ev_prepare;typedef struct ev_check
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_check *w, int revents);
} ev_check;typedef struct ev_fork
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_fork *w, int revents);
} ev_fork;typedef struct ev_cleanup
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_cleanup *w, int revents);
} ev_cleanup;typedef struct ev_embed
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_embed *w, int revents);struct ev_loop *other;ev_io io;ev_prepare prepare;ev_check check;ev_timer timer;ev_periodic periodic;ev_idle idle;ev_fork fork;ev_cleanup cleanup;} ev_embed;typedef struct ev_async
{int active; int pending; int priority; void *data; void (*cb)(struct ev_loop *loop, struct ev_async *w, int revents);sig_atomic_t volatile sent;
} ev_async;union ev_any_watcher
{struct ev_watcher w;struct ev_watcher_list wl;struct ev_io io;struct ev_timer timer;struct ev_periodic periodic;struct ev_signal signal;struct ev_child child;struct ev_stat stat;struct ev_idle idle;struct ev_prepare prepare;struct ev_check check;struct ev_fork fork;struct ev_cleanup cleanup;struct ev_embed embed;struct ev_async async;};enum {EVFLAG_AUTO 0x00000000U,EVFLAG_NOENV 0x01000000U,EVFLAG_FORKCHECK 0x02000000U,EVFLAG_NOINOTIFY 0x00100000U,EVFLAG_NOSIGFD 0,EVFLAG_SIGNALFD 0x00200000U,EVFLAG_NOSIGMASK 0x00400000U
};enum {EVBACKEND_SELECT 0x00000001U,EVBACKEND_POLL 0x00000002U,EVBACKEND_EPOLL 0x00000004U,EVBACKEND_KQUEUE 0x00000008U,EVBACKEND_DEVPOLL 0x00000010U,EVBACKEND_PORT 0x00000020U,EVBACKEND_ALL 0x0000003FU,EVBACKEND_MASK 0x0000FFFFU
};extern int ev_version_major (void) ;
extern int ev_version_minor (void) ;extern unsigned int ev_supported_backends (void) ;
extern unsigned int ev_recommended_backends (void) ;
extern unsigned int ev_embeddable_backends (void) ;extern ev_tstamp ev_time (void) ;
extern void ev_sleep (ev_tstamp delay) ;extern void ev_set_allocator (void *(*cb)(void *ptr, long size) ) ;extern void ev_set_syserr_cb (void (*cb)(const char *msg) ) ;extern struct ev_loop *ev_default_loop (unsigned int flags ) ;static inline struct ev_loop *
ev_default_loop_uc_ (void)
{extern struct ev_loop *ev_default_loop_ptr;return ev_default_loop_ptr;
}static inline int
ev_is_default_loop (struct ev_loop *loop)
{return loop ev_default_loop_uc_ ();
}extern struct ev_loop *ev_loop_new (unsigned int flags ) ;static inline void
idle_reify (struct ev_loop *loop)
{if (__builtin_expect ((!!(((loop)-idleall))),(0))){int pri;for (pri ((((0x7f) 4) ? 2 : 0) - (((0x7f) 4) ? -2 : 0) 1); pri--; ){if (((loop)-pendingcnt) [pri])break;if (((loop)-idlecnt) [pri]){queue_events (loop, (W *)((loop)-idles) [pri], ((loop)-idlecnt) [pri], EV_IDLE);break;}}}
}static inline void
timers_reify (struct ev_loop *loop)
{do { } while (0);if (((loop)-timercnt) (((loop)-timers) [(4 - 1)]).at ((loop)-mn_now)){do{ev_timer *w (ev_timer *)(((loop)-timers) [(4 - 1)]).w;if (w-repeat){((WT)(w))-at w-repeat;if (((WT)(w))-at ((loop)-mn_now))((WT)(w))-at ((loop)-mn_now);(__builtin_expect(!((libev: negative ev_timer repeat value found while processing timers, w-repeat 0.)), 0) ? __assert_rtn(__func__, ev.c, 3207, (\libev: negative ev_timer repeat value found while processing timers\, w-repeat 0.)) : (void)0);(((loop)-timers) [(4 - 1)]).at (((loop)-timers) [(4 - 1)]).w-at;downheap (((loop)-timers), ((loop)-timercnt), (4 - 1));}elseev_timer_stop (loop, w);do { } while (0);feed_reverse (loop, (W)w);}while (((loop)-timercnt) (((loop)-timers) [(4 - 1)]).at ((loop)-mn_now));feed_reverse_done (loop, EV_TIMER);}
}static void __attribute__ ((__noinline__))
periodic_recalc (struct ev_loop *loop, ev_periodic *w)
{ev_tstamp interval w-interval 0.0001220703125 ? w-interval : 0.0001220703125;ev_tstamp at w-offset interval * floor ((((loop)-ev_rt_now) - w-offset) / interval);while (at ((loop)-ev_rt_now)){ev_tstamp nat at w-interval;if (__builtin_expect ((!!(nat at)),(0))){at ((loop)-ev_rt_now);break;}at nat;}((WT)(w))-at at;
}static inline void
periodics_reify (struct ev_loop *loop)
{do { } while (0);while (((loop)-periodiccnt) (((loop)-periodics) [(4 - 1)]).at ((loop)-ev_rt_now)){do{ev_periodic *w (ev_periodic *)(((loop)-periodics) [(4 - 1)]).w;if (w-reschedule_cb){((WT)(w))-at w-reschedule_cb (w, ((loop)-ev_rt_now));(__builtin_expect(!((libev: ev_periodic reschedule callback returned time in the past, ((WT)(w))-at ((loop)-ev_rt_now))), 0) ? __assert_rtn(__func__, ev.c, 3269, (\libev: ev_periodic reschedule callback returned time in the past\, ev_at (w) ev_rt_now)) : (void)0);(((loop)-periodics) [(4 - 1)]).at (((loop)-periodics) [(4 - 1)]).w-at;downheap (((loop)-periodics), ((loop)-periodiccnt), (4 - 1));}else if (w-interval){periodic_recalc (loop, w);(((loop)-periodics) [(4 - 1)]).at (((loop)-periodics) [(4 - 1)]).w-at;downheap (((loop)-periodics), ((loop)-periodiccnt), (4 - 1));}elseev_periodic_stop (loop, w);do { } while (0);feed_reverse (loop, (W)w);}while (((loop)-periodiccnt) (((loop)-periodics) [(4 - 1)]).at ((loop)-ev_rt_now));feed_reverse_done (loop, EV_PERIODIC);}
}static void __attribute__ ((__noinline__))
periodics_reschedule (struct ev_loop *loop)
{int i;for (i (4 - 1); i ((loop)-periodiccnt) (4 - 1); i){ev_periodic *w (ev_periodic *)(((loop)-periodics) [i]).w;if (w-reschedule_cb)((WT)(w))-at w-reschedule_cb (w, ((loop)-ev_rt_now));else if (w-interval)periodic_recalc (loop, w);(((loop)-periodics) [i]).at (((loop)-periodics) [i]).w-at;}reheap (((loop)-periodics), ((loop)-periodiccnt));
}static void __attribute__ ((__noinline__))
timers_reschedule (struct ev_loop *loop, ev_tstamp adjust)
{int i;for (i 0; i ((loop)-timercnt); i){ANHE *he ((loop)-timers) i (4 - 1);(*he).w-at adjust;(*he).at (*he).w-at;}
}static inline void
time_update (struct ev_loop *loop, ev_tstamp max_block)
{{((loop)-ev_rt_now) ev_time ();if (__builtin_expect ((!!(((loop)-mn_now) ((loop)-ev_rt_now) || ((loop)-ev_rt_now) ((loop)-mn_now) max_block 1.)),(0))){timers_reschedule (loop, ((loop)-ev_rt_now) - ((loop)-mn_now));periodics_reschedule (loop);}((loop)-mn_now) ((loop)-ev_rt_now);}
} View Code 还没看以后可能也不会看了转载于:https://www.cnblogs.com/zihunqingxin/p/5027350.html