Exemplo n.º 1
0
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);
}