record_id
rcd.hdr.record_id = cper_next_record_id();
ssize_t apei_read_mce(struct mce *m, u64 *record_id)
rc = erst_get_record_id_next(&pos, record_id);
if (*record_id == APEI_ERST_INVALID_RECORD_ID)
rc = erst_read_record(*record_id, &rcd.hdr, sizeof(rcd), sizeof(rcd),
int apei_clear_mce(u64 record_id)
return erst_clear(record_id);
u64 record_id;
rc = apei_read_mce(&m, &record_id);
rc = apei_clear_mce(record_id);
ssize_t apei_read_mce(struct mce *m, u64 *record_id);
int apei_clear_mce(u64 record_id);
static inline ssize_t apei_read_mce(struct mce *m, u64 *record_id)
static inline int apei_clear_mce(u64 record_id)
u64 record_id;
if (copy_from_user(&record_id, (void __user *)arg,
sizeof(record_id)))
return erst_clear(record_id);
u64 record_id;
rc = erst_get_record_id_next(&reader_pos, &record_id);
if (record_id == APEI_ERST_INVALID_RECORD_ID) {
len = erst_read_record(record_id, &rcd->hdr, rcd_len, sizeof(*rcd),
record->id = record_id;
rcd->hdr.record_id = cper_next_record_id();
record->id = rcd->hdr.record_id;
static int __erst_get_next_record_id(u64 *record_id)
*record_id = apei_exec_ctx_get_output(&ctx);
int erst_get_record_id_next(int *pos, u64 *record_id)
*record_id = entries[*pos];
*record_id = erst_record_id_cache.entries[*pos];
*record_id = APEI_ERST_INVALID_RECORD_ID;
static int __erst_read_from_storage(u64 record_id, u64 offset)
apei_exec_ctx_set_input(&ctx, record_id);
static int __erst_clear_from_storage(u64 record_id)
apei_exec_ctx_set_input(&ctx, record_id);
static int __erst_read_to_erange_from_nvram(u64 record_id, u64 *offset)
static int __erst_clear_from_nvram(u64 record_id)
static int __erst_read_to_erange(u64 record_id, u64 *offset)
record_id, offset);
rc = __erst_read_from_storage(record_id, 0);
static ssize_t __erst_read(u64 record_id, struct cper_record_header *record,
rc = __erst_read_to_erange(record_id, &offset);
ssize_t erst_read(u64 record_id, struct cper_record_header *record,
len = __erst_read(record_id, record, buflen);
static void erst_clear_cache(u64 record_id)
if (entries[i] == record_id)
ssize_t erst_read_record(u64 record_id, struct cper_record_header *record,
len = erst_read(record_id, record, buflen);
erst_clear_cache(record_id);
len = erst_read(record_id, record, buflen);
erst_clear_cache(record_id);
erst_clear_cache(record_id);
int erst_clear(u64 record_id)
rc = __erst_clear_from_nvram(record_id);
rc = __erst_clear_from_storage(record_id);
if (entries[i] == record_id)
char record_id[16];
snprintf(record_id, 9, "%d:%X",
memcpy(hdr->record_id, record_id, 8);
char record_id[8]; /* Unique CPER Entry ID */
char record_id[32];
snprintf(record_id, sizeof(record_id), "%d:%llX", dev_info.socket_id,
memcpy(hdr->record_id, record_id, 8);
char record_id[8]; /* Unique CPER Entry ID */
*index = record_id == PUNIT ? 2 : 4;
switch (record_id) {
u32 record_id = FIELD_GET(GUID_RECORD_ID, guid);
u16 record_id;
hdr->record_id, hdr->record_length, max_rec_len);
hdr->record_id = cper_next_record_id();
erst_clear(rec->hdr.record_id);
u64 record_id;
while (!erst_get_record_id_next(&pos, &record_id)) {
if (record_id == APEI_ERST_INVALID_RECORD_ID)
len = erst_read_record(record_id, &old->hdr, FMPM_MAX_REC_LEN,
erst_clear(record_id);
int erst_get_record_id_next(int *pos, u64 *record_id);
ssize_t erst_read(u64 record_id, struct cper_record_header *record,
ssize_t erst_read_record(u64 record_id, struct cper_record_header *record,
int erst_clear(u64 record_id);
u64 record_id;