svn commit: r300443 - head/sys/sys

Adrian Chadd adrian at FreeBSD.org
Mon May 23 03:29:45 UTC 2016


Author: adrian
Date: Mon May 23 03:29:43 2016
New Revision: 300443
URL: https://svnweb.freebsd.org/changeset/base/300443

Log:
  [bhnd] Fix DEFINE_CLASS_(2|3) multiple inheritance support.
  
  This diff updates DEFINE_CLASS_2/_3 to support the specification of class
  name separately from the class variable name, bringing them into sync
  with their API documentation, as well as the behavior of DEFINE_CLASS_0/_1.
  
  Nothing in the tree currently uses the _2/_3 variants, and I can't
  find any references to the API outside of commits to the kobj.h
  header itself; given the limitation that currently exists, I'd
  be surprised if they've ever been used.
  
  Submitted by:	Landon Fuller <landonf at landonf.org>
  Reviewed by:	imp
  Differential Revision:	https://reviews.freebsd.org/D6491

Modified:
  head/sys/sys/kobj.h

Modified: head/sys/sys/kobj.h
==============================================================================
--- head/sys/sys/kobj.h	Mon May 23 01:01:23 2016	(r300442)
+++ head/sys/sys/kobj.h	Mon May 23 03:29:43 2016	(r300443)
@@ -146,13 +146,13 @@ struct kobj_class classvar = {				\
  * DEFINE_CLASS_2(foo, foo_class, foo_methods, sizeof(foo_softc),
  *			  bar, baz);
  */
-#define DEFINE_CLASS_2(name, methods, size,		\
+#define DEFINE_CLASS_2(name, classvar, methods, size,	\
 	               base1, base2)			\
 							\
 static kobj_class_t name ## _baseclasses[] =		\
 	{ &base1,					\
 	  &base2, NULL };				\
-struct kobj_class name ## _class = {			\
+struct kobj_class classvar = {				\
 	#name, methods, size, name ## _baseclasses	\
 }
 
@@ -162,14 +162,14 @@ struct kobj_class name ## _class = {			\
  * DEFINE_CLASS_3(foo, foo_class, foo_methods, sizeof(foo_softc),
  *			  bar, baz, foobar);
  */
-#define DEFINE_CLASS_3(name, methods, size,		\
+#define DEFINE_CLASS_3(name, classvar, methods, size,	\
 		       base1, base2, base3)		\
 							\
 static kobj_class_t name ## _baseclasses[] =		\
 	{ &base1,					\
 	  &base2,					\
 	  &base3, NULL };				\
-struct kobj_class name ## _class = {			\
+struct kobj_class classvar = {				\
 	#name, methods, size, name ## _baseclasses	\
 }
 


More information about the svn-src-all mailing list