Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Oct 2016 02:43:23 +0000 (UTC)
From:      Sepherosa Ziehau <sephe@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r307012 - in head/sys/dev/hyperv: include vmbus
Message-ID:  <201610110243.u9B2hNUJ000738@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sephe
Date: Tue Oct 11 02:43:23 2016
New Revision: 307012
URL: https://svnweb.freebsd.org/changeset/base/307012

Log:
  hyperv/vmbus: Allow driver to inject synchronous task into channel taskq.
  
  MFC after:	1 week
  Sponsored by:	Microsoft
  Differential Revision:	https://reviews.freebsd.org/D8208

Modified:
  head/sys/dev/hyperv/include/vmbus.h
  head/sys/dev/hyperv/vmbus/vmbus_chan.c

Modified: head/sys/dev/hyperv/include/vmbus.h
==============================================================================
--- head/sys/dev/hyperv/include/vmbus.h	Tue Oct 11 02:25:59 2016	(r307011)
+++ head/sys/dev/hyperv/include/vmbus.h	Tue Oct 11 02:43:23 2016	(r307012)
@@ -117,6 +117,7 @@ struct vmbus_chan_br {
 
 struct vmbus_channel;
 struct hyperv_guid;
+struct task;
 
 typedef void	(*vmbus_chan_callback_t)(struct vmbus_channel *, void *);
 
@@ -134,6 +135,8 @@ int		vmbus_chan_open_br(struct vmbus_cha
 		    int udlen, vmbus_chan_callback_t cb, void *cbarg);
 void		vmbus_chan_close(struct vmbus_channel *chan);
 void		vmbus_chan_intr_drain(struct vmbus_channel *chan);
+void		vmbus_chan_run_task(struct vmbus_channel *chan,
+		    struct task *task);
 
 int		vmbus_chan_gpadl_connect(struct vmbus_channel *chan,
 		    bus_addr_t paddr, int size, uint32_t *gpadl);

Modified: head/sys/dev/hyperv/vmbus/vmbus_chan.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/vmbus_chan.c	Tue Oct 11 02:25:59 2016	(r307011)
+++ head/sys/dev/hyperv/vmbus/vmbus_chan.c	Tue Oct 11 02:43:23 2016	(r307012)
@@ -1713,3 +1713,11 @@ vmbus_chan_rx_empty(const struct vmbus_c
 
 	return (vmbus_rxbr_empty(&chan->ch_rxbr));
 }
+
+void
+vmbus_chan_run_task(struct vmbus_channel *chan, struct task *task)
+{
+
+	taskqueue_enqueue(chan->ch_tq, task);
+	taskqueue_drain(chan->ch_tq, task);
+}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201610110243.u9B2hNUJ000738>