summaryrefslogtreecommitdiffstats
path: root/freebsd
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-05-18 09:35:46 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-20 14:59:55 +0200
commit62c8ca0ead09ef289faf6517e177fd6f6d7a74a3 (patch)
tree8eeed454171864eb40485c13f004b39150704135 /freebsd
parentAdd CPUINFO command to default network init (diff)
downloadrtems-libbsd-62c8ca0ead09ef289faf6517e177fd6f6d7a74a3.tar.bz2
Fix INVARIANTS support
Diffstat (limited to 'freebsd')
-rw-r--r--freebsd/sys/kern/kern_event.c2
-rw-r--r--freebsd/sys/kern/subr_lock.c2
-rw-r--r--freebsd/sys/sys/rmlock.h1
-rw-r--r--freebsd/sys/sys/rwlock.h4
-rw-r--r--freebsd/sys/sys/systm.h4
-rw-r--r--freebsd/sys/vm/uma_core.c4
6 files changed, 17 insertions, 0 deletions
diff --git a/freebsd/sys/kern/kern_event.c b/freebsd/sys/kern/kern_event.c
index a3464ada..ed1a9dab 100644
--- a/freebsd/sys/kern/kern_event.c
+++ b/freebsd/sys/kern/kern_event.c
@@ -2108,8 +2108,10 @@ static void
kqueue_destroy(struct kqueue *kq)
{
+#ifndef __rtems__
KASSERT(kq->kq_fdp == NULL,
("kqueue still attached to a file descriptor"));
+#endif /* __rtems__ */
seldrain(&kq->kq_sel);
knlist_destroy(&kq->kq_sel.si_note);
mtx_destroy(&kq->kq_lock);
diff --git a/freebsd/sys/kern/subr_lock.c b/freebsd/sys/kern/subr_lock.c
index 6ce4a06b..28991a9f 100644
--- a/freebsd/sys/kern/subr_lock.c
+++ b/freebsd/sys/kern/subr_lock.c
@@ -84,8 +84,10 @@ lock_init(struct lock_object *lock, struct lock_class *class, const char *name,
int i;
/* Check for double-init and zero object. */
+#ifndef __rtems__
KASSERT(flags & LO_NEW || !lock_initialized(lock),
("lock \"%s\" %p already initialized", name, lock));
+#endif /* __rtems__ */
/* Look up lock class to find its index. */
for (i = 0; i < LOCK_CLASS_MAX; i++)
diff --git a/freebsd/sys/sys/rmlock.h b/freebsd/sys/sys/rmlock.h
index efd60597..c14dcb15 100644
--- a/freebsd/sys/sys/rmlock.h
+++ b/freebsd/sys/sys/rmlock.h
@@ -112,6 +112,7 @@ void _rm_assert(const struct rmlock *rm, int what, const char *file,
#define rm_rlock(rm, tracker) do { (void)tracker; rw_rlock(rm); } while (0)
#define rm_runlock(rm, tracker) do { (void)tracker; rw_runlock(rm); } while (0)
#define rm_sleep rw_sleep
+#define _rm_assert _rw_assert
#endif /* __rtems__ */
diff --git a/freebsd/sys/sys/rwlock.h b/freebsd/sys/sys/rwlock.h
index 8988ecbd..8c1f8e6d 100644
--- a/freebsd/sys/sys/rwlock.h
+++ b/freebsd/sys/sys/rwlock.h
@@ -164,6 +164,10 @@ int _rw_try_rlock(struct rwlock *rw, const char *file, int line);
void _rw_runlock(struct rwlock *rw, const char *file, int line);
int _rw_try_upgrade(struct rwlock *rw, const char *file, int line);
void _rw_downgrade(struct rwlock *rw, const char *file, int line);
+#if defined(INVARIANTS) || defined(INVARIANT_SUPPORT)
+void _rw_assert(const struct rwlock *rw, int what, const char *file,
+ int line);
+#endif
#endif /* __rtems__ */
#ifndef __rtems__
diff --git a/freebsd/sys/sys/systm.h b/freebsd/sys/sys/systm.h
index 90c11bb1..6b557c56 100644
--- a/freebsd/sys/sys/systm.h
+++ b/freebsd/sys/sys/systm.h
@@ -105,7 +105,11 @@ enum VM_GUEST { VM_GUEST_NO = 0, VM_GUEST_VM, VM_GUEST_XEN, VM_GUEST_HV,
VM_GUEST_VMWARE, VM_GUEST_KVM, VM_LAST };
#if defined(WITNESS) || defined(INVARIANT_SUPPORT)
+#ifndef __rtems__
void kassert_panic(const char *fmt, ...) __printflike(1, 2);
+#else /* __rtems__ */
+#define kassert_panic panic
+#endif /* __rtems__ */
#endif
#ifdef INVARIANTS /* The option is always available */
diff --git a/freebsd/sys/vm/uma_core.c b/freebsd/sys/vm/uma_core.c
index 01a46a41..6c85b0e8 100644
--- a/freebsd/sys/vm/uma_core.c
+++ b/freebsd/sys/vm/uma_core.c
@@ -2204,8 +2204,10 @@ uma_zalloc_arg(uma_zone_t zone, void *udata, int flags)
WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
"uma_zalloc_arg: zone \"%s\"", zone->uz_name);
}
+#ifndef __rtems__
KASSERT(curthread->td_critnest == 0 || SCHEDULER_STOPPED(),
("uma_zalloc_arg: called with spinlock or critical section held"));
+#endif /* __rtems__ */
#ifdef DEBUG_MEMGUARD
if (memguard_cmp_zone(zone)) {
@@ -2742,8 +2744,10 @@ uma_zfree_arg(uma_zone_t zone, void *item, void *udata)
CTR2(KTR_UMA, "uma_zfree_arg thread %x zone %s", curthread,
zone->uz_name);
+#ifndef __rtems__
KASSERT(curthread->td_critnest == 0 || SCHEDULER_STOPPED(),
("uma_zfree_arg: called with spinlock or critical section held"));
+#endif /* __rtems__ */
/* uma_zfree(..., NULL) does nothing, to match free(9). */
if (item == NULL)