struct FDWatchHandle { size_t maxWatchedFds; size_t watchedFdCount; struct pollfd *watchedFds; void **arbitraryData; }; enum FDWatch_EventType { FDWATCH_EVENT_ERR = 0, FDWATCH_EVENT_INP = 1, FDWATCH_EVENT_OUT = 2, FDWATCH_EVENT_HUP = 3 }; int fdwatcher_watch(struct FDWatchHandle *, int (*)(struct FDWatchHandle *, enum FDWatch_EventType, int, void *)); int fdwatcher_initialise(struct FDWatchHandle *, int); int fdwatcher_remove(struct FDWatchHandle *, int); int fdwatcher_add(struct FDWatchHandle *, int, void *);