static void *input_listener_thread(void *arg) { pr_verbose("begin input listener thread\n"); while (1) { if (!ev_wait(-1)) ev_dispatch(); } pr_verbose("exit input listener thread\n"); return NULL; }
static int input_callback(int fd, short revents, void *data) { struct input_event ev; int ret; ret = ev_get_input(fd, revents, &ev); if (ret) return -1; pr_verbose("Event type: %x, code: %x, value: %x\n", ev.type, ev.code, ev.value); /* ignore key press when provisioning */ if (ignore_keypress) return 0; /* * press power to boot selected kernel immediately * press other keys to cancel boot */ if (autoboot_enabled && ev.type == EV_KEY) { if (ev.code == KEY_POWER) power_pressed = 1; else disable_autoboot(); return 0; } /* * handle VOLUMEUP, VOLUMEDOWN, POWER press event for rendering menu * and we don't care repeat key event (ev.value == 2) */ if (ev.type == EV_KEY && ev.value == 1) { if (ev.code == KEY_VOLUMEUP || ev.code == KEY_VOLUMEDOWN || ev.code == KEY_POWER) { RESET_ALARM; if (lcd_state != lcd_state_on) { /* do and only do light on LCD */ lcd_state = (lcd_state_t)lcd_state(LCD_KEY); return 0; } } if (ev.code == KEY_VOLUMEUP) tboot_ui_menu_up(); else if (ev.code == KEY_VOLUMEDOWN) tboot_ui_menu_down(); else if (ev.code == KEY_POWER) tboot_ui_menu_action(); else pr_debug("unkown key pressed.\n"); } return 0; }
static void print_lkb(char *line, struct rinfo *ri) { struct lkb lkb; char type[4]; int rv; rv = sscanf(line, "%s %x %d %x %u %llu %x %x %d %d %d %d %d %d %u %llu %llu", type, &lkb.id, &lkb.nodeid, &lkb.remid, &lkb.ownpid, (unsigned long long *)&lkb.xid, &lkb.exflags, &lkb.flags, &lkb.status, &lkb.grmode, &lkb.rqmode, &lkb.highbast, &lkb.rsb_lookup, &lkb.wait_type, &lkb.lvbseq, (unsigned long long *)&lkb.timestamp, (unsigned long long *)&lkb.time_bast); ri->lkb_count++; if (lkb.status == DLM_LKSTS_GRANTED) { if (!ri->print_granted++) printf("Granted\n"); ri->lkb_granted++; } if (lkb.status == DLM_LKSTS_CONVERT) { if (!ri->print_convert++) printf("Convert\n"); ri->lkb_convert++; } if (lkb.status == DLM_LKSTS_WAITING) { if (!ri->print_waiting++) printf("Waiting\n"); ri->lkb_waiting++; } if (lkb.rsb_lookup) { if (!ri->print_lookup++) printf("Lookup\n"); ri->lkb_lookup++; } if (lkb.wait_type) ri->lkb_wait_msg++; if (!ri->nodeid) { if (lkb.nodeid) ri->lkb_master_copy++; else ri->lkb_local_copy++; } else { ri->lkb_process_copy++; } printf("%08x %s %s %s %s %s\n", lkb.id, pr_grmode(&lkb), pr_rqmode(&lkb), pr_remote(&lkb, ri), pr_wait(&lkb), (verbose && wide) ? pr_verbose(&lkb) : ""); if (verbose && !wide) printf("%s\n", pr_verbose(&lkb)); }