xref: /openbmc/linux/tools/lib/api/fd/array.h (revision 1b85337d0685d1dc5a6f9061434ba4316d69f3b8)
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