lkml.org 
[lkml]   [2015]   [Jan]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC Patch 05/19] ACPI: Provide union for address_space64 and ext_address_space64
Date
From: Thomas Gleixner <tglx@linutronix.de>

address_space64 and ext_address_space64 share substracts just at
different offsets. To unify the parsing functions implement the two
structs as unions of their substructs, so we can extract the shared
data.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
include/acpi/acrestyp.h | 49 ++++++++++++++++++++++++++++++++++-------------
1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/include/acpi/acrestyp.h b/include/acpi/acrestyp.h
index eb760ca0b2e0..307d5b2605c8 100644
--- a/include/acpi/acrestyp.h
+++ b/include/acpi/acrestyp.h
@@ -326,23 +326,46 @@ struct acpi_resource_address32 {
struct acpi_resource_source resource_source;
};

-struct acpi_resource_address64 {
- ACPI_RESOURCE_ADDRESS_COMMON u64 granularity;
- u64 minimum;
- u64 maximum;
- u64 translation_offset;
+#define ACPI_RESOURCE_ADDRESS64_COMMON \
+ u64 granularity; \
+ u64 minimum; \
+ u64 maximum; \
+ u64 translation_offset; \
u64 address_length;
- struct acpi_resource_source resource_source;
+
+struct acpi_resource_address64_common {
+ACPI_RESOURCE_ADDRESS64_COMMON};
+
+struct acpi_resource_address64 {
+ union {
+ struct {
+ ACPI_RESOURCE_ADDRESS_COMMON
+ ACPI_RESOURCE_ADDRESS64_COMMON
+ struct acpi_resource_source resource_source;
+ };
+ struct {
+ struct acpi_resource_address base;
+ struct acpi_resource_address64_common addr;
+ struct acpi_resource_source resource_source;
+ } common;
+ };
};

struct acpi_resource_extended_address64 {
- ACPI_RESOURCE_ADDRESS_COMMON u8 revision_ID;
- u64 granularity;
- u64 minimum;
- u64 maximum;
- u64 translation_offset;
- u64 address_length;
- u64 type_specific;
+ union {
+ struct {
+ ACPI_RESOURCE_ADDRESS_COMMON
+ u8 revision_ID;
+ ACPI_RESOURCE_ADDRESS64_COMMON
+ u64 type_specific;
+ };
+ struct {
+ struct acpi_resource_address base;
+ u8 revision_ID;
+ struct acpi_resource_address64_common addr;
+ u64 type_specific;
+ } common;
+ };
};

struct acpi_resource_extended_irq {
--
1.7.10.4


\
 
 \ /
  Last update: 2015-01-08 03:41    [W:0.423 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site