Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:sschapiro:openstack:upstream
qemu
0004-char-Add-framework-for-a-write-unblocked-c...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0004-char-Add-framework-for-a-write-unblocked-callback.patch of Package qemu
>From 3ad2ca8e46ba078e69254ca5886de89b30f823bb Mon Sep 17 00:00:00 2001 From: Amit Shah <amit.shah@redhat.com> Date: Mon, 21 Mar 2011 21:41:42 +0100 Subject: [PATCH 04/28] char: Add framework for a 'write unblocked' callback The char layer can let users know that the driver will block on further input. For users interested in not blocking, they can assign a function pointer that will be called back when the driver becomes writable. This patch just adds the function pointers to the CharDriverState structure, future patches will enable the nonblocking and callback functionality. Signed-off-by: Amit Shah <amit.shah@redhat.com> --- qemu-char.c | 3 +++ qemu-char.h | 4 ++++ 2 files changed, 7 insertions(+), 0 deletions(-) diff --git a/qemu-char.c b/qemu-char.c index 52bcc0e..bc07b20 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -214,11 +214,14 @@ void qemu_chr_add_handlers(CharDriverState *s, } s->chr_can_read = handlers->fd_can_read; s->chr_read = handlers->fd_read; + s->chr_write_unblocked = handlers->fd_write_unblocked; s->chr_event = handlers->fd_event; s->handler_opaque = opaque; if (s->chr_update_read_handler) s->chr_update_read_handler(s); + s->write_blocked = false; + /* We're connecting to an already opened device, so let's make sure we also get the open event */ if (s->opened) { diff --git a/qemu-char.h b/qemu-char.h index 9fe1b82..68e7b5b 100644 --- a/qemu-char.h +++ b/qemu-char.h @@ -62,6 +62,9 @@ struct CharDriverState { IOEventHandler *chr_event; IOCanReadHandler *chr_can_read; IOReadHandler *chr_read; + IOHandler *chr_write_unblocked; + void (*chr_enable_write_fd_handler)(struct CharDriverState *chr); + void (*chr_disable_write_fd_handler)(struct CharDriverState *chr); void *handler_opaque; void (*chr_send_event)(struct CharDriverState *chr, int event); void (*chr_close)(struct CharDriverState *chr); @@ -75,6 +78,7 @@ struct CharDriverState { char *filename; int opened; int avail_connections; + bool write_blocked; /* Are we in a blocked state? */ QTAILQ_ENTRY(CharDriverState) next; }; -- 1.7.5.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor