diff options
| author | riastradh <riastradh@NetBSD.org> | 2018-08-27 13:31:36 +0000 |
|---|---|---|
| committer | riastradh <riastradh@NetBSD.org> | 2018-08-27 13:31:36 +0000 |
| commit | e7d46ecb9428a40b975ce19378f2fca9f688370d (patch) | |
| tree | 7bac5ec79d3fd9082b66b5af95bab6dd3c6136c0 /sys/external/bsd/drm2/linux/linux_module.c | |
| parent | 1b4fb64c5a6ec87f8795d61a32716b2e7a06ee36 (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.c | 21 |
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(); } |
