summaryrefslogtreecommitdiff
path: root/sys/external/bsd/drm2/linux/linux_module.c
diff options
context:
space:
mode:
authorriastradh <riastradh@NetBSD.org>2018-08-27 13:31:36 +0000
committerriastradh <riastradh@NetBSD.org>2018-08-27 13:31:36 +0000
commite7d46ecb9428a40b975ce19378f2fca9f688370d (patch)
tree7bac5ec79d3fd9082b66b5af95bab6dd3c6136c0 /sys/external/bsd/drm2/linux/linux_module.c
parent1b4fb64c5a6ec87f8795d61a32716b2e7a06ee36 (diff)
Implement some of the Linux RCU API.
Diffstat (limited to 'sys/external/bsd/drm2/linux/linux_module.c')
-rw-r--r--sys/external/bsd/drm2/linux/linux_module.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/sys/external/bsd/drm2/linux/linux_module.c b/sys/external/bsd/drm2/linux/linux_module.c
index 7f39f9077e7..cccdd98566e 100644
--- a/sys/external/bsd/drm2/linux/linux_module.c
+++ b/sys/external/bsd/drm2/linux/linux_module.c
@@ -1,4 +1,4 @@
-/* $NetBSD: linux_module.c,v 1.6 2015/04/13 22:24:34 pgoyette Exp $ */
+/* $NetBSD: linux_module.c,v 1.7 2018/08/27 13:31:37 riastradh Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_module.c,v 1.6 2015/04/13 22:24:34 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_module.c,v 1.7 2018/08/27 13:31:37 riastradh Exp $");
#include <sys/module.h>
#ifndef _MODULE
@@ -41,6 +41,7 @@ __KERNEL_RCSID(0, "$NetBSD: linux_module.c,v 1.6 2015/04/13 22:24:34 pgoyette Ex
#include <linux/idr.h>
#include <linux/io.h>
#include <linux/mutex.h>
+#include <linux/rcupdate.h>
#include <linux/reservation.h>
#include <linux/workqueue.h>
@@ -65,24 +66,31 @@ linux_init(void)
goto fail1;
}
+ error = linux_rcu_gc_init();
+ if (error) {
+ printf("linux: unable to initialize rcu gc: %d\n", error);
+ goto fail2;
+ }
+
error = linux_workqueue_init();
if (error) {
printf("linux: unable to initialize workqueues: %d\n", error);
- goto fail2;
+ goto fail3;
}
error = linux_writecomb_init();
if (error) {
printf("linux: unable to initialize write-combining: %d\n",
error);
- goto fail3;
+ goto fail4;
}
return 0;
-fail4: __unused
+fail5: __unused
linux_writecomb_fini();
-fail3: linux_workqueue_fini();
+fail4: linux_workqueue_fini();
+fail3: linux_rcu_gc_fini();
fail2: linux_kmap_fini();
fail1: linux_idr_module_fini();
fail0: return error;
@@ -107,6 +115,7 @@ linux_fini(void)
linux_writecomb_fini();
linux_workqueue_fini();
+ linux_rcu_gc_fini();
linux_kmap_fini();
linux_idr_module_fini();
}