diff options
Diffstat (limited to 'src/ck-sysdeps-freebsd.c')
-rw-r--r-- | src/ck-sysdeps-freebsd.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/ck-sysdeps-freebsd.c b/src/ck-sysdeps-freebsd.c index 0e7f845..99a1791 100644 --- a/src/ck-sysdeps-freebsd.c +++ b/src/ck-sysdeps-freebsd.c @@ -35,6 +35,9 @@ #include <sys/stat.h> #include <sys/sysctl.h> #include <sys/user.h> +#include <sys/ioctl.h> + +#include <sys/consio.h> #define DEV_ENCODE(M,m) ( \ ( (M&0xfff) << 8) | ( (m&0xfff00) << 12) | (m&0xff) \ @@ -42,6 +45,10 @@ #include "ck-sysdeps.h" +#ifndef ERROR +#define ERROR -1 +#endif + /* adapted from procps */ struct _CkProcessStat { @@ -412,3 +419,33 @@ ck_get_console_num_from_device (const char *device, return ret; } + +gboolean +ck_get_active_console_num (int console_fd, + guint *num) +{ + gboolean ret; + int res; + int active; + + g_assert (console_fd != -1); + + active = 0; + ret = FALSE; + + res = ioctl (console_fd, VT_GETACTIVE, &active); + if (res == ERROR) { + perror ("ioctl VT_GETACTIVE"); + goto out; + } + + g_debug ("Active VT is: ttyv%d", active); + ret = TRUE; + + out: + if (num != NULL) { + *num = active; + } + + return ret; +} |