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
This commit is contained in:
Mark Johnston 2021-04-12 09:32:30 -04:00
parent 3f322b22e0
commit dfff37765c
7 changed files with 17 additions and 18 deletions

View File

@ -35,7 +35,7 @@
.Nm device .Nm device
.Nd an abstract representation of a device .Nd an abstract representation of a device
.Sh SYNOPSIS .Sh SYNOPSIS
.Vt typedef struct device *device_t ; .Vt typedef struct _device *device_t ;
.Sh DESCRIPTION .Sh DESCRIPTION
The device object represents a piece of hardware attached to the The device object represents a piece of hardware attached to the
system such as an expansion card, the bus which that card is plugged system such as an expansion card, the bus which that card is plugged

View File

@ -88,12 +88,12 @@
.Ft "struct resource *" .Ft "struct resource *"
.Fo rman_reserve_resource .Fo rman_reserve_resource
.Fa "struct rman *rm" "rman_res_t start" "rman_res_t end" "rman_res_t count" .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 .Fc
.Ft "struct resource *" .Ft "struct resource *"
.Fo rman_reserve_resource_bound .Fo rman_reserve_resource_bound
.Fa "struct rman *rm" "rman_res_t start" "rman_res_t end" "rman_res_t count" .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 .Fc
.Ft uint32_t .Ft uint32_t
.Fn rman_make_alignment_flags "uint32_t size" .Fn rman_make_alignment_flags "uint32_t size"
@ -101,7 +101,7 @@
.Fn rman_get_start "struct resource *r" .Fn rman_get_start "struct resource *r"
.Ft rman_res_t .Ft rman_res_t
.Fn rman_get_end "struct resource *r" .Fn rman_get_end "struct resource *r"
.Ft "struct device *" .Ft "device_t"
.Fn rman_get_device "struct resource *r" .Fn rman_get_device "struct resource *r"
.Ft rman_res_t .Ft rman_res_t
.Fn rman_get_size "struct resource *r" .Fn rman_get_size "struct resource *r"

View File

@ -95,7 +95,7 @@ struct driverlink {
*/ */
typedef TAILQ_HEAD(devclass_list, devclass) devclass_list_t; typedef TAILQ_HEAD(devclass_list, devclass) devclass_list_t;
typedef TAILQ_HEAD(driver_list, driverlink) driver_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 { struct devclass {
TAILQ_ENTRY(devclass) link; 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 * A device is a kernel object. The first field must be the
* current ops table for the object. * current ops table for the object.
@ -124,8 +127,8 @@ struct device {
/* /*
* Device hierarchy. * Device hierarchy.
*/ */
TAILQ_ENTRY(device) link; /**< list of devices in parent */ TAILQ_ENTRY(_device) link; /**< list of devices in parent */
TAILQ_ENTRY(device) devlink; /**< global device list membership */ TAILQ_ENTRY(_device) devlink; /**< global device list membership */
device_t parent; /**< parent of this device */ device_t parent; /**< parent of this device */
device_list_t children; /**< list of child devices */ 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 */ /* 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 int bus_data_generation = 1;
static kobj_method_t null_methods[] = { static kobj_method_t null_methods[] = {

View File

@ -33,8 +33,6 @@
#include <sys/bus_dma.h> #include <sys/bus_dma.h>
#include <sys/bus_dma_internal.h> #include <sys/bus_dma_internal.h>
struct device; int bus_dma_tag_set_iommu(bus_dma_tag_t, device_t iommu, void *cookie);
int bus_dma_tag_set_iommu(bus_dma_tag_t, struct device *iommu, void *cookie);
#endif /* _POWERPC_BUS_DMA_H_ */ #endif /* _POWERPC_BUS_DMA_H_ */

View File

@ -187,7 +187,7 @@ struct pcpu {
STAILQ_ENTRY(pcpu) pc_allcpu; STAILQ_ENTRY(pcpu) pc_allcpu;
struct lock_list_entry *pc_spinlocks; struct lock_list_entry *pc_spinlocks;
long pc_cp_time[CPUSTATES]; /* statclock ticks */ long pc_cp_time[CPUSTATES]; /* statclock ticks */
struct device *pc_device; struct _device *pc_device; /* CPU device handle */
void *pc_netisr; /* netisr SWI cookie */ void *pc_netisr; /* netisr SWI cookie */
int pc_unused1; /* unused field */ int pc_unused1; /* unused field */
int pc_domain; /* Memory domain. */ int pc_domain; /* Memory domain. */

View File

@ -626,9 +626,8 @@ void counted_warning(unsigned *counter, const char *msg);
/* /*
* APIs to manage deprecation and obsolescence. * APIs to manage deprecation and obsolescence.
*/ */
struct device;
void _gone_in(int major, const char *msg); 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 #ifdef NO_OBSOLETE_CODE
#define __gone_ok(m, msg) \ #define __gone_ok(m, msg) \
_Static_assert(m < P_OSREL_MAJOR(__FreeBSD_version)), \ _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 */ #endif /* _KERNEL */
__NULLABILITY_PRAGMA_POP __NULLABILITY_PRAGMA_POP
#endif /* !_SYS_SYSTM_H_ */ #endif /* !_SYS_SYSTM_H_ */

View File

@ -272,7 +272,7 @@ typedef __rman_res_t rman_res_t;
#ifdef _KERNEL #ifdef _KERNEL
typedef int boolean_t; typedef int boolean_t;
typedef struct device *device_t; typedef struct _device *device_t;
typedef __intfptr_t intfptr_t; typedef __intfptr_t intfptr_t;
/* /*