Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 1 | /* |
| 2 | * apei.h - ACPI Platform Error Interface |
| 3 | */ |
| 4 | |
| 5 | #ifndef ACPI_APEI_H |
| 6 | #define ACPI_APEI_H |
| 7 | |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 8 | #include <linux/acpi.h> |
| 9 | #include <linux/cper.h> |
| 10 | #include <asm/ioctls.h> |
| 11 | |
| 12 | #define APEI_ERST_INVALID_RECORD_ID 0xffffffffffffffffULL |
| 13 | |
| 14 | #define APEI_ERST_CLEAR_RECORD _IOW('E', 1, u64) |
| 15 | #define APEI_ERST_GET_RECORD_COUNT _IOR('E', 2, u32) |
| 16 | |
| 17 | #ifdef __KERNEL__ |
| 18 | |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 19 | extern int hest_disable; |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 20 | extern int erst_disable; |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 21 | |
Rafael J. Wysocki | 415e12b | 2011-01-07 00:55:09 +0100 | [diff] [blame] | 22 | #ifdef CONFIG_ACPI_APEI |
| 23 | void __init acpi_hest_init(void); |
| 24 | #else |
| 25 | static inline void acpi_hest_init(void) { return; } |
| 26 | #endif |
| 27 | |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 28 | typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data); |
| 29 | int apei_hest_parse(apei_hest_func_t func, void *data); |
| 30 | |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 31 | int erst_write(const struct cper_record_header *record); |
| 32 | ssize_t erst_get_record_count(void); |
| 33 | int erst_get_next_record_id(u64 *record_id); |
| 34 | ssize_t erst_read(u64 record_id, struct cper_record_header *record, |
| 35 | size_t buflen); |
| 36 | ssize_t erst_read_next(struct cper_record_header *record, size_t buflen); |
| 37 | int erst_clear(u64 record_id); |
| 38 | |
| 39 | #endif |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 40 | #endif |