Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Oct 2019 07:41:34 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r353625 - in head/cddl/contrib/opensolaris/lib/libzpool/common: . sys
Message-ID:  <201910160741.x9G7fYJo022675@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avg
Date: Wed Oct 16 07:41:33 2019
New Revision: 353625
URL: https://svnweb.freebsd.org/changeset/base/353625

Log:
  zfs: add a lame emulation of cv_wait_sig(9) in userland to fix r353618
  
  Not sure if we need anything better.
  Maybe we should try to port illumos libfakekernel or provide something
  similar natively.
  
  MFC after:	4 weeks
  X-MFC with:	r353618

Modified:
  head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
  head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h

Modified: head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c	Wed Oct 16 07:20:59 2019	(r353624)
+++ head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c	Wed Oct 16 07:41:33 2019	(r353625)
@@ -321,6 +321,18 @@ cv_wait(kcondvar_t *cv, kmutex_t *mp)
 	mp->m_owner = curthread;
 }
 
+/*
+ * NB: this emulates FreeBSD cv_wait_sig(9), not the illumos one.
+ * Meanings of the return code is different.
+ * NB: this does not actually catch any siganls.
+ */
+int
+cv_wait_sig(kcondvar_t *cv, kmutex_t *mp)
+{
+	cv_wait(cv, mp);
+	return (0);
+}
+
 clock_t
 cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime)
 {

Modified: head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Wed Oct 16 07:20:59 2019	(r353624)
+++ head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Wed Oct 16 07:41:33 2019	(r353625)
@@ -330,6 +330,7 @@ typedef cond_t kcondvar_t;
 extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg);
 extern void cv_destroy(kcondvar_t *cv);
 extern void cv_wait(kcondvar_t *cv, kmutex_t *mp);
+extern int cv_wait_sig(kcondvar_t *cv, kmutex_t *mp);
 extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime);
 extern clock_t cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim,
     hrtime_t res, int flag);



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