Module Name:    src
Committed By:   thorpej
Date:           Wed Dec 22 18:04:54 UTC 2021

Modified Files:
        src/sys/external/bsd/common/include/linux: slab.h

Log Message:
Reduce code duplication: kmem_cache_create() is now exactly the same as
kmem_cache_create_dtor() except for the dtor argument, so implement
the former in terms of the latter.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/common/include/linux/slab.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/common/include/linux/slab.h
diff -u src/sys/external/bsd/common/include/linux/slab.h:1.12 src/sys/external/bsd/common/include/linux/slab.h:1.13
--- src/sys/external/bsd/common/include/linux/slab.h:1.12	Wed Dec 22 16:57:29 2021
+++ src/sys/external/bsd/common/include/linux/slab.h	Wed Dec 22 18:04:53 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: slab.h,v 1.12 2021/12/22 16:57:29 thorpej Exp $	*/
+/*	$NetBSD: slab.h,v 1.13 2021/12/22 18:04:53 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -194,27 +194,6 @@ kmem_cache_dtor(void *cookie, void *ptr)
 		(*kc->kc_dtor)(ptr);
 }
 
-static inline struct kmem_cache *
-kmem_cache_create(const char *name, size_t size, size_t align,
-    unsigned long flags, void (*ctor)(void *))
-{
-	struct kmem_cache *kc;
-	int pcflags = 0;
-
-	if (ISSET(flags, SLAB_HWCACHE_ALIGN))
-		align = roundup(MAX(1, align), CACHE_LINE_SIZE);
-	if (ISSET(flags, SLAB_TYPESAFE_BY_RCU))
-		pcflags |= PR_PSERIALIZE;
-
-	kc = kmem_alloc(sizeof(*kc), KM_SLEEP);
-	kc->kc_pool_cache = pool_cache_init(size, align, 0, pcflags, name, NULL,
-	    IPL_VM, &kmem_cache_ctor, NULL, kc);
-	kc->kc_size = size;
-	kc->kc_ctor = ctor;
-
-	return kc;
-}
-
 /* XXX extension */
 static inline struct kmem_cache *
 kmem_cache_create_dtor(const char *name, size_t size, size_t align,
@@ -230,7 +209,8 @@ kmem_cache_create_dtor(const char *name,
 
 	kc = kmem_alloc(sizeof(*kc), KM_SLEEP);
 	kc->kc_pool_cache = pool_cache_init(size, align, 0, pcflags, name, NULL,
-	    IPL_VM, &kmem_cache_ctor, &kmem_cache_dtor, kc);
+	    IPL_VM, &kmem_cache_ctor, dtor != NULL ? &kmem_cache_dtor : NULL,
+	    kc);
 	kc->kc_size = size;
 	kc->kc_ctor = ctor;
 	kc->kc_dtor = dtor;
@@ -238,6 +218,13 @@ kmem_cache_create_dtor(const char *name,
 	return kc;
 }
 
+static inline struct kmem_cache *
+kmem_cache_create(const char *name, size_t size, size_t align,
+    unsigned long flags, void (*ctor)(void *))
+{
+	return kmem_cache_create_dtor(name, size, align, flags, ctor, NULL);
+}
+
 #define	KMEM_CACHE(T, F)						      \
 	kmem_cache_create(#T, sizeof(struct T), __alignof__(struct T),	      \
 	    (F), NULL)

Reply via email to