mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 02:38:11 +00:00
Kernel+LibC+UE: Introduce SIGINFO (generated with ^T)
This signal is ignored by default, but can be caught to implement state reporting a la BSD. :^)
This commit is contained in:
parent
687aad01be
commit
f8e59addf7
5 changed files with 10 additions and 4 deletions
|
@ -1109,11 +1109,11 @@ static DefaultSignalAction default_signal_action(int signal)
|
||||||
case SIGIO:
|
case SIGIO:
|
||||||
case SIGPROF:
|
case SIGPROF:
|
||||||
case SIGTERM:
|
case SIGTERM:
|
||||||
case SIGPWR:
|
|
||||||
return DefaultSignalAction::Terminate;
|
return DefaultSignalAction::Terminate;
|
||||||
case SIGCHLD:
|
case SIGCHLD:
|
||||||
case SIGURG:
|
case SIGURG:
|
||||||
case SIGWINCH:
|
case SIGWINCH:
|
||||||
|
case SIGINFO:
|
||||||
return DefaultSignalAction::Ignore;
|
return DefaultSignalAction::Ignore;
|
||||||
case SIGQUIT:
|
case SIGQUIT:
|
||||||
case SIGILL:
|
case SIGILL:
|
||||||
|
|
|
@ -48,7 +48,7 @@ void TTY::set_default_termios()
|
||||||
{
|
{
|
||||||
memset(&m_termios, 0, sizeof(m_termios));
|
memset(&m_termios, 0, sizeof(m_termios));
|
||||||
m_termios.c_lflag |= ISIG | ECHO | ICANON;
|
m_termios.c_lflag |= ISIG | ECHO | ICANON;
|
||||||
static const char default_cc[32] = "\003\034\010\025\004\0\1\0\021\023\032\0\022\017\027\026\0";
|
static const char default_cc[32] = "\003\034\010\025\004\0\1\0\021\023\032\0\022\017\027\026\0\024";
|
||||||
memcpy(m_termios.c_cc, default_cc, sizeof(default_cc));
|
memcpy(m_termios.c_cc, default_cc, sizeof(default_cc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,6 +141,11 @@ bool TTY::is_werase(u8 ch) const
|
||||||
void TTY::emit(u8 ch)
|
void TTY::emit(u8 ch)
|
||||||
{
|
{
|
||||||
if (should_generate_signals()) {
|
if (should_generate_signals()) {
|
||||||
|
if (ch == m_termios.c_cc[VINFO]) {
|
||||||
|
dbg() << tty_name() << ": VINFO pressed!";
|
||||||
|
generate_signal(SIGINFO);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (ch == m_termios.c_cc[VINTR]) {
|
if (ch == m_termios.c_cc[VINTR]) {
|
||||||
dbg() << tty_name() << ": VINTR pressed!";
|
dbg() << tty_name() << ": VINTR pressed!";
|
||||||
generate_signal(SIGINT);
|
generate_signal(SIGINT);
|
||||||
|
|
|
@ -433,11 +433,11 @@ static DefaultSignalAction default_signal_action(u8 signal)
|
||||||
case SIGIO:
|
case SIGIO:
|
||||||
case SIGPROF:
|
case SIGPROF:
|
||||||
case SIGTERM:
|
case SIGTERM:
|
||||||
case SIGPWR:
|
|
||||||
return DefaultSignalAction::Terminate;
|
return DefaultSignalAction::Terminate;
|
||||||
case SIGCHLD:
|
case SIGCHLD:
|
||||||
case SIGURG:
|
case SIGURG:
|
||||||
case SIGWINCH:
|
case SIGWINCH:
|
||||||
|
case SIGINFO:
|
||||||
return DefaultSignalAction::Ignore;
|
return DefaultSignalAction::Ignore;
|
||||||
case SIGQUIT:
|
case SIGQUIT:
|
||||||
case SIGILL:
|
case SIGILL:
|
||||||
|
|
|
@ -155,6 +155,7 @@ enum {
|
||||||
#define VWERASE 14
|
#define VWERASE 14
|
||||||
#define VLNEXT 15
|
#define VLNEXT 15
|
||||||
#define VEOL2 16
|
#define VEOL2 16
|
||||||
|
#define VINFO 17
|
||||||
|
|
||||||
/* c_iflag bits */
|
/* c_iflag bits */
|
||||||
#define IGNBRK 0000001
|
#define IGNBRK 0000001
|
||||||
|
|
|
@ -56,6 +56,6 @@
|
||||||
#define SIGPROF 27
|
#define SIGPROF 27
|
||||||
#define SIGWINCH 28
|
#define SIGWINCH 28
|
||||||
#define SIGIO 29
|
#define SIGIO 29
|
||||||
#define SIGPWR 30
|
#define SIGINFO 30
|
||||||
#define SIGSYS 31
|
#define SIGSYS 31
|
||||||
#define NSIG 32
|
#define NSIG 32
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue