Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
Файл: main.c Проект: jjzhang/dlm
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));
}