All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vidya Srinivas <vidya.srinivas@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Vidya Srinivas <vidya.srinivas@intel.com>,
	Kamil Konieczny <kamil.konieczny@linux.intel.com>
Subject: [PATCH] tools/gputop: Fix zero output when stdout is not a terminal
Date: Mon,  6 Apr 2026 11:32:46 +0530	[thread overview]
Message-ID: <20260406060247.126979-1-vidya.srinivas@intel.com> (raw)
In-Reply-To: <20260402134522.108322-1-vidya.srinivas@intel.com>

When gputop's output is redirected to a file or run via adb shell
(e.g., on Android), update_console_size() calls ioctl(0, TIOCGWINSZ)
on stdin which may not be a terminal. If stdin is a pipe or
redirected, the ioctl returns -1 and con_w/con_h remain at their
initial value of -1.

This causes the main display loop to immediately break since
'lines >= con_h' evaluates to true (0 >= -1), resulting in zero
output being produced.

Fix this by trying ioctl on stdout first, then stdin, then stderr
before falling back to a default of 80x50. This ensures the real
terminal size is obtained when any of the standard file descriptors
is connected to a terminal, and provides a sensible default when
none are (e.g., full redirection or adb shell).

This affects anyone using gputop in automation, CI pipelines, or any
non-interactive context on Linux and Android where output is
redirected or piped.

v2: Try stdout, stdin, and stderr for terminal size before falling
    back to defaults (Soham Purkait)

Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
---
 tools/gputop.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/gputop.c b/tools/gputop.c
index 9b2e8cb6f..3b5e3c0cf 100644
--- a/tools/gputop.c
+++ b/tools/gputop.c
@@ -505,8 +505,13 @@ static void update_console_size(int *w, int *h)
 {
 	struct winsize ws = {};
 
-	if (ioctl(0, TIOCGWINSZ, &ws) == -1)
+	if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1 &&
+	    ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) == -1 &&
+	    ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) == -1) {
+		*w = 80;
+		*h = 50;
 		return;
+	}
 
 	*w = ws.ws_col;
 	*h = ws.ws_row;
-- 
2.45.2


  parent reply	other threads:[~2026-04-06  6:07 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-02 13:45 [PATCH] tools/gputop: Fix zero output when stdout is not a terminal Vidya Srinivas
2026-04-02 14:56 ` Kamil Konieczny
2026-04-06  3:27   ` Srinivas, Vidya
2026-04-06  4:56 ` Purkait, Soham
2026-04-06  5:41   ` Srinivas, Vidya
2026-04-06 16:34     ` Purkait, Soham
2026-04-07 13:47       ` Srinivas, Vidya
2026-04-06  6:02 ` Vidya Srinivas [this message]
2026-04-06  7:54 ` ✓ Xe.CI.BAT: success for tools/gputop: Fix zero output when stdout is not a terminal (rev2) Patchwork
2026-04-06  8:11 ` ✓ i915.CI.BAT: " Patchwork
2026-04-06 10:26 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-04-06 11:20 ` ✗ i915.CI.Full: " Patchwork
2026-04-07 13:39 ` [PATCH] tools/gputop: Fix zero output when stdout is not a terminal Vidya Srinivas
2026-04-09  9:21   ` Purkait, Soham
2026-04-09 13:23   ` [PATCH] " Kamil Konieczny
2026-04-09 16:58     ` Srinivas, Vidya
2026-05-14 14:56   ` Kamil Konieczny
2026-05-15  1:55     ` Srinivas, Vidya

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260406060247.126979-1-vidya.srinivas@intel.com \
    --to=vidya.srinivas@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=kamil.konieczny@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.