git: 5ad42f80559c - main - smapi: Use devclass_find to lookup smapi devclass in unload handler.

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Thu, 05 May 2022 23:42:25 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=5ad42f80559cd37fbd2897df4f6462fb43330608

commit 5ad42f80559cd37fbd2897df4f6462fb43330608
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2022-05-05 23:35:40 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2022-05-05 23:35:40 +0000

    smapi: Use devclass_find to lookup smapi devclass in unload handler.
    
    Move smapi_modevent below the declaration of smapi_driver so that
    smapi_driver's name member can be used rather than hardcoding the
    device class name.
    
    Differential Revision:  https://reviews.freebsd.org/D35064
---
 sys/i386/bios/smapi.c | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/sys/i386/bios/smapi.c b/sys/i386/bios/smapi.c
index 653399e1ca58..719d9b9558dc 100644
--- a/sys/i386/bios/smapi.c
+++ b/sys/i386/bios/smapi.c
@@ -278,6 +278,21 @@ smapi_detach (device_t dev)
 	return (0);
 }
 
+static device_method_t smapi_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_identify,      smapi_identify),
+	DEVMETHOD(device_probe,         smapi_probe),
+	DEVMETHOD(device_attach,        smapi_attach),
+	DEVMETHOD(device_detach,        smapi_detach),
+	{ 0, 0 }
+};
+
+static driver_t smapi_driver = {
+	"smapi",
+	smapi_methods,
+	sizeof(struct smapi_softc),
+};
+
 static int
 smapi_modevent (module_t mod, int what, void *arg)
 {
@@ -289,7 +304,8 @@ smapi_modevent (module_t mod, int what, void *arg)
 	case MOD_LOAD:
 		break;
 	case MOD_UNLOAD:
-		devclass_get_devices(smapi_devclass, &devs, &count);
+		devclass_get_devices(devclass_find(smapi_driver.name), &devs,
+		    &count);
 		for (i = 0; i < count; i++) {
 			device_delete_child(device_get_parent(devs[i]), devs[i]);
 		}
@@ -302,20 +318,5 @@ smapi_modevent (module_t mod, int what, void *arg)
 	return (0);
 }
 
-static device_method_t smapi_methods[] = {
-	/* Device interface */
-	DEVMETHOD(device_identify,      smapi_identify),
-	DEVMETHOD(device_probe,         smapi_probe),
-	DEVMETHOD(device_attach,        smapi_attach),
-	DEVMETHOD(device_detach,        smapi_detach),
-	{ 0, 0 }
-};
-
-static driver_t smapi_driver = {
-	"smapi",
-	smapi_methods,
-	sizeof(struct smapi_softc),
-};
-
 DRIVER_MODULE(smapi, nexus, smapi_driver, smapi_devclass, smapi_modevent, 0);
 MODULE_VERSION(smapi, 1);