aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorMatthew Garrett <mjg@redhat.com>2011-07-21 16:57:52 -0400
committerTony Luck <tony.luck@intel.com>2011-07-22 19:14:06 -0400
commit638c1fd3033c76778e6d9975ad8a4a9cdd5b96d9 (patch)
treede8b772157162b8a7a0901f4df5fb25faef6b21d /drivers/acpi
parent02f8c6aee8df3cdc935e9bdd4f2d020306035dbe (diff)
pstore: Extend API for more flexibility in new backends
Some pstore implementations may not have a static context, so extend the API to pass the pstore_info struct to all calls and allow for a context pointer. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/apei/erst.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
index e6cef8e1b534..de3ae92adaa5 100644
--- a/drivers/acpi/apei/erst.c
+++ b/drivers/acpi/apei/erst.c
@@ -932,8 +932,10 @@ static int erst_check_table(struct acpi_table_erst *erst_tab)
932static int erst_open_pstore(struct pstore_info *psi); 932static int erst_open_pstore(struct pstore_info *psi);
933static int erst_close_pstore(struct pstore_info *psi); 933static int erst_close_pstore(struct pstore_info *psi);
934static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, 934static ssize_t erst_reader(u64 *id, enum pstore_type_id *type,
935 struct timespec *time); 935 struct timespec *time, struct pstore_info *psi);
936static u64 erst_writer(enum pstore_type_id type, size_t size); 936static u64 erst_writer(enum pstore_type_id type, size_t size,
937 struct pstore_info *psi);
938static int erst_clearer(u64 id, struct pstore_info *psi);
937 939
938static struct pstore_info erst_info = { 940static struct pstore_info erst_info = {
939 .owner = THIS_MODULE, 941 .owner = THIS_MODULE,
@@ -942,7 +944,7 @@ static struct pstore_info erst_info = {
942 .close = erst_close_pstore, 944 .close = erst_close_pstore,
943 .read = erst_reader, 945 .read = erst_reader,
944 .write = erst_writer, 946 .write = erst_writer,
945 .erase = erst_clear 947 .erase = erst_clearer
946}; 948};
947 949
948#define CPER_CREATOR_PSTORE \ 950#define CPER_CREATOR_PSTORE \
@@ -983,7 +985,7 @@ static int erst_close_pstore(struct pstore_info *psi)
983} 985}
984 986
985static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, 987static ssize_t erst_reader(u64 *id, enum pstore_type_id *type,
986 struct timespec *time) 988 struct timespec *time, struct pstore_info *psi)
987{ 989{
988 int rc; 990 int rc;
989 ssize_t len = 0; 991 ssize_t len = 0;
@@ -1037,7 +1039,8 @@ out:
1037 return (rc < 0) ? rc : (len - sizeof(*rcd)); 1039 return (rc < 0) ? rc : (len - sizeof(*rcd));
1038} 1040}
1039 1041
1040static u64 erst_writer(enum pstore_type_id type, size_t size) 1042static u64 erst_writer(enum pstore_type_id type, size_t size,
1043 struct pstore_info *psi)
1041{ 1044{
1042 struct cper_pstore_record *rcd = (struct cper_pstore_record *) 1045 struct cper_pstore_record *rcd = (struct cper_pstore_record *)
1043 (erst_info.buf - sizeof(*rcd)); 1046 (erst_info.buf - sizeof(*rcd));
@@ -1080,6 +1083,11 @@ static u64 erst_writer(enum pstore_type_id type, size_t size)
1080 return rcd->hdr.record_id; 1083 return rcd->hdr.record_id;
1081} 1084}
1082 1085
1086static int erst_clearer(u64 id, struct pstore_info *psi)
1087{
1088 return erst_clear(id);
1089}
1090
1083static int __init erst_init(void) 1091static int __init erst_init(void)
1084{ 1092{
1085 int rc = 0; 1093 int rc = 0;