perf bench syscall: Add getpgid syscall benchmark
authorTiezhu Yang <yangtiezhu@loongson.cn>
Thu, 10 Nov 2022 03:50:07 +0000 (11:50 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 2 Feb 2023 19:32:19 +0000 (16:32 -0300)
This commit adds a simple getpgid syscall benchmark, more syscall
benchmarks can be added in the future.

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/1668052208-14047-4-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/arch/x86/include/uapi/asm/unistd_32.h
tools/arch/x86/include/uapi/asm/unistd_64.h
tools/perf/bench/bench.h
tools/perf/bench/syscall.c
tools/perf/builtin-bench.c

index 4d8873a9f519591a808d67bab8562c63c1b2dc82..053122c79ee142655159a4ce213c834574375f7a 100644 (file)
@@ -2,6 +2,9 @@
 #ifndef __NR_getppid
 #define __NR_getppid 64
 #endif
+#ifndef __NR_getpgid
+#define __NR_getpgid 132
+#endif
 #ifndef __NR_gettid
 #define __NR_gettid 224
 #endif
index e29038af133c037a7323a20ac446b0a2dfba2efd..54a6c4d93ada5c419dbbf51d3484098526f1b678 100644 (file)
@@ -2,6 +2,9 @@
 #ifndef __NR_getppid
 #define __NR_getppid 110
 #endif
+#ifndef __NR_getpgid
+#define __NR_getpgid 121
+#endif
 #ifndef __NR_gettid
 #define __NR_gettid 186
 #endif
index a5d49b3b6a0987a0a0b945883ae30319e397fd87..0c58448273da231fe2dcb6bb5476a7275d999ef9 100644 (file)
@@ -22,6 +22,7 @@ int bench_numa(int argc, const char **argv);
 int bench_sched_messaging(int argc, const char **argv);
 int bench_sched_pipe(int argc, const char **argv);
 int bench_syscall_basic(int argc, const char **argv);
+int bench_syscall_getpgid(int argc, const char **argv);
 int bench_mem_memcpy(int argc, const char **argv);
 int bench_mem_memset(int argc, const char **argv);
 int bench_mem_find_bit(int argc, const char **argv);
index 746fd7171921cf80e92f0a64c244b5e87bdaab26..6411b146ba68f4bfa1858d02d348f69460bf009d 100644 (file)
@@ -46,6 +46,9 @@ static int bench_syscall_common(int argc, const char **argv, int syscall)
                case __NR_getppid:
                        getppid();
                        break;
+               case __NR_getpgid:
+                       getpgid(0);
+                       break;
                default:
                        break;
                }
@@ -58,6 +61,9 @@ static int bench_syscall_common(int argc, const char **argv, int syscall)
        case __NR_getppid:
                name = "getppid()";
                break;
+       case __NR_getpgid:
+               name = "getpgid()";
+               break;
        default:
                break;
        }
@@ -100,3 +106,8 @@ int bench_syscall_basic(int argc, const char **argv)
 {
        return bench_syscall_common(argc, argv, __NR_getppid);
 }
+
+int bench_syscall_getpgid(int argc, const char **argv)
+{
+       return bench_syscall_common(argc, argv, __NR_getpgid);
+}
index bd4fd94a2ce07364887132feb8998bdef575f922..281b22e0f257ca9cf19c9f3bd0335956a73d9479 100644 (file)
@@ -52,6 +52,7 @@ static struct bench sched_benchmarks[] = {
 
 static struct bench syscall_benchmarks[] = {
        { "basic",      "Benchmark for basic getppid(2) calls",         bench_syscall_basic     },
+       { "getpgid",    "Benchmark for getpgid(2) calls",               bench_syscall_getpgid   },
        { "all",        "Run all syscall benchmarks",                   NULL                    },
        { NULL,         NULL,                                           NULL                    },
 };