svn commit: r355532 - head/sys/dev/gpio

Ian Lepore ian at FreeBSD.org
Sun Dec 8 20:36:13 UTC 2019


Author: ian
Date: Sun Dec  8 20:36:13 2019
New Revision: 355532
URL: https://svnweb.freebsd.org/changeset/base/355532

Log:
  Simplify sysctl stuff in the gpioths driver.  There is no need to use local
  functions to handle the sysctls, they all just access simple readonly
  integer variables.  There's no need to track the oids of the ones we add,
  since the teardown is done by newbus code, not the driver itself.
  
  Also remove the DDB code, because it just provides access to the same data
  that the sysctls already provide.

Modified:
  head/sys/dev/gpio/gpioths.c

Modified: head/sys/dev/gpio/gpioths.c
==============================================================================
--- head/sys/dev/gpio/gpioths.c	Sun Dec  8 20:13:42 2019	(r355531)
+++ head/sys/dev/gpio/gpioths.c	Sun Dec  8 20:36:13 2019	(r355532)
@@ -67,9 +67,6 @@ struct gpioths_softc {
 	int			 temp;
 	int			 hum;
 	int			 fails;
-	struct sysctl_oid	*temp_oid;
-	struct sysctl_oid	*hum_oid;
-	struct sysctl_oid	*fails_oid;
 	struct callout		 callout;
 };
 
@@ -80,9 +77,6 @@ static int		gpioths_probe(device_t dev);
 static int		gpioths_attach(device_t dev);
 static int		gpioths_detach(device_t dev);
 static void		gpioths_poll(void *arg);
-static int		gpioths_temp_sysctl(SYSCTL_HANDLER_ARGS);
-static int		gpioths_hum_sysctl(SYSCTL_HANDLER_ARGS);
-static int		gpioths_fails_sysctl(SYSCTL_HANDLER_ARGS);
 
 /* DHT-specific methods */
 static int		gpioths_dht_initread(device_t bus, device_t dev);
@@ -282,43 +276,6 @@ gpioths_poll(void *arg)
 }
 
 static int
-gpioths_temp_sysctl(SYSCTL_HANDLER_ARGS)
-{
-	struct gpioths_softc	*sc;
-	int			 value;
-
-	sc = (struct gpioths_softc*)arg1;
-	value = sc->temp;
-
-	return (sysctl_handle_int(oidp, &value, 0, req));
-}
-
-static int
-gpioths_hum_sysctl(SYSCTL_HANDLER_ARGS)
-{
-	struct gpioths_softc	*sc;
-	int			 value;
-
-	sc = (struct gpioths_softc*)arg1;
-	value = sc->hum;
-
-	return (sysctl_handle_int(oidp, &value, 0, req));
-}
-
-
-static int
-gpioths_fails_sysctl(SYSCTL_HANDLER_ARGS)
-{
-	struct gpioths_softc	*sc;
-	int			 value;
-
-	sc = (struct gpioths_softc*)arg1;
-	value = sc->fails;
-
-	return (sysctl_handle_int(oidp, &value, 0, req));
-}
-
-static int
 gpioths_attach(device_t dev)
 {
 	struct gpioths_softc	*sc;
@@ -337,17 +294,16 @@ gpioths_attach(device_t dev)
 	 */
 	gpioths_dht_readbytes(device_get_parent(dev), dev);
 
-	sc->temp_oid = SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
-	    "temperature", CTLTYPE_INT | CTLFLAG_RD, sc, 0,
-	    gpioths_temp_sysctl, "I", "temperature(C)");
+	sysctl_add_oid(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "temperature",				\
+	    CTLFLAG_RD | CTLTYPE_INT | CTLFLAG_MPSAFE,
+	    &sc->temp, 0, sysctl_handle_int, "I", "temperature", NULL);
 
-	sc->hum_oid = SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
-	    "humidity", CTLTYPE_INT | CTLFLAG_RD, sc, 0,
-	    gpioths_hum_sysctl, "I", "humidity(%)");
+	SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "humidity",
+	    CTLFLAG_RD, &sc->hum, 0, "relative humidity(%)");
 
-	sc->fails_oid = SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
-	    "fails", CTLTYPE_INT | CTLFLAG_RD, sc, 0,
-	    gpioths_fails_sysctl, "I", "fails since last successful read");
+	SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "fails",
+	    CTLFLAG_RD, &sc->fails, 0,
+	    "failures since last successful read");
 
 	callout_init(&sc->callout, 1);
 	callout_reset(&sc->callout, GPIOTHS_POLLTIME * hz, gpioths_poll, dev);
@@ -366,41 +322,6 @@ gpioths_detach(device_t dev)
 
 	return (0);
 }
-
-/* DDB bits */
-#include "opt_ddb.h"
-#ifdef DDB
-#include <ddb/ddb.h>
-#include <ddb/db_lex.h>
-#include <sys/cons.h>
-
-static struct command_table db_gpioths_table = LIST_HEAD_INITIALIZER(db_t4_table);
-_DB_SET(_show, gpioths, NULL, db_show_table, 0, &db_gpioths_table);
-
-DB_FUNC(read, db_show_gpiothsread, db_gpioths_table, CS_OWN, NULL)
-{
-	device_t	dev;
-	int		t;
-	int		init;
-
-	init = 0;
-	t = db_read_token();
-	if (t == tIDENT) {
-		dev = device_lookup_by_name(db_tok_string);
-		init = 1;
-	}
-
-	db_skip_to_eol();
-
-	if (init)
-		db_printf("read: 0x%x\n",
-		    gpioths_dht_readbytes(dev, device_get_parent(dev)));
-	else
-		db_printf("usage: show gpioths read <gpiothsdevice>\n");
-
-return;
-}
-#endif /* DDB */
 
 /* Driver bits */
 static device_method_t gpioths_methods[] = {


More information about the svn-src-head mailing list