Collapse devinfo_state_t with device_state_t in order to avoid a

structure replication and improve manteneability.

Reviewed by:	jhb, imp
Tested by:	Riccardo Torrini <riccardo at torrini dot org>
This commit is contained in:
Attilio Rao 2009-11-15 16:44:43 +00:00
parent 793c70425a
commit 1262810177
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=199291
4 changed files with 13 additions and 21 deletions

View File

@ -32,20 +32,12 @@
#include <sys/cdefs.h>
#include <sys/_types.h>
#include <sys/bus.h>
typedef __uintptr_t devinfo_handle_t;
#define DEVINFO_ROOT_DEVICE ((devinfo_handle_t)0)
/*
* State of the device.
*/
/* XXX not sure if I want a copy here, or expose sys/bus.h */
typedef enum devinfo_state {
DIS_NOTPRESENT = 10, /* not probed or probe failed */
DIS_ALIVE = 20, /* probe succeeded */
DIS_ATTACHED = 30, /* attach method called */
DIS_BUSY = 40 /* device is open */
} devinfo_state_t;
typedef enum device_state devinfo_state_t;
struct devinfo_dev {
devinfo_handle_t dd_handle; /* device handle */

View File

@ -247,13 +247,13 @@ static const char *
devstate(devinfo_state_t state)
{
switch (state) {
case DIS_NOTPRESENT:
case DS_NOTPRESENT:
return "not-present";
case DIS_ALIVE:
case DS_ALIVE:
return "alive";
case DIS_ATTACHED:
case DS_ATTACHED:
return "attached";
case DIS_BUSY:
case DS_BUSY:
return "busy";
default:
return "unknown-state";
@ -266,8 +266,8 @@ acpi0_check(struct devinfo_dev *dd, void *arg)
printf("%s: %s %s\n", __func__, dd->dd_name, devstate(dd->dd_state));
/* NB: device must be present AND attached */
if (strcmp(dd->dd_name, "acpi0") == 0)
return (dd->dd_state == DIS_ATTACHED ||
dd->dd_state == DIS_BUSY);
return (dd->dd_state == DS_ATTACHED ||
dd->dd_state == DS_BUSY);
return devinfo_foreach_device_child(dd, acpi0_check, arg);
}

View File

@ -352,11 +352,11 @@ device_get_status(struct devinfo_dev *dev)
assert(dev != NULL);
switch (dev->dd_state) {
case DIS_ALIVE: /* probe succeeded */
case DIS_NOTPRESENT: /* not probed or probe failed */
case DS_ALIVE: /* probe succeeded */
case DS_NOTPRESENT: /* not probed or probe failed */
return (DS_DOWN);
case DIS_ATTACHED: /* attach method called */
case DIS_BUSY: /* device is open */
case DS_ATTACHED: /* attach method called */
case DS_BUSY: /* device is open */
return (DS_RUNNING);
default:
return (DS_UNKNOWN);

View File

@ -137,7 +137,7 @@ print_device(struct devinfo_dev *dev, void *arg)
struct indent_arg ia;
int i, indent;
if (vflag || (dev->dd_name[0] != 0 && dev->dd_state >= DIS_ATTACHED)) {
if (vflag || (dev->dd_name[0] != 0 && dev->dd_state >= DS_ATTACHED)) {
indent = (int)(intptr_t)arg;
for (i = 0; i < indent; i++)
printf(" ");