On (Tue) 22 Feb 2011 [15:28:02], Avi Kivity wrote:
> On 02/22/2011 12:18 PM, Amit Shah wrote:
> >Introduce a new iohandler api that doesn't have multiple callbacks.
> >Instead, a single callback and a mask of events that got set will be
> >passed on to the handler. This will ease our transition to a poll()
> >interface instead of the current select() that happens on the fds.
> >
> >
> >+
> >+/* iohandler masks */
> >+#define IOH_MASK_CAN_READ (1U<< 0)
> >+#define IOH_MASK_READ (1U<< 1)
> >+#define IOH_MASK_WRITE (1U<< 2)
> >+
> >+typedef int IOAllHandler(void *opaque, unsigned int mask);
>
> Strange name.
IOHandler is taken. I plan to switch back to IOHandler when the older
one is removed.
> Drop the opaque, instead put the IOHandler in there (or maybe the
> CharDev?) and use container_of().
Can put the IOHandler there; the chardev is just one user of
iohandlers, and there are others.
> >+
> >+int assign_iohandler(int fd, IOAllHandler *handler, unsigned int mask,
> >+ void *opaque);
> >+int remove_iohandler(int fd);
> >+int update_fd_mask(int fd, unsigned int mask);
> >+int get_fd_mask(int fd, unsigned int *mask);
> >+
>
> iohandler_init(IOHandler *ioh, int fd, IOEventHandler *handler,
> unsigned mask)
> iohandler_del(IOHandler *ioh)
> iohandler_set_event_mask(IOHandler *ioh, unsigned mask)
> iohandler_event_mask(IOHandler *ioh)
>
> No opaques, use an object as a key so you don't have to search for it.
Thanks!
Amit