main-loop: Drop qemu_set_fd_handler2
All users are converted to qemu_set_fd_handler now, drop qemu_set_fd_handler2 and IOHandlerRecord.fd_read_poll. Signed-off-by: Fam Zheng <famz@redhat.com> Message-id: 1433400324-7358-9-git-send-email-famz@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									82e1cc4bf9
								
							
						
					
					
						commit
						6484e42247
					
				| 
						 | 
				
			
			@ -241,7 +241,7 @@ bool aio_dispatch(AioContext *ctx);
 | 
			
		|||
bool aio_poll(AioContext *ctx, bool blocking);
 | 
			
		||||
 | 
			
		||||
/* Register a file descriptor and associated callbacks.  Behaves very similarly
 | 
			
		||||
 * to qemu_set_fd_handler2.  Unlike qemu_set_fd_handler2, these callbacks will
 | 
			
		||||
 * to qemu_set_fd_handler.  Unlike qemu_set_fd_handler, these callbacks will
 | 
			
		||||
 * be invoked when using aio_poll().
 | 
			
		||||
 *
 | 
			
		||||
 * Code that invokes AIO completion functions should rely on this function
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,8 +96,7 @@ AioContext *qemu_get_aio_context(void);
 | 
			
		|||
 * that the main loop waits for.
 | 
			
		||||
 *
 | 
			
		||||
 * Calling qemu_notify_event is rarely necessary, because main loop
 | 
			
		||||
 * services (bottom halves and timers) call it themselves.  One notable
 | 
			
		||||
 * exception occurs when using qemu_set_fd_handler2 (see below).
 | 
			
		||||
 * services (bottom halves and timers) call it themselves.
 | 
			
		||||
 */
 | 
			
		||||
void qemu_notify_event(void);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -171,52 +170,6 @@ void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque);
 | 
			
		|||
typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size);
 | 
			
		||||
typedef int IOCanReadHandler(void *opaque);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * qemu_set_fd_handler2: Register a file descriptor with the main loop
 | 
			
		||||
 *
 | 
			
		||||
 * This function tells the main loop to wake up whenever one of the
 | 
			
		||||
 * following conditions is true:
 | 
			
		||||
 *
 | 
			
		||||
 * 1) if @fd_write is not %NULL, when the file descriptor is writable;
 | 
			
		||||
 *
 | 
			
		||||
 * 2) if @fd_read is not %NULL, when the file descriptor is readable.
 | 
			
		||||
 *
 | 
			
		||||
 * @fd_read_poll can be used to disable the @fd_read callback temporarily.
 | 
			
		||||
 * This is useful to avoid calling qemu_set_fd_handler2 every time the
 | 
			
		||||
 * client becomes interested in reading (or dually, stops being interested).
 | 
			
		||||
 * A typical example is when @fd is a listening socket and you want to bound
 | 
			
		||||
 * the number of active clients.  Remember to call qemu_notify_event whenever
 | 
			
		||||
 * the condition may change from %false to %true.
 | 
			
		||||
 *
 | 
			
		||||
 * The callbacks that are set up by qemu_set_fd_handler2 are level-triggered.
 | 
			
		||||
 * If @fd_read does not read from @fd, or @fd_write does not write to @fd
 | 
			
		||||
 * until its buffers are full, they will be called again on the next
 | 
			
		||||
 * iteration.
 | 
			
		||||
 *
 | 
			
		||||
 * @fd: The file descriptor to be observed.  Under Windows it must be
 | 
			
		||||
 * a #SOCKET.
 | 
			
		||||
 *
 | 
			
		||||
 * @fd_read_poll: A function that returns 1 if the @fd_read callback
 | 
			
		||||
 * should be fired.  If the function returns 0, the main loop will not
 | 
			
		||||
 * end its iteration even if @fd becomes readable.
 | 
			
		||||
 *
 | 
			
		||||
 * @fd_read: A level-triggered callback that is fired if @fd is readable
 | 
			
		||||
 * at the beginning of a main loop iteration, or if it becomes readable
 | 
			
		||||
 * during one.
 | 
			
		||||
 *
 | 
			
		||||
 * @fd_write: A level-triggered callback that is fired when @fd is writable
 | 
			
		||||
 * at the beginning of a main loop iteration, or if it becomes writable
 | 
			
		||||
 * during one.
 | 
			
		||||
 *
 | 
			
		||||
 * @opaque: A pointer-sized value that is passed to @fd_read_poll,
 | 
			
		||||
 * @fd_read and @fd_write.
 | 
			
		||||
 */
 | 
			
		||||
int qemu_set_fd_handler2(int fd,
 | 
			
		||||
                         IOCanReadHandler *fd_read_poll,
 | 
			
		||||
                         IOHandler *fd_read,
 | 
			
		||||
                         IOHandler *fd_write,
 | 
			
		||||
                         void *opaque);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * qemu_set_fd_handler: Register a file descriptor with the main loop
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										20
									
								
								iohandler.c
								
								
								
								
							
							
						
						
									
										20
									
								
								iohandler.c
								
								
								
								
							| 
						 | 
				
			
			@ -33,7 +33,6 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
typedef struct IOHandlerRecord {
 | 
			
		||||
    IOCanReadHandler *fd_read_poll;
 | 
			
		||||
    IOHandler *fd_read;
 | 
			
		||||
    IOHandler *fd_write;
 | 
			
		||||
    void *opaque;
 | 
			
		||||
| 
						 | 
				
			
			@ -46,11 +45,7 @@ typedef struct IOHandlerRecord {
 | 
			
		|||
static QLIST_HEAD(, IOHandlerRecord) io_handlers =
 | 
			
		||||
    QLIST_HEAD_INITIALIZER(io_handlers);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* XXX: fd_read_poll should be suppressed, but an API change is
 | 
			
		||||
   necessary in the character devices to suppress fd_can_read(). */
 | 
			
		||||
int qemu_set_fd_handler2(int fd,
 | 
			
		||||
                         IOCanReadHandler *fd_read_poll,
 | 
			
		||||
int qemu_set_fd_handler(int fd,
 | 
			
		||||
                        IOHandler *fd_read,
 | 
			
		||||
                        IOHandler *fd_write,
 | 
			
		||||
                        void *opaque)
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +70,6 @@ int qemu_set_fd_handler2(int fd,
 | 
			
		|||
        QLIST_INSERT_HEAD(&io_handlers, ioh, next);
 | 
			
		||||
    found:
 | 
			
		||||
        ioh->fd = fd;
 | 
			
		||||
        ioh->fd_read_poll = fd_read_poll;
 | 
			
		||||
        ioh->fd_read = fd_read;
 | 
			
		||||
        ioh->fd_write = fd_write;
 | 
			
		||||
        ioh->opaque = opaque;
 | 
			
		||||
| 
						 | 
				
			
			@ -86,14 +80,6 @@ int qemu_set_fd_handler2(int fd,
 | 
			
		|||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int qemu_set_fd_handler(int fd,
 | 
			
		||||
                        IOHandler *fd_read,
 | 
			
		||||
                        IOHandler *fd_write,
 | 
			
		||||
                        void *opaque)
 | 
			
		||||
{
 | 
			
		||||
    return qemu_set_fd_handler2(fd, NULL, fd_read, fd_write, opaque);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void qemu_iohandler_fill(GArray *pollfds)
 | 
			
		||||
{
 | 
			
		||||
    IOHandlerRecord *ioh;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,9 +89,7 @@ void qemu_iohandler_fill(GArray *pollfds)
 | 
			
		|||
 | 
			
		||||
        if (ioh->deleted)
 | 
			
		||||
            continue;
 | 
			
		||||
        if (ioh->fd_read &&
 | 
			
		||||
            (!ioh->fd_read_poll ||
 | 
			
		||||
             ioh->fd_read_poll(ioh->opaque) != 0)) {
 | 
			
		||||
        if (ioh->fd_read) {
 | 
			
		||||
            events |= G_IO_IN | G_IO_HUP | G_IO_ERR;
 | 
			
		||||
        }
 | 
			
		||||
        if (ioh->fd_write) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,12 +8,3 @@ int qemu_set_fd_handler(int fd,
 | 
			
		|||
{
 | 
			
		||||
    abort();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int qemu_set_fd_handler2(int fd,
 | 
			
		||||
                         IOCanReadHandler *fd_read_poll,
 | 
			
		||||
                         IOHandler *fd_read,
 | 
			
		||||
                         IOHandler *fd_write,
 | 
			
		||||
                         void *opaque)
 | 
			
		||||
{
 | 
			
		||||
    abort();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue