[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 00/13] introduce the Xen PV Calls frontend
Hi all, this series introduces the frontend for the newly introduced PV Calls procotol. PV Calls is a paravirtualized protocol that allows the implementation of a set of POSIX functions in a different domain. The PV Calls frontend sends POSIX function calls to the backend, which implements them and returns a value to the frontend and acts on the function call. For more information about PV Calls, please read: https://xenbits.xen.org/docs/unstable/misc/pvcalls.html This patch series only implements the frontend driver. It doesn't attempt to redirect POSIX calls to it. The functions exported in pvcalls-front.h are meant to be used for that. A separate patch series will be sent to use them and hook them into the system. Changes in v3: In addition to addressing all comments, in this version of the series I also made one other significant change: I implemented non-blocking accept, which I didn't realize was missing in the last version of the series (non-blocking accept is usually called only after a successful poll, when there are already outstanding connections to accept). To do that, I also changed the id for sockets sent to the backend from the value of the struct socket pointer to the value of the struct sock_mapping pointer. It's all documented in the patch descriptions. This is the full list of changes: - use struct sock_mapping* instead of struct socket* as socket id to share with the backend - allocate struct sock_mapping for a socket in pvcalls_front_socket - in pvcalls_front_accept check if the request is non-blocking and return -EAGAIN in that case - store req_id and struct sock_mapping * of an inflight accept request, so that we can resume when it's ready, in case the accept is non-blocking - remove unnecessary parenthesis - rename RING_ORDER to PVCALLS_RING_ORDER - make pvcalls_front_dev static - remove ref local variable from pvcalls_front_probe - move patch #12 before patch #2 - move dev_set_drvdata before any got error in pvcalls_front_probe - combine src and dst calculation lines in pvcalls_front_event_handler - remove unnecessary != 0 in the wait_event and wait_event_interruptible tests - add an in-code comment about sk_send_head - In v2 I applied some changes to the wrong patch. Move changes to the right patches. - refactor the code to get a req_id into a function - use wait_event (instead of wait_event_interruptible) to wait for a response from the backend because we cannot cope with missing responses - remove the usage of PVCALLS_FRONT_MAX_SPIN from recvmsg - remove unnecessary !bedata check in pvcalls_front_release Changes in v2: - use xenbus_read_unsigned when possible - call dev_set_drvdata earlier in pvcalls_front_probe not to dereference a NULL pointer in the error path - set ret appropriately in pvcalls_front_probe - include pvcalls-front.h in pvcalls-front.c - call wake_up only once after the consuming loop in pvcalls_front_event_handler - don't leak "bytes" in case of errors in create_active - call spin_unlock appropriately in case of errors in create_active - remove all BUG_ONs - don't leak newsock->sk in pvcalls_front_accept in case of errors - rename PVCALLS_FRON_MAX_SPIN to PVCALLS_FRONT_MAX_SPIN - return bool from pvcalls_front_read_todo - add a barrier after setting PVCALLS_FLAG_POLL_RET in pvcalls_front_event_handler - remove outdated comment in pvcalls_front_free_map - clear sock->sk->sk_send_head later in pvcalls_front_release - make XEN_PVCALLS_FRONTEND tristate - don't add an empty resume function Stefano Stabellini (13): xen/pvcalls: introduce the pvcalls xenbus frontend xen/pvcalls: implement frontend disconnect xen/pvcalls: connect to the backend xen/pvcalls: implement socket command and handle events xen/pvcalls: implement connect command xen/pvcalls: implement bind command xen/pvcalls: implement listen command xen/pvcalls: implement accept command xen/pvcalls: implement sendmsg xen/pvcalls: implement recvmsg xen/pvcalls: implement poll command xen/pvcalls: implement release command xen: introduce a Kconfig option to enable the pvcalls frontend drivers/xen/Kconfig | 9 + drivers/xen/Makefile | 1 + drivers/xen/pvcalls-front.c | 1140 +++++++++++++++++++++++++++++++++++++++++++ drivers/xen/pvcalls-front.h | 28 ++ 4 files changed, 1178 insertions(+) create mode 100644 drivers/xen/pvcalls-front.c create mode 100644 drivers/xen/pvcalls-front.h _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |