Commit 3ce0d580 authored by Jiri Slaby's avatar Jiri Slaby Committed by Kelsey Skunberg

vt: ioctl, switch VT_IS_IN_USE and VT_BUSY to inlines

BugLink: https://bugs.launchpad.net/bugs/1873852

commit e587e8f1 upstream.

These two were macros. Switch them to static inlines, so that it's more
understandable what they are doing.
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20200219073951.16151-2-jslaby@suse.czSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarKleber Sacilotto de Souza <kleber.souza@canonical.com>
Signed-off-by: default avatarKelsey Skunberg <kelsey.skunberg@canonical.com>
parent 0e667836
...@@ -39,10 +39,25 @@ ...@@ -39,10 +39,25 @@
#include <linux/selection.h> #include <linux/selection.h>
char vt_dont_switch; char vt_dont_switch;
extern struct tty_driver *console_driver;
#define VT_IS_IN_USE(i) (console_driver->ttys[i] && console_driver->ttys[i]->count) static inline bool vt_in_use(unsigned int i)
#define VT_BUSY(i) (VT_IS_IN_USE(i) || i == fg_console || vc_is_sel(vc_cons[i].d)) {
extern struct tty_driver *console_driver;
return console_driver->ttys[i] && console_driver->ttys[i]->count;
}
static inline bool vt_busy(int i)
{
if (vt_in_use(i))
return true;
if (i == fg_console)
return true;
if (vc_is_sel(vc_cons[i].d))
return true;
return false;
}
/* /*
* Console (vt and kd) routines, as defined by USL SVR4 manual, and by * Console (vt and kd) routines, as defined by USL SVR4 manual, and by
...@@ -292,7 +307,7 @@ static int vt_disallocate(unsigned int vc_num) ...@@ -292,7 +307,7 @@ static int vt_disallocate(unsigned int vc_num)
int ret = 0; int ret = 0;
console_lock(); console_lock();
if (VT_BUSY(vc_num)) if (vt_busy(vc_num))
ret = -EBUSY; ret = -EBUSY;
else if (vc_num) else if (vc_num)
vc = vc_deallocate(vc_num); vc = vc_deallocate(vc_num);
...@@ -314,7 +329,7 @@ static void vt_disallocate_all(void) ...@@ -314,7 +329,7 @@ static void vt_disallocate_all(void)
console_lock(); console_lock();
for (i = 1; i < MAX_NR_CONSOLES; i++) for (i = 1; i < MAX_NR_CONSOLES; i++)
if (!VT_BUSY(i)) if (!vt_busy(i))
vc[i] = vc_deallocate(i); vc[i] = vc_deallocate(i);
else else
vc[i] = NULL; vc[i] = NULL;
...@@ -651,7 +666,7 @@ int vt_ioctl(struct tty_struct *tty, ...@@ -651,7 +666,7 @@ int vt_ioctl(struct tty_struct *tty,
state = 1; /* /dev/tty0 is always open */ state = 1; /* /dev/tty0 is always open */
for (i = 0, mask = 2; i < MAX_NR_CONSOLES && mask; for (i = 0, mask = 2; i < MAX_NR_CONSOLES && mask;
++i, mask <<= 1) ++i, mask <<= 1)
if (VT_IS_IN_USE(i)) if (vt_in_use(i))
state |= mask; state |= mask;
ret = put_user(state, &vtstat->v_state); ret = put_user(state, &vtstat->v_state);
} }
...@@ -664,7 +679,7 @@ int vt_ioctl(struct tty_struct *tty, ...@@ -664,7 +679,7 @@ int vt_ioctl(struct tty_struct *tty,
case VT_OPENQRY: case VT_OPENQRY:
/* FIXME: locking ? - but then this is a stupid API */ /* FIXME: locking ? - but then this is a stupid API */
for (i = 0; i < MAX_NR_CONSOLES; ++i) for (i = 0; i < MAX_NR_CONSOLES; ++i)
if (! VT_IS_IN_USE(i)) if (!vt_in_use(i))
break; break;
uival = i < MAX_NR_CONSOLES ? (i+1) : -1; uival = i < MAX_NR_CONSOLES ? (i+1) : -1;
goto setint; goto setint;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment