The kernel version used to build Weston isn't necessarily the same as the
version that will be used to run it. Weston should already work fine on
older versions: the second ioctl will return an error - but it's ok as long
as the first one succeeds.

Also, a compile-time check would prevent Weston built on an old kernel from
taking advantage of new features when running on a new kernel.


On Tue, Sep 27, 2016 at 9:37 AM, Krzysztof Konopko <[email protected]> wrote:

> From: Tomasz SZKUTKOWSKI <[email protected]>
>
> This patch disables unsupported ioctl `KDGKBMODE K_OFF` command if Weston
> is built against kernel older than 2.6.39, as this ioctl has been
> introduced in 2.6.39 kernel version.
>
> No functional changes have been observed by disabling this ioctl.
>
> Signed-off-by: Tomasz SZKUTKOWSKI <[email protected]>
> Signed-off-by: Krzysztof Konopko <[email protected]>
> ---
>  libweston/launcher-direct.c | 5 +++++
>  libweston/weston-launch.c   | 5 +++++
>  2 files changed, 10 insertions(+)
>
> diff --git a/libweston/launcher-direct.c b/libweston/launcher-direct.c
> index 29d9c28..34fe5cd 100644
> --- a/libweston/launcher-direct.c
> +++ b/libweston/launcher-direct.c
> @@ -34,6 +34,7 @@
>  #include <linux/vt.h>
>  #include <linux/kd.h>
>  #include <linux/major.h>
> +#include <linux/version.h>
>
>  #include "launcher-impl.h"
>
> @@ -157,8 +158,12 @@ setup_tty(struct launcher_direct *launcher, int tty)
>                 goto err_close;
>         }
>
> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)
>         if (ioctl(launcher->tty, KDSKBMUTE, 1) &&
>             ioctl(launcher->tty, KDSKBMODE, K_OFF)) {
> +#else
> +       if (ioctl(launcher->tty, KDSKBMUTE, 1)) {
> +#endif
>                 weston_log("failed to set K_OFF keyboard mode: %m\n");
>                 goto err_close;
>         }
> diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
> index 140fde1..74b80dd 100644
> --- a/libweston/weston-launch.c
> +++ b/libweston/weston-launch.c
> @@ -49,6 +49,7 @@
>  #include <linux/vt.h>
>  #include <linux/major.h>
>  #include <linux/kd.h>
> +#include <linux/version.h>
>
>  #include <pwd.h>
>  #include <grp.h>
> @@ -561,8 +562,12 @@ setup_tty(struct weston_launch *wl, const char *tty)
>         if (ioctl(wl->tty, KDGKBMODE, &wl->kb_mode))
>                 error(1, errno, "failed to get current keyboard mode:
> %m\n");
>
> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)
>         if (ioctl(wl->tty, KDSKBMUTE, 1) &&
>             ioctl(wl->tty, KDSKBMODE, K_OFF))
> +#else
> +       if (ioctl(wl->tty, KDSKBMUTE, 1))
> +#endif
>                 error(1, errno, "failed to set K_OFF keyboard mode: %m\n");
>
>         if (ioctl(wl->tty, KDSETMODE, KD_GRAPHICS))
> --
> 2.1.4
>
> This transmission contains information that may be confidential and
> contain personal views which are not necessarily those of YouView TV Ltd.
> YouView TV Ltd (Co No:7308805) is a limited liability company registered in
> England and Wales with its registered address at YouView TV Ltd, 3rd Floor,
> 10 Lower Thames Street, London, EC3R 6YT. For details see our web site at
> http://www.youview.com
> _______________________________________________
> wayland-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to