|
From: | Avi Kivity |
Subject: | Re: [Qemu-devel] [PATCH 2/7] iohandlers: Introduce a new API |
Date: | Tue, 22 Feb 2011 15:28:02 +0200 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc14 Lightning/1.0b3pre Thunderbird/3.1.7 |
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.Drop the opaque, instead put the IOHandler in there (or maybe the CharDev?) and use container_of().
+ +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. -- error compiling committee.c: too many arguments to function
[Prev in Thread] | Current Thread | [Next in Thread] |