svn commit: r353625 - in head/cddl/contrib/opensolaris/lib/libzpool/common: . sys
Andriy Gapon
avg at FreeBSD.org
Wed Oct 16 07:41:34 UTC 2019
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);
More information about the svn-src-all
mailing list