您的位置:首页 > 编程语言

net-snmp代码分析之fd_event_manager.c

2010-06-27 22:36 429 查看
fd_event_manager.c模块主要作用管理读、写、异常文件描述符。

目录/net-snmp-5.4.2.1/snmplib/fd_event_manager.c



用于存储三种不同类型的描述符

int external_readfd[NUM_EXTERNAL_FDS], external_readfdlen = 0;
int external_writefd[NUM_EXTERNAL_FDS], external_writefdlen = 0;
int external_exceptfd[NUM_EXTERNAL_FDS], external_exceptfdlen = 0;



用于存储三种描述符对应的处理函数
void (*external_readfdfunc[NUM_EXTERNAL_FDS]) (int, void *);
void (*external_writefdfunc[NUM_EXTERNAL_FDS]) (int, void *);
void (*external_exceptfdfunc[NUM_EXTERNAL_FDS]) (int, void *);

存储需处理数据

void *external_readfd_data[NUM_EXTERNAL_FDS];
void *external_writefd_data[NUM_EXTERNAL_FDS];
void *external_exceptfd_data[NUM_EXTERNAL_FDS];



static int external_fd_unregistered;



相当于三个初始化函数,将函数中的参数分别赋给上述数据结构。

int
register_readfd(int fd, void (*func) (int, void *), void *data)

int
register_writefd(int fd, void (*func) (int, void *), void *data)

int
register_exceptfd(int fd, void (*func) (int, void *), void *data)





将指定的文件描述符从数据结构中删除

int
unregister_readfd(int fd)

int
unregister_writefd(int fd)

int
unregister_exceptfd(int fd)



将注册在数据结构的文件描述符添加到对应的文件描述符集中

void netsnmp_external_event_info(int *numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)

测试在数据结构的文件描述符添加到对应的文件描述符集中是否有在三种描述符集中并调用对应的函数进行处理。

void netsnmp_dispatch_external_events(int *count, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: