All of lore.kernel.org
 help / color / mirror / Atom feed
From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: <igt-dev@lists.freedesktop.org>, Tvrtko Ursulin <tursulin@ursulin.net>
Subject: Re: [PATCH i-g-t 7/8] lib/igt_drm_fdinfo: Remove prefix arg from parse functions
Date: Wed, 3 Apr 2024 16:53:52 -0700	[thread overview]
Message-ID: <Zg3sEDKpjSyRpmEn@unerlige-ril> (raw)
In-Reply-To: <20240402221716.1840148-8-lucas.demarchi@intel.com>

On Tue, Apr 02, 2024 at 03:17:15PM -0700, Lucas De Marchi wrote:
>The prefix is not really needed and __igt_parse_drm_fdinfo()
>can simply pass l + keylen as argument which simplifies the parse
>functions.
>
>While refactoring this, it also replaces the remaining calls to index()
>to use strchr().
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>---
> lib/igt_drm_fdinfo.c | 69 ++++++++++++++++++--------------------------
> 1 file changed, 28 insertions(+), 41 deletions(-)
>
>diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c
>index a0b41e956..7a9ae94f0 100644
>--- a/lib/igt_drm_fdinfo.c
>+++ b/lib/igt_drm_fdinfo.c
>@@ -61,25 +61,23 @@ static const char *ignore_space(const char *s)
> 	return s;
> }
>
>-static int parse_engine(char *line, struct drm_client_fdinfo *info,
>-			size_t prefix_len,
>+static int parse_engine(const char *name, struct drm_client_fdinfo *info,
> 			const char **name_map, unsigned int map_entries,
> 			uint64_t *val)
> {
>-	ssize_t name_len;
>-	char *name, *p;
>+	const char *p;
>+	size_t name_len;
> 	int found = -1;
> 	unsigned int i;
>
>-	p = index(line, ':');
>-	if (!p || p == line)
>+	p = strchr(name, ':');
>+	if (!p)
> 		return -1;
>
>-	name_len = p - line - prefix_len;
>+	name_len = p - name;
> 	if (name_len < 1)
> 		return -1;
>-
>-	name = line + prefix_len;
>+	p++;
>
> 	if (name_map) {
> 		for (i = 0; i < map_entries; i++) {
>@@ -105,40 +103,30 @@ static int parse_engine(char *line, struct drm_client_fdinfo *info,
> 	}
>
> 	if (found >= 0) {
>-		while (*++p && isspace(*p));
>+		p = ignore_space(p);
> 		*val = strtoull(p, NULL, 10);
> 	}
>
> 	return found;
> }
>
>-static const char *ignore_space(const char *s)
>-{
>-	for (; *s && isspace(*s); s++)
>-		;
>-
>-	return s;
>-}

Removal of this ignore_space should be in patch 6 (like Kamil 
mentioned).

The rest of the logic is same as the previous code, so with the above 
change this is

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>-
>-static int parse_region(char *line, struct drm_client_fdinfo *info,
>-			size_t prefix_len,
>+static int parse_region(const char *name, struct drm_client_fdinfo *info,
> 			const char **region_map, unsigned int region_entries,
> 			uint64_t *val)
> {
>-	char *name, *p, *unit = NULL;
>-	ssize_t name_len;
>+	const char *p;
>+	size_t name_len;
> 	int found = -1;
> 	unsigned int i;
>
>-	p = index(line, ':');
>-	if (!p || p == line)
>+	p = strchr(name, ':');
>+	if (!p)
> 		return -1;
>
>-	name_len = p - line - prefix_len;
>+	name_len = p - name;
> 	if (name_len < 1)
> 		return -1;
>-
>-	name = line + prefix_len;
>+	p++;
>
> 	if (region_map) {
> 		for (i = 0; i < region_entries; i++) {
>@@ -170,20 +158,19 @@ static int parse_region(char *line, struct drm_client_fdinfo *info,
> 	if (found < 0)
> 		goto out;
>
>-	while (*++p && isspace(*p))
>-		;
>+	p = ignore_space(p);
> 	*val = strtoull(p, NULL, 10);
>
>-	p = index(p, ' ');
>+	p = strchr(p, ' ');
> 	if (!p)
> 		goto out;
>+	p++;
>
>-	unit = ++p;
>-	if (!strcmp(unit, "KiB")) {
>+	if (!strcmp(p, "KiB")) {
> 		*val *= 1024;
>-	} else if (!strcmp(unit, "MiB")) {
>+	} else if (!strcmp(p, "MiB")) {
> 		*val *= 1024 * 1024;
>-	} else if (!strcmp(unit, "GiB")) {
>+	} else if (!strcmp(p, "GiB")) {
> 		*val *= 1024 * 1024 * 1024;
> 	}
>
>@@ -251,14 +238,14 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
> 			v = ignore_space(v);
> 			strncpy(info->pdev, v, sizeof(info->pdev) - 1);
> 		} else if (strstartswith(l, "drm-engine-capacity-", &keylen)) {
>-			idx = parse_engine(l, info, keylen,
>+			idx = parse_engine(l + keylen, info,
> 					   name_map, map_entries, &val);
> 			if (idx >= 0) {
> 				info->capacity[idx] = val;
> 				num_capacity++;
> 			}
> 		} else if (strstartswith(l, "drm-engine-", &keylen)) {
>-			idx = parse_engine(l, info, keylen,
>+			idx = parse_engine(l + keylen, info,
> 					   name_map, map_entries, &val);
> 			if (idx >= 0) {
> 				if (!info->capacity[idx])
>@@ -269,23 +256,23 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info,
> 					info->last_engine_index = idx;
> 			}
> 		} else if (strstartswith(l, "drm-total-", &keylen)) {
>-			idx = parse_region(l, info, keylen,
>+			idx = parse_region(l + keylen, info,
> 					   region_map, region_entries, &val);
> 			UPDATE_REGION(idx, total, val);
> 		} else if (strstartswith(l, "drm-shared-", &keylen)) {
>-			idx = parse_region(l, info, keylen,
>+			idx = parse_region(l + keylen, info,
> 					   region_map, region_entries, &val);
> 			UPDATE_REGION(idx, shared, val);
> 		} else if (strstartswith(l, "drm-resident-", &keylen)) {
>-			idx = parse_region(l, info, keylen,
>+			idx = parse_region(l + keylen, info,
> 					   region_map, region_entries, &val);
> 			UPDATE_REGION(idx, resident, val);
> 		} else if (strstartswith(l, "drm-purgeable-", &keylen)) {
>-			idx = parse_region(l, info, keylen,
>+			idx = parse_region(l + keylen, info,
> 					   region_map, region_entries, &val);
> 			UPDATE_REGION(idx, purgeable, val);
> 		} else if (strstartswith(l, "drm-active-", &keylen)) {
>-			idx = parse_region(l, info, keylen,
>+			idx = parse_region(l + keylen, info,
> 					   region_map, region_entries, &val);
> 			UPDATE_REGION(idx, active, val);
> 		}
>-- 
>2.43.0
>

  reply	other threads:[~2024-04-03 23:54 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-02 22:17 [PATCH i-g-t 0/8] Refactors and fixes for drm_clients Lucas De Marchi
2024-04-02 22:17 ` [PATCH i-g-t 1/8] lib/igt_drm_clients: Use calloc Lucas De Marchi
2024-04-03 15:27   ` Umesh Nerlige Ramappa
2024-04-03 17:23   ` Kamil Konieczny
2024-04-02 22:17 ` [PATCH i-g-t 2/8] lib/igt_drm_clients: Fix sizeof calculation Lucas De Marchi
2024-04-03 15:28   ` Umesh Nerlige Ramappa
2024-04-03 17:25   ` Kamil Konieczny
2024-04-02 22:17 ` [PATCH i-g-t 3/8] lib/igt_drm_clients: Fix leaks Lucas De Marchi
2024-04-03 15:39   ` Umesh Nerlige Ramappa
2024-04-03 16:09     ` Tvrtko Ursulin
2024-04-03 17:26   ` Kamil Konieczny
2024-04-02 22:17 ` [PATCH i-g-t 4/8] gputop: Free clients on exit Lucas De Marchi
2024-04-03 16:03   ` Umesh Nerlige Ramappa
2024-04-03 16:13   ` Tvrtko Ursulin
2024-04-03 17:28   ` Kamil Konieczny
2024-04-02 22:17 ` [PATCH i-g-t 5/8] lib/igt_drm_fdinfo: Simplify find_kv() Lucas De Marchi
2024-04-03 17:48   ` Kamil Konieczny
2024-04-02 22:17 ` [PATCH i-g-t 6/8] lib/igt_drm_fdinfo: Stop passing key twice Lucas De Marchi
2024-04-03 17:56   ` Kamil Konieczny
2024-04-02 22:17 ` [PATCH i-g-t 7/8] lib/igt_drm_fdinfo: Remove prefix arg from parse functions Lucas De Marchi
2024-04-03 23:53   ` Umesh Nerlige Ramappa [this message]
2024-04-02 22:17 ` [PATCH i-g-t 8/8] lib/igt_drm_clients: lazy stat process Lucas De Marchi
2024-04-03 16:24   ` Tvrtko Ursulin
2024-04-02 23:59 ` ✗ Fi.CI.BAT: failure for Refactors and fixes for drm_clients Patchwork
2024-04-03  0:31 ` ✓ CI.xeBAT: success " Patchwork

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=Zg3sEDKpjSyRpmEn@unerlige-ril \
    --to=umesh.nerlige.ramappa@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    --cc=tursulin@ursulin.net \
    /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.