CHAR8 *get_extra_cmdline(CHAR8 *cmdline) { CHAR8 *extra_cmdline; CHAR8 *updated_cmdline; extra_cmdline = loader_ops.get_extra_cmdline(); debug(L"Getting extra commandline: %a\n", extra_cmdline ? extra_cmdline : (CHAR8 *)""); updated_cmdline = append_strings(extra_cmdline, cmdline); updated_cmdline = get_powerup_reason(updated_cmdline); if (extra_cmdline) FreePool(extra_cmdline); if (cmdline) FreePool(cmdline); return updated_cmdline; }
static ssize_t powerup_reason_show(struct kobject *kobj, struct kobj_attribute *attr, char * buf) { char *s = buf; u32 pu_reason; int pu_reason_index = PU_REASON_MAX; u32 reset_reason; int reset_reason_index = RS_REASON_MAX; pu_reason = get_powerup_reason(); if (pu_reason & BIT(PU_REASON_EVENT_WARMRST)) { reset_reason = pu_reason >> 16; reset_reason_index = find_first_bit((unsigned long *)&reset_reason, sizeof(reset_reason)*BITS_PER_BYTE); if (reset_reason_index < RS_REASON_MAX && reset_reason_index >= 0) { s += sprintf(s, "%s", reset_reasons[reset_reason_index]); printk(KERN_DEBUG "%s: rs_reason [0x%x], first non-zero bit" " %d\n", __func__, reset_reason, reset_reason_index); goto out; }; } else {
int is_abnormal_powerup(void) { u32 pu_reason = get_powerup_reason(); return pu_reason & (RESTART_EVENT_KPANIC | RESTART_EVENT_WDOG | RESTART_EVENT_OTHER); }