summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_event.c
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2004-11-09 23:20:50 +0000
committerpjd <pjd@FreeBSD.org>2004-11-09 23:20:50 +0000
commit412bff1f39c19dbc588d70ac080106215db7eec4 (patch)
treeb0460c504df68f0cf84d7a6b76d1359486a83ec0 /sys/geom/geom_event.c
parent37a1084115a6c5cba4c2677edd57618c2fe37ea4 (diff)
downloadFreeBSD-src-412bff1f39c19dbc588d70ac080106215db7eec4.zip
FreeBSD-src-412bff1f39c19dbc588d70ac080106215db7eec4.tar.gz
Introduce g_waitidlelock() function which is simlar to g_waitidle(),
but should be called with the topology lock held and returns with the topology lock held and empty event queue. Approved by: phk (sometime ago)
Diffstat (limited to 'sys/geom/geom_event.c')
-rw-r--r--sys/geom/geom_event.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/geom/geom_event.c b/sys/geom/geom_event.c
index 9166c30..f550efc 100644
--- a/sys/geom/geom_event.c
+++ b/sys/geom/geom_event.c
@@ -90,6 +90,18 @@ g_waitidle(void)
}
void
+g_waitidlelock(void)
+{
+
+ g_topology_assert();
+ while (g_pending_events) {
+ g_topology_unlock();
+ tsleep(&g_pending_events, PPAUSE, "g_waitidle", hz/5);
+ g_topology_lock();
+ }
+}
+
+void
g_orphan_provider(struct g_provider *pp, int error)
{
OpenPOWER on IntegriCloud