• Home
  • Raw
  • Download

Lines Matching +full:long +full:- +full:press +full:- +full:ms

1 // SPDX-License-Identifier: GPL-2.0
68 * sysrq_mask - Getter for sysrq_enabled mask.
105 i = key - '0'; in sysrq_handle_loglevel()
112 .help_msg = "loglevel(0-9)",
196 .help_msg = "show-all-timers(q)",
219 .help_msg = "show-all-locks(d)",
231 unsigned long flags; in showacpu()
272 .help_msg = "show-backtrace-all-active-cpus(l)",
290 .help_msg = "show-registers(p)",
302 .help_msg = "show-task-states(t)",
313 .help_msg = "show-blocked-tasks(w)",
327 .help_msg = "dump-ftrace-buffer(z)",
341 .help_msg = "show-memory-usage(m)",
355 if (p->flags & PF_KTHREAD) in send_sig_all()
372 .help_msg = "terminate-all-tasks(e)",
385 .order = -1, in moom_callback()
402 .help_msg = "memory-full-oom-kill(f)",
413 .help_msg = "thaw-filesystems(j)",
425 .help_msg = "kill-all-tasks(i)",
436 .help_msg = "nice-all-RT-tasks(n)",
468 NULL, /* h - reserved for help */
529 /* key2index calculation, -1 on invalid index */
535 retval = key - '0'; in sysrq_key_table_key2index()
537 retval = key + 10 - 'a'; in sysrq_key_table_key2index()
539 retval = key + 36 - 'A'; in sysrq_key_table_key2index()
541 retval = -1; in sysrq_key_table_key2index()
554 if (i != -1) in __sysrq_get_key_op()
564 if (i != -1) in __sysrq_put_key_op()
592 * Should we check for enabled operations (/proc/sysrq-trigger in __handle_sysrq()
595 if (!check_mask || sysrq_on_mask(op_p->enable_mask)) { in __handle_sysrq()
596 pr_info("%s\n", op_p->action_msg); in __handle_sysrq()
598 op_p->handler(key); in __handle_sysrq()
615 pr_cont("%s ", sysrq_key_table[i]->help_msg); in __handle_sysrq()
639 "\000\0331234567890-=\177\t" /* 0x00 - 0x0f */
640 "qwertyuiop[]\r\000as" /* 0x10 - 0x1f */
641 "dfghjkl;'`\000\\zxcv" /* 0x20 - 0x2f */
642 "bnm,./\000*\000 \000\201\202\203\204\205" /* 0x30 - 0x3f */
643 "\206\207\210\211\212\000\000789-456+1" /* 0x40 - 0x4f */
644 "230\177\000\000\213\214\000\000\000\000\000\000\000\000\000\000" /* 0x50 - 0x5f */
645 "\r\000/"; /* 0x60 - 0x6f */
650 unsigned long key_down[BITS_TO_LONGS(KEY_CNT)];
662 unsigned long reset_keybit[BITS_TO_LONGS(KEY_CNT)];
679 state->reset_seq_cnt = 0; in sysrq_parse_reset_sequence()
687 __set_bit(key, state->reset_keybit); in sysrq_parse_reset_sequence()
688 state->reset_seq_len++; in sysrq_parse_reset_sequence()
690 if (test_bit(key, state->key_down)) in sysrq_parse_reset_sequence()
691 state->reset_seq_cnt++; in sysrq_parse_reset_sequence()
695 state->reset_canceled = state->reset_seq_cnt != 0; in sysrq_parse_reset_sequence()
697 state->reset_seq_version = sysrq_reset_seq_version; in sysrq_parse_reset_sequence()
704 state->reset_requested = true; in sysrq_do_reset()
711 if (state->reset_requested) in sysrq_handle_reset_request()
715 mod_timer(&state->keyreset_timer, in sysrq_handle_reset_request()
718 sysrq_do_reset(&state->keyreset_timer); in sysrq_handle_reset_request()
724 if (!test_bit(code, state->reset_keybit)) { in sysrq_detect_reset_sequence()
731 if (value && state->reset_seq_cnt) { in sysrq_detect_reset_sequence()
732 state->reset_canceled = true; in sysrq_detect_reset_sequence()
733 del_timer(&state->keyreset_timer); in sysrq_detect_reset_sequence()
737 * Key release - all keys in the reset sequence need in sysrq_detect_reset_sequence()
741 del_timer(&state->keyreset_timer); in sysrq_detect_reset_sequence()
743 if (--state->reset_seq_cnt == 0) in sysrq_detect_reset_sequence()
744 state->reset_canceled = false; in sysrq_detect_reset_sequence()
746 /* key press, not autorepeat */ in sysrq_detect_reset_sequence()
747 if (++state->reset_seq_cnt == state->reset_seq_len && in sysrq_detect_reset_sequence()
748 !state->reset_canceled) { in sysrq_detect_reset_sequence()
762 np = of_find_node_by_path("/chosen/linux,sysrq-reset-seq"); in sysrq_of_get_keyreset_config()
780 of_property_read_u32(np, "timeout-ms", &sysrq_reset_downtime_ms); in sysrq_of_get_keyreset_config()
794 struct input_handle *handle = &sysrq->handle; in sysrq_reinject_alt_sysrq()
795 unsigned int alt_code = sysrq->alt_use; in sysrq_reinject_alt_sysrq()
797 if (sysrq->need_reinject) { in sysrq_reinject_alt_sysrq()
799 sysrq->reinjecting = true; in sysrq_reinject_alt_sysrq()
802 /* Simulate press and release of Alt + SysRq */ in sysrq_reinject_alt_sysrq()
812 sysrq->reinjecting = false; in sysrq_reinject_alt_sysrq()
819 bool was_active = sysrq->active; in sysrq_handle_keypress()
828 if (sysrq->active && code == sysrq->alt_use) in sysrq_handle_keypress()
829 sysrq->active = false; in sysrq_handle_keypress()
831 sysrq->alt = KEY_RESERVED; in sysrq_handle_keypress()
834 sysrq->alt = code; in sysrq_handle_keypress()
835 sysrq->need_reinject = false; in sysrq_handle_keypress()
842 sysrq->shift = KEY_RESERVED; in sysrq_handle_keypress()
844 sysrq->shift = code; in sysrq_handle_keypress()
848 if (value == 1 && sysrq->alt != KEY_RESERVED) { in sysrq_handle_keypress()
849 sysrq->active = true; in sysrq_handle_keypress()
850 sysrq->alt_use = sysrq->alt; in sysrq_handle_keypress()
852 sysrq->shift_use = sysrq->shift; in sysrq_handle_keypress()
855 * to re-inject Alt-SysRq keysroke. in sysrq_handle_keypress()
857 sysrq->need_reinject = true; in sysrq_handle_keypress()
868 if (sysrq->active) in sysrq_handle_keypress()
869 clear_bit(KEY_SYSRQ, sysrq->handle.dev->key); in sysrq_handle_keypress()
874 if (sysrq->active && value && value != 2) { in sysrq_handle_keypress()
877 sysrq->need_reinject = false; in sysrq_handle_keypress()
878 if (sysrq->shift_use != KEY_RESERVED) in sysrq_handle_keypress()
885 suppress = sysrq->active; in sysrq_handle_keypress()
887 if (!sysrq->active) { in sysrq_handle_keypress()
892 if (sysrq->reset_seq_version != sysrq_reset_seq_version) in sysrq_handle_keypress()
901 set_bit(code, sysrq->key_down); in sysrq_handle_keypress()
903 clear_bit(code, sysrq->key_down); in sysrq_handle_keypress()
906 schedule_work(&sysrq->reinject_work); in sysrq_handle_keypress()
911 } else if (value == 0 && test_and_clear_bit(code, sysrq->key_down)) { in sysrq_handle_keypress()
925 struct sysrq_state *sysrq = handle->private; in sysrq_filter()
929 * Do not filter anything if we are in the process of re-injecting in sysrq_filter()
932 if (sysrq->reinjecting) in sysrq_filter()
946 suppress = sysrq->active; in sysrq_filter()
962 return -ENOMEM; in sysrq_connect()
964 INIT_WORK(&sysrq->reinject_work, sysrq_reinject_alt_sysrq); in sysrq_connect()
966 sysrq->handle.dev = dev; in sysrq_connect()
967 sysrq->handle.handler = handler; in sysrq_connect()
968 sysrq->handle.name = "sysrq"; in sysrq_connect()
969 sysrq->handle.private = sysrq; in sysrq_connect()
970 timer_setup(&sysrq->keyreset_timer, sysrq_do_reset, 0); in sysrq_connect()
972 error = input_register_handle(&sysrq->handle); in sysrq_connect()
979 error = input_open_device(&sysrq->handle); in sysrq_connect()
988 input_unregister_handle(&sysrq->handle); in sysrq_connect()
996 struct sysrq_state *sysrq = handle->private; in sysrq_disconnect()
999 cancel_work_sync(&sysrq->reinject_work); in sysrq_disconnect()
1000 del_timer_sync(&sysrq->keyreset_timer); in sysrq_disconnect()
1047 unsigned long val; in sysrq_reset_seq_param_set()
1055 return -EINVAL; in sysrq_reset_seq_param_set()
1057 *((unsigned short *)kp->arg) = val; in sysrq_reset_seq_param_set()
1119 retval = -1; in __sysrq_swap_key_ops()
1150 * writing 'C' to /proc/sysrq-trigger is like sysrq-C
1159 return -EFAULT; in write_sysrq_trigger()
1176 if (!proc_create("sysrq-trigger", S_IWUSR, NULL, in sysrq_init_procfs()