#define pr_fmt(fmt) …
#include <linux/acpi.h>
enum fpdt_subtable_type { … };
struct fpdt_subtable_entry { … };
struct fpdt_subtable_header { … };
enum fpdt_record_type { … };
struct fpdt_record_header { … };
struct resume_performance_record { … } __attribute__((packed));
struct boot_performance_record { … } __attribute__((packed));
struct suspend_performance_record { … } __attribute__((packed));
static struct resume_performance_record *record_resume;
static struct suspend_performance_record *record_suspend;
static struct boot_performance_record *record_boot;
#define FPDT_ATTR(phase, name) …
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
FPDT_ATTR(…) …;
static ssize_t resume_count_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
{ … }
static struct kobj_attribute resume_count_attr = …;
static struct attribute *resume_attrs[] = …;
static const struct attribute_group resume_attr_group = …;
static struct attribute *suspend_attrs[] = …;
static const struct attribute_group suspend_attr_group = …;
static struct attribute *boot_attrs[] = …;
static const struct attribute_group boot_attr_group = …;
static struct kobject *fpdt_kobj;
#if defined CONFIG_X86 && defined CONFIG_PHYS_ADDR_T_64BIT
#include <linux/processor.h>
static bool fpdt_address_valid(u64 address)
{ … }
#else
static bool fpdt_address_valid(u64 address)
{
return true;
}
#endif
static int fpdt_process_subtable(u64 address, u32 subtable_type)
{ … }
static int __init acpi_init_fpdt(void)
{ … }
fs_initcall(acpi_init_fpdt);