aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2021-04-12 13:32:30 +0000
committerMark Johnston <markj@FreeBSD.org>2021-04-12 13:32:30 +0000
commitdfff37765ce4ea4fd7db4d293b459dc84008f411 (patch)
treed87e095b485161d7dc2351bd4a3820a55dc4b48b
parent3f322b22e02d6aae147e9948ab50ca1bee9a9dd4 (diff)
downloadsrc-dfff37765ce4ea4fd7db4d293b459dc84008f411.tar.gz
src-dfff37765ce4ea4fd7db4d293b459dc84008f411.zip
Rename struct device to struct _device
types.h defines device_t as a typedef of struct device *. struct device is defined in subr_bus.c and almost all of the kernel uses device_t. The LinuxKPI also defines a struct device, so type confusion can occur. This causes bugs and ambiguity for debugging tools. Rename the FreeBSD struct device to struct _device. Reviewed by: gbe (man pages) Reviewed by: rpokala, imp, jhb MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D29676
-rw-r--r--share/man/man9/device.92
-rw-r--r--share/man/man9/rman.96
-rw-r--r--sys/kern/subr_bus.c15
-rw-r--r--sys/powerpc/include/bus_dma.h4
-rw-r--r--sys/sys/pcpu.h2
-rw-r--r--sys/sys/systm.h4
-rw-r--r--sys/sys/types.h2
7 files changed, 17 insertions, 18 deletions
diff --git a/share/man/man9/device.9 b/share/man/man9/device.9
index 40bd3f16d3ee..d5e30f0abefa 100644
--- a/share/man/man9/device.9
+++ b/share/man/man9/device.9
@@ -35,7 +35,7 @@
.Nm device
.Nd an abstract representation of a device
.Sh SYNOPSIS
-.Vt typedef struct device *device_t ;
+.Vt typedef struct _device *device_t ;
.Sh DESCRIPTION
The device object represents a piece of hardware attached to the
system such as an expansion card, the bus which that card is plugged
diff --git a/share/man/man9/rman.9 b/share/man/man9/rman.9
index 3e03c05f9088..3faea2a014fc 100644
--- a/share/man/man9/rman.9
+++ b/share/man/man9/rman.9
@@ -88,12 +88,12 @@
.Ft "struct resource *"
.Fo rman_reserve_resource
.Fa "struct rman *rm" "rman_res_t start" "rman_res_t end" "rman_res_t count"
-.Fa "u_int flags" "struct device *dev"
+.Fa "u_int flags" "device_t dev"
.Fc
.Ft "struct resource *"
.Fo rman_reserve_resource_bound
.Fa "struct rman *rm" "rman_res_t start" "rman_res_t end" "rman_res_t count"
-.Fa "rman_res_t bound" "u_int flags" "struct device *dev"
+.Fa "rman_res_t bound" "u_int flags" "device_t dev"
.Fc
.Ft uint32_t
.Fn rman_make_alignment_flags "uint32_t size"
@@ -101,7 +101,7 @@
.Fn rman_get_start "struct resource *r"
.Ft rman_res_t
.Fn rman_get_end "struct resource *r"
-.Ft "struct device *"
+.Ft "device_t"
.Fn rman_get_device "struct resource *r"
.Ft rman_res_t
.Fn rman_get_size "struct resource *r"
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c
index 2a8cf00b5700..08f1cb5886d2 100644
--- a/sys/kern/subr_bus.c
+++ b/sys/kern/subr_bus.c
@@ -95,7 +95,7 @@ struct driverlink {
*/
typedef TAILQ_HEAD(devclass_list, devclass) devclass_list_t;
typedef TAILQ_HEAD(driver_list, driverlink) driver_list_t;
-typedef TAILQ_HEAD(device_list, device) device_list_t;
+typedef TAILQ_HEAD(device_list, _device) device_list_t;
struct devclass {
TAILQ_ENTRY(devclass) link;
@@ -112,9 +112,12 @@ struct devclass {
};
/**
- * @brief Implementation of device.
+ * @brief Implementation of _device.
+ *
+ * The structure is named "_device" instead of "device" to avoid type confusion
+ * caused by other subsystems defining a (struct device).
*/
-struct device {
+struct _device {
/*
* A device is a kernel object. The first field must be the
* current ops table for the object.
@@ -124,8 +127,8 @@ struct device {
/*
* Device hierarchy.
*/
- TAILQ_ENTRY(device) link; /**< list of devices in parent */
- TAILQ_ENTRY(device) devlink; /**< global device list membership */
+ TAILQ_ENTRY(_device) link; /**< list of devices in parent */
+ TAILQ_ENTRY(_device) devlink; /**< global device list membership */
device_t parent; /**< parent of this device */
device_list_t children; /**< list of child devices */
@@ -853,7 +856,7 @@ devctl_safe_quote_sb(struct sbuf *sb, const char *src)
/* End of /dev/devctl code */
-static TAILQ_HEAD(,device) bus_data_devices;
+static struct device_list bus_data_devices;
static int bus_data_generation = 1;
static kobj_method_t null_methods[] = {
diff --git a/sys/powerpc/include/bus_dma.h b/sys/powerpc/include/bus_dma.h
index ba4ebdab4c42..947a25819a7e 100644
--- a/sys/powerpc/include/bus_dma.h
+++ b/sys/powerpc/include/bus_dma.h
@@ -33,8 +33,6 @@
#include <sys/bus_dma.h>
#include <sys/bus_dma_internal.h>
-struct device;
-
-int bus_dma_tag_set_iommu(bus_dma_tag_t, struct device *iommu, void *cookie);
+int bus_dma_tag_set_iommu(bus_dma_tag_t, device_t iommu, void *cookie);
#endif /* _POWERPC_BUS_DMA_H_ */
diff --git a/sys/sys/pcpu.h b/sys/sys/pcpu.h
index 43827b1af4fa..cfc8a215707c 100644
--- a/sys/sys/pcpu.h
+++ b/sys/sys/pcpu.h
@@ -187,7 +187,7 @@ struct pcpu {
STAILQ_ENTRY(pcpu) pc_allcpu;
struct lock_list_entry *pc_spinlocks;
long pc_cp_time[CPUSTATES]; /* statclock ticks */
- struct device *pc_device;
+ struct _device *pc_device; /* CPU device handle */
void *pc_netisr; /* netisr SWI cookie */
int pc_unused1; /* unused field */
int pc_domain; /* Memory domain. */
diff --git a/sys/sys/systm.h b/sys/sys/systm.h
index 8a5bb23a3e14..5d41c9d53c2c 100644
--- a/sys/sys/systm.h
+++ b/sys/sys/systm.h
@@ -626,9 +626,8 @@ void counted_warning(unsigned *counter, const char *msg);
/*
* APIs to manage deprecation and obsolescence.
*/
-struct device;
void _gone_in(int major, const char *msg);
-void _gone_in_dev(struct device *dev, int major, const char *msg);
+void _gone_in_dev(device_t dev, int major, const char *msg);
#ifdef NO_OBSOLETE_CODE
#define __gone_ok(m, msg) \
_Static_assert(m < P_OSREL_MAJOR(__FreeBSD_version)), \
@@ -641,5 +640,4 @@ void _gone_in_dev(struct device *dev, int major, const char *msg);
#endif /* _KERNEL */
__NULLABILITY_PRAGMA_POP
-
#endif /* !_SYS_SYSTM_H_ */
diff --git a/sys/sys/types.h b/sys/sys/types.h
index c026fa023bd0..58abcf00cebb 100644
--- a/sys/sys/types.h
+++ b/sys/sys/types.h
@@ -272,7 +272,7 @@ typedef __rman_res_t rman_res_t;
#ifdef _KERNEL
typedef int boolean_t;
-typedef struct device *device_t;
+typedef struct _device *device_t;
typedef __intfptr_t intfptr_t;
/*