cregit-Linux how code gets into the kernel

Release 4.7 drivers/s390/char/ctrlchar.c

/*
 *  Unified handling of special chars.
 *
 *    Copyright IBM Corp. 2001
 *    Author(s): Fritz Elfert <felfert@millenux.com> <elfert@de.ibm.com>
 *
 */

#include <linux/stddef.h>
#include <asm/errno.h>
#include <linux/sysrq.h>
#include <linux/ctype.h>

#include "ctrlchar.h"

#ifdef CONFIG_MAGIC_SYSRQ

static struct sysrq_work ctrlchar_sysrq;


static void ctrlchar_handle_sysrq(struct work_struct *work) { struct sysrq_work *sysrq = container_of(work, struct sysrq_work, work); handle_sysrq(sysrq->key); }

Contributors

PersonTokensPropCommitsCommitProp
hendrik bruecknerhendrik brueckner1854.55%133.33%
linus torvaldslinus torvalds1236.36%133.33%
andrew mortonandrew morton39.09%133.33%
Total33100.00%3100.00%


void schedule_sysrq_work(struct sysrq_work *sw) { INIT_WORK(&sw->work, ctrlchar_handle_sysrq); schedule_work(&sw->work); }

Contributors

PersonTokensPropCommitsCommitProp
hendrik bruecknerhendrik brueckner2382.14%133.33%
martin schwidefskymartin schwidefsky310.71%133.33%
linus torvaldslinus torvalds27.14%133.33%
Total28100.00%3100.00%

#endif /** * Check for special chars at start of input. * * @param buf Console input buffer. * @param len Length of valid data in buffer. * @param tty The tty struct for this console. * @return CTRLCHAR_NONE, if nothing matched, * CTRLCHAR_SYSRQ, if sysrq was encountered * otherwise char to be inserted logically or'ed * with CTRLCHAR_CTRL */
unsigned int ctrlchar_handle(const unsigned char *buf, int len, struct tty_struct *tty) { if ((len < 2) || (len > 3)) return CTRLCHAR_NONE; /* hat is 0xb1 in codepage 037 (US etc.) and thus */ /* converted to 0x5e in ascii ('^') */ if ((buf[0] != '^') && (buf[0] != '\252')) return CTRLCHAR_NONE; #ifdef CONFIG_MAGIC_SYSRQ /* racy */ if (len == 3 && buf[1] == '-') { ctrlchar_sysrq.key = buf[2]; schedule_sysrq_work(&ctrlchar_sysrq); return CTRLCHAR_SYSRQ; } #endif if (len != 2) return CTRLCHAR_NONE; switch (tolower(buf[1])) { case 'c': return INTR_CHAR(tty) | CTRLCHAR_CTRL; case 'd': return EOF_CHAR(tty) | CTRLCHAR_CTRL; case 'z': return SUSP_CHAR(tty) | CTRLCHAR_CTRL; } return CTRLCHAR_NONE; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds11270.89%125.00%
martin schwidefskymartin schwidefsky4125.95%250.00%
hendrik bruecknerhendrik brueckner53.16%125.00%
Total158100.00%4100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds14257.72%114.29%
martin schwidefskymartin schwidefsky5120.73%342.86%
hendrik bruecknerhendrik brueckner4919.92%114.29%
andrew mortonandrew morton31.22%114.29%
heiko carstensheiko carstens10.41%114.29%
Total246100.00%7100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}