Lines Matching refs:sysrq

733 	struct sysrq_state *sysrq =  in sysrq_reinject_alt_sysrq()  local
735 struct input_handle *handle = &sysrq->handle; in sysrq_reinject_alt_sysrq()
736 unsigned int alt_code = sysrq->alt_use; in sysrq_reinject_alt_sysrq()
738 if (sysrq->need_reinject) { in sysrq_reinject_alt_sysrq()
740 sysrq->reinjecting = true; in sysrq_reinject_alt_sysrq()
753 sysrq->reinjecting = false; in sysrq_reinject_alt_sysrq()
757 static bool sysrq_handle_keypress(struct sysrq_state *sysrq, in sysrq_handle_keypress() argument
760 bool was_active = sysrq->active; in sysrq_handle_keypress()
769 if (sysrq->active && code == sysrq->alt_use) in sysrq_handle_keypress()
770 sysrq->active = false; in sysrq_handle_keypress()
772 sysrq->alt = KEY_RESERVED; in sysrq_handle_keypress()
775 sysrq->alt = code; in sysrq_handle_keypress()
776 sysrq->need_reinject = false; in sysrq_handle_keypress()
781 if (value == 1 && sysrq->alt != KEY_RESERVED) { in sysrq_handle_keypress()
782 sysrq->active = true; in sysrq_handle_keypress()
783 sysrq->alt_use = sysrq->alt; in sysrq_handle_keypress()
788 sysrq->need_reinject = true; in sysrq_handle_keypress()
799 if (sysrq->active) in sysrq_handle_keypress()
800 clear_bit(KEY_SYSRQ, sysrq->handle.dev->key); in sysrq_handle_keypress()
805 if (sysrq->active && value && value != 2) { in sysrq_handle_keypress()
806 sysrq->need_reinject = false; in sysrq_handle_keypress()
812 suppress = sysrq->active; in sysrq_handle_keypress()
814 if (!sysrq->active) { in sysrq_handle_keypress()
819 if (sysrq->reset_seq_version != sysrq_reset_seq_version) in sysrq_handle_keypress()
820 sysrq_parse_reset_sequence(sysrq); in sysrq_handle_keypress()
828 set_bit(code, sysrq->key_down); in sysrq_handle_keypress()
830 clear_bit(code, sysrq->key_down); in sysrq_handle_keypress()
833 schedule_work(&sysrq->reinject_work); in sysrq_handle_keypress()
836 sysrq_detect_reset_sequence(sysrq, code, value); in sysrq_handle_keypress()
838 } else if (value == 0 && test_and_clear_bit(code, sysrq->key_down)) { in sysrq_handle_keypress()
852 struct sysrq_state *sysrq = handle->private; in sysrq_filter() local
859 if (sysrq->reinjecting) in sysrq_filter()
869 suppress = sysrq_handle_keypress(sysrq, code, value); in sysrq_filter()
873 suppress = sysrq->active; in sysrq_filter()
884 struct sysrq_state *sysrq; in sysrq_connect() local
887 sysrq = kzalloc(sizeof(struct sysrq_state), GFP_KERNEL); in sysrq_connect()
888 if (!sysrq) in sysrq_connect()
891 INIT_WORK(&sysrq->reinject_work, sysrq_reinject_alt_sysrq); in sysrq_connect()
893 sysrq->handle.dev = dev; in sysrq_connect()
894 sysrq->handle.handler = handler; in sysrq_connect()
895 sysrq->handle.name = "sysrq"; in sysrq_connect()
896 sysrq->handle.private = sysrq; in sysrq_connect()
897 setup_timer(&sysrq->keyreset_timer, in sysrq_connect()
898 sysrq_do_reset, (unsigned long)sysrq); in sysrq_connect()
900 error = input_register_handle(&sysrq->handle); in sysrq_connect()
907 error = input_open_device(&sysrq->handle); in sysrq_connect()
916 input_unregister_handle(&sysrq->handle); in sysrq_connect()
918 kfree(sysrq); in sysrq_connect()
924 struct sysrq_state *sysrq = handle->private; in sysrq_disconnect() local
927 cancel_work_sync(&sysrq->reinject_work); in sysrq_disconnect()
928 del_timer_sync(&sysrq->keyreset_timer); in sysrq_disconnect()
930 kfree(sysrq); in sysrq_disconnect()