[igt-dev] [PATCH i-g-t 4/5] tools: move terminal utility functions to a separate file

Petri Latvala petri.latvala at intel.com
Tue Sep 15 07:39:28 UTC 2020


On Thu, Sep 03, 2020 at 05:54:38PM -0700, Abhinav Kumar wrote:
> Move the terminal utility functions to a separate file so
> that other modules can use it as well.
> 
> Signed-off-by: Abhinav Kumar <abhinavk at codeaurora.org>

Reviewed-by: Petri Latvala <petri.latvala at intel.com>



> ---
>  tools/Makefile.sources       |  1 +
>  tools/igt_compliance_utils.c | 82 ++++++++++++++++++++++++++++++++++++
>  tools/igt_dp_compliance.h    |  8 ++++
>  tools/intel_dp_compliance.c  | 47 ---------------------
>  tools/meson.build            |  3 +-
>  5 files changed, 93 insertions(+), 48 deletions(-)
>  create mode 100644 tools/igt_compliance_utils.c
> 
> diff --git a/tools/Makefile.sources b/tools/Makefile.sources
> index c28bef2f..47171490 100644
> --- a/tools/Makefile.sources
> +++ b/tools/Makefile.sources
> @@ -65,6 +65,7 @@ intel_dp_compliance_SOURCES = \
>          intel_dp_compliance.c \
>          igt_dp_compliance.h \
>          igt_dp_compliance_hotplug.c \
> +        igt_compliance_utils.c \
>          $(NULL)
>  
>  amd_hdmi_compliance_SOURCES = \
> diff --git a/tools/igt_compliance_utils.c b/tools/igt_compliance_utils.c
> new file mode 100644
> index 00000000..d6a2e4e5
> --- /dev/null
> +++ b/tools/igt_compliance_utils.c
> @@ -0,0 +1,82 @@
> +/*
> + * Copyright (c) 2020, The Linux Foundation. All rights reserved.
> + * Copyright 2017 Intel Corporation
> + *   Jesse Barnes <jesse.barnes at intel.com>
> + *   Manasi Navare <manasi.d.navare at intel.com>
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#include "igt.h"
> +#include <stdio.h>
> +#include <string.h>
> +#include <stdlib.h>
> +#include <signal.h>
> +#include <termios.h>
> +
> +#include <sys/stat.h>
> +
> +#include "igt_dp_compliance.h"
> +
> +static int tio_fd;
> +struct termios saved_tio;
> +
> +void enter_exec_path(char **argv)
> +{
> +	char *exec_path = NULL;
> +	char *pos = NULL;
> +	short len_path = 0;
> +	int ret;
> +
> +	len_path = strlen(argv[0]);
> +	exec_path = (char *) malloc(len_path);
> +
> +	memcpy(exec_path, argv[0], len_path);
> +	pos = strrchr(exec_path, '/');
> +	if (pos != NULL)
> +		*(pos+1) = '\0';
> +
> +	ret = chdir(exec_path);
> +	igt_assert_eq(ret, 0);
> +	free(exec_path);
> +}
> +
> +static void restore_termio_mode(int sig)
> +{
> +	tcsetattr(tio_fd, TCSANOW, &saved_tio);
> +	close(tio_fd);
> +}
> +
> +void set_termio_mode(void)
> +{
> +	struct termios tio;
> +
> +	/* don't attempt to set terminal attributes if not in the foreground
> +	 * process group
> +	 */
> +	if (getpgrp() != tcgetpgrp(STDOUT_FILENO))
> +		return;
> +
> +	tio_fd = dup(STDIN_FILENO);
> +	tcgetattr(tio_fd, &saved_tio);
> +	igt_install_exit_handler(restore_termio_mode);
> +	tio = saved_tio;
> +	tio.c_lflag &= ~(ICANON | ECHO);
> +	tcsetattr(tio_fd, TCSANOW, &tio);
> +}
> diff --git a/tools/igt_dp_compliance.h b/tools/igt_dp_compliance.h
> index bf2b0701..5b168803 100644
> --- a/tools/igt_dp_compliance.h
> +++ b/tools/igt_dp_compliance.h
> @@ -22,6 +22,9 @@
>   * IN THE SOFTWARE.
>   */
>  
> +#ifndef __IGT_DP_COMPLIANCE_H__
> +#define __IGT_DP_COMPLIANCE_H__
> +
>  #include <stdio.h>
>  #include <string.h>
>  #include <stdlib.h>
> @@ -32,5 +35,10 @@ extern int drm_fd;
>  gboolean igt_dp_compliance_setup_hotplug(void);
>  void igt_dp_compliance_cleanup_hotplug(void);
>  
> +void enter_exec_path(char **argv);
> +void set_termio_mode(void);
> +
>  /* called by the hotplug code */
>  int update_display(int mode, bool is_compliance_test);
> +
> +#endif /* __IGT_DP_COMPLIANCE_H__ */
> diff --git a/tools/intel_dp_compliance.c b/tools/intel_dp_compliance.c
> index c8c5c841..217a1247 100644
> --- a/tools/intel_dp_compliance.c
> +++ b/tools/intel_dp_compliance.c
> @@ -172,9 +172,6 @@ uint16_t hdisplay;
>  uint16_t vdisplay;
>  uint8_t bitdepth;
>  
> -static int tio_fd;
> -struct termios saved_tio;
> -
>  drmModeRes *resources;
>  int drm_fd, modes, gen;
>  uint64_t tiling = LOCAL_DRM_FORMAT_MOD_NONE;
> @@ -825,50 +822,6 @@ static gboolean input_event(GIOChannel *source, GIOCondition condition,
>  	return TRUE;
>  }
>  
> -static void enter_exec_path(char **argv)
> -{
> -	char *exec_path = NULL;
> -	char *pos = NULL;
> -	short len_path = 0;
> -	int ret;
> -
> -	len_path = strlen(argv[0]);
> -	exec_path = (char *) malloc(len_path);
> -
> -	memcpy(exec_path, argv[0], len_path);
> -	pos = strrchr(exec_path, '/');
> -	if (pos != NULL)
> -		*(pos+1) = '\0';
> -
> -	ret = chdir(exec_path);
> -	igt_assert_eq(ret, 0);
> -	free(exec_path);
> -}
> -
> -static void restore_termio_mode(int sig)
> -{
> -	tcsetattr(tio_fd, TCSANOW, &saved_tio);
> -	close(tio_fd);
> -}
> -
> -static void set_termio_mode(void)
> -{
> -	struct termios tio;
> -
> -	/* don't attempt to set terminal attributes if not in the foreground
> -	 * process group
> -	 */
> -	if (getpgrp() != tcgetpgrp(STDOUT_FILENO))
> -		return;
> -
> -	tio_fd = dup(STDIN_FILENO);
> -	tcgetattr(tio_fd, &saved_tio);
> -	igt_install_exit_handler(restore_termio_mode);
> -	tio = saved_tio;
> -	tio.c_lflag &= ~(ICANON | ECHO);
> -	tcsetattr(tio_fd, TCSANOW, &tio);
> -}
> -
>  int main(int argc, char **argv)
>  {
>  	int c;
> diff --git a/tools/meson.build b/tools/meson.build
> index 05f2a172..56877fb3 100644
> --- a/tools/meson.build
> +++ b/tools/meson.build
> @@ -60,7 +60,8 @@ endforeach
>  if libudev.found()
>  	intel_dp_compliance_src = [
>  		'intel_dp_compliance.c',
> -		'igt_dp_compliance_hotplug.c'
> +		'igt_dp_compliance_hotplug.c',
> +		'igt_compliance_utils.c'
>  	]
>  	executable('intel_dp_compliance', sources : intel_dp_compliance_src,
>  		   dependencies : [tool_deps, libudev],
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev


More information about the igt-dev mailing list