1*1b85337dSArnaldo Carvalho de Melo #ifndef __API_FD_ARRAY__ 2*1b85337dSArnaldo Carvalho de Melo #define __API_FD_ARRAY__ 3*1b85337dSArnaldo Carvalho de Melo 4*1b85337dSArnaldo Carvalho de Melo #include <stdio.h> 5*1b85337dSArnaldo Carvalho de Melo 6*1b85337dSArnaldo Carvalho de Melo struct pollfd; 7*1b85337dSArnaldo Carvalho de Melo 8*1b85337dSArnaldo Carvalho de Melo struct fdarray { 9*1b85337dSArnaldo Carvalho de Melo int nr; 10*1b85337dSArnaldo Carvalho de Melo int nr_alloc; 11*1b85337dSArnaldo Carvalho de Melo int nr_autogrow; 12*1b85337dSArnaldo Carvalho de Melo struct pollfd *entries; 13*1b85337dSArnaldo Carvalho de Melo }; 14*1b85337dSArnaldo Carvalho de Melo 15*1b85337dSArnaldo Carvalho de Melo void fdarray__init(struct fdarray *fda, int nr_autogrow); 16*1b85337dSArnaldo Carvalho de Melo void fdarray__exit(struct fdarray *fda); 17*1b85337dSArnaldo Carvalho de Melo 18*1b85337dSArnaldo Carvalho de Melo struct fdarray *fdarray__new(int nr_alloc, int nr_autogrow); 19*1b85337dSArnaldo Carvalho de Melo void fdarray__delete(struct fdarray *fda); 20*1b85337dSArnaldo Carvalho de Melo 21*1b85337dSArnaldo Carvalho de Melo int fdarray__add(struct fdarray *fda, int fd, short revents); 22*1b85337dSArnaldo Carvalho de Melo int fdarray__poll(struct fdarray *fda, int timeout); 23*1b85337dSArnaldo Carvalho de Melo int fdarray__filter(struct fdarray *fda, short revents); 24*1b85337dSArnaldo Carvalho de Melo int fdarray__grow(struct fdarray *fda, int extra); 25*1b85337dSArnaldo Carvalho de Melo int fdarray__fprintf(struct fdarray *fda, FILE *fp); 26*1b85337dSArnaldo Carvalho de Melo 27*1b85337dSArnaldo Carvalho de Melo static inline int fdarray__available_entries(struct fdarray *fda) 28*1b85337dSArnaldo Carvalho de Melo { 29*1b85337dSArnaldo Carvalho de Melo return fda->nr_alloc - fda->nr; 30*1b85337dSArnaldo Carvalho de Melo } 31*1b85337dSArnaldo Carvalho de Melo 32*1b85337dSArnaldo Carvalho de Melo #endif /* __API_FD_ARRAY__ */ 33