]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rtla: Simplify code by caching string lengths
authorWander Lairson Costa <wander@redhat.com>
Mon, 9 Mar 2026 19:46:19 +0000 (16:46 -0300)
committerTomas Glozar <tglozar@redhat.com>
Tue, 10 Mar 2026 09:32:37 +0000 (10:32 +0100)
Simplify trace_event_save_hist() and set_comm_cgroup() by computing
string lengths once and storing them in local variables, rather than
calling strlen() multiple times on the same unchanged strings. This
makes the code clearer by eliminating redundant function calls and
improving readability.

In trace_event_save_hist(), the write loop previously called strlen()
on the hist buffer twice per iteration for both the size calculation
and loop condition. Store the length in hist_len before entering the
loop. In set_comm_cgroup(), strlen() was called on cgroup_path up to
three times in succession. Store the result in cg_path_len to use in
both the offset calculation and size parameter for subsequent append
operations.

This simplification makes the code easier to read and maintain without
changing program behavior.

Signed-off-by: Wander Lairson Costa <wander@redhat.com>
Link: https://lore.kernel.org/r/20260309195040.1019085-7-wander@redhat.com
Signed-off-by: Tomas Glozar <tglozar@redhat.com>
tools/tracing/rtla/src/trace.c
tools/tracing/rtla/src/utils.c

index e1af54f9531b87465b84f820416110e08a436aae..2f529aaf8deef29904e9a04ca713a17ddb78130d 100644 (file)
@@ -346,6 +346,7 @@ static void trace_event_save_hist(struct trace_instance *instance,
        mode_t mode = 0644;
        char path[MAX_PATH];
        char *hist;
+       size_t hist_len;
 
        if (!tevent)
                return;
@@ -376,9 +377,10 @@ static void trace_event_save_hist(struct trace_instance *instance,
        }
 
        index = 0;
+       hist_len = strlen(hist);
        do {
-               index += write(out_fd, &hist[index], strlen(hist) - index);
-       } while (index < strlen(hist));
+               index += write(out_fd, &hist[index], hist_len - index);
+       } while (index < hist_len);
 
        free(hist);
 out_close:
index 7da1913c5c02e7e577896e545f12a1ec670d8ca2..ce8b1aa012ecf7197c10a4c77338f8c9007ef55d 100644 (file)
@@ -819,6 +819,7 @@ static int open_cgroup_procs(const char *cgroup)
        char cgroup_procs[MAX_PATH];
        int retval;
        int cg_fd;
+       size_t cg_path_len;
 
        retval = find_mount("cgroup2", cgroup_path, sizeof(cgroup_path));
        if (!retval) {
@@ -826,16 +827,18 @@ static int open_cgroup_procs(const char *cgroup)
                return -1;
        }
 
+       cg_path_len = strlen(cgroup_path);
+
        if (!cgroup) {
-               retval = get_self_cgroup(&cgroup_path[strlen(cgroup_path)],
-                               sizeof(cgroup_path) - strlen(cgroup_path));
+               retval = get_self_cgroup(&cgroup_path[cg_path_len],
+                               sizeof(cgroup_path) - cg_path_len);
                if (!retval) {
                        err_msg("Did not find self cgroup\n");
                        return -1;
                }
        } else {
-               snprintf(&cgroup_path[strlen(cgroup_path)],
-                               sizeof(cgroup_path) - strlen(cgroup_path), "%s/", cgroup);
+               snprintf(&cgroup_path[cg_path_len],
+                               sizeof(cgroup_path) - cg_path_len, "%s/", cgroup);
        }
 
        snprintf(cgroup_procs, MAX_PATH, "%s/cgroup.procs", cgroup_path);