]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
terminal: introduce lxc_terminal_signal_sigmask_safe_blocked()
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 2 Sep 2020 07:28:12 +0000 (09:28 +0200)
committerScott Parlane <scott.parlane@alliedtelesis.co.nz>
Wed, 2 Sep 2020 20:40:42 +0000 (08:40 +1200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/terminal.c
src/lxc/terminal.h

index 2a1925baff934036c136955daed8f2f76a489860..0d904646965452ba8c406aa72bd78758950bb401 100644 (file)
@@ -147,6 +147,16 @@ struct lxc_terminal_state *lxc_terminal_signal_init(int srcfd, int dstfd)
        return move_ptr(ts);
 }
 
+int lxc_terminal_signal_sigmask_safe_blocked(struct lxc_terminal *terminal)
+{
+       struct lxc_terminal_state *state = terminal->tty_state;
+
+       if (!state)
+               return 0;
+
+       return pthread_sigmask(SIG_SETMASK, &state->oldmask, NULL);
+}
+
 /**
  * lxc_terminal_signal_fini: uninstall signal handler
  *
index 7d402a264ae3e6e0fb2268517e53788553d1191b..8bf2bda76b43f9b8127a6e1c711e0523370af106 100644 (file)
@@ -251,5 +251,6 @@ __hidden extern int lxc_terminal_prepare_login(int fd);
 __hidden extern void lxc_terminal_conf_free(struct lxc_terminal *terminal);
 __hidden extern void lxc_terminal_info_init(struct lxc_terminal_info *terminal);
 __hidden extern void lxc_terminal_init(struct lxc_terminal *terminal);
+__hidden extern int lxc_terminal_signal_sigmask_safe_blocked(struct lxc_terminal *terminal);
 
 #endif /* __LXC_TERMINAL_H */