@@ -1,6 +1,8 @@
#ifndef __PSTORE_INTERNAL_H__
#define __PSTORE_INTERNAL_H__
+#include <linux/types.h>
+#include <linux/time.h>
#include <linux/pstore.h>
#if NR_CPUS <= 2 && defined(CONFIG_ARM_THUMB)
@@ -24,6 +24,10 @@
#include <linux/time.h>
#include <linux/kmsg_dump.h>
+#include <linux/mutex.h>
+#include <linux/types.h>
+#include <linux/spinlock.h>
+#include <linux/errno.h>
/* types */
enum pstore_type_id {
@@ -34,6 +38,8 @@ enum pstore_type_id {
PSTORE_TYPE_UNKNOWN = 255
};
+struct module;
+
struct pstore_info {
struct module *owner;
char *name;
@@ -24,6 +24,7 @@
#include <linux/init.h>
struct persistent_ram_buffer;
+struct rs_control;
struct persistent_ram_zone {
phys_addr_t paddr;
Headers should really include all the needed prototypes, types, defines etc. to be self-contained. This is a long-standing issue, but apparently the new tracing code unearthed it (SMP=n is also a prerequisite): In file included from fs/pstore/internal.h:4:0, from fs/pstore/ftrace.c:21: include/linux/pstore.h:43:15: error: field ‘read_mutex’ has incomplete type While at it, I also added the following: linux/types.h -> size_t, phys_addr_t, uXX and friends linux/spinlock.h -> spinlock_t linux/errno.h -> Exxxx linux/time.h -> struct timespec (struct passed by value) struct module and rs_control forward declaration (passed via pointers). Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> --- fs/pstore/internal.h | 2 ++ include/linux/pstore.h | 6 ++++++ include/linux/pstore_ram.h | 1 + 3 files changed, 9 insertions(+)