diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-21 11:51:01 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-21 11:51:01 +0200 |
| commit | 6c912a9d72ae2a43923c638538d320e6bf585952 (patch) | |
| tree | 727f66d158210e01abf8c18a83ef4db6066e0c1a | |
| parent | 32136b8cb18944157ff1f361bc0755f6b627fd47 (diff) | |
Migrate make targets to mage
Amp-Thread-ID: https://ampcode.com/threads/T-019c7f4e-cc5f-76f1-aaf0-dd7cbaabbb18
Co-authored-by: Amp <amp@ampcode.com>
| -rw-r--r-- | AGENTS.md | 27 | ||||
| -rw-r--r-- | Magefile.go | 424 | ||||
| -rw-r--r-- | Makefile | 68 | ||||
| -rw-r--r-- | go.mod | 2 | ||||
| -rw-r--r-- | go.sum | 2 | ||||
| -rw-r--r-- | internal/c/Makefile | 50 | ||||
| -rw-r--r-- | internal/c/generated_tracepoints_result.txt | 164 | ||||
| -rw-r--r-- | internal/generate/bpfhandler.go | 152 | ||||
| -rw-r--r-- | internal/generate/classify.go | 214 | ||||
| -rw-r--r-- | internal/generate/classify_test.go | 332 | ||||
| -rw-r--r-- | internal/generate/codegen.go | 152 | ||||
| -rw-r--r-- | internal/generate/codegen_test.go | 263 | ||||
| -rw-r--r-- | internal/generate/format.go | 145 | ||||
| -rw-r--r-- | internal/generate/format_test.go | 174 | ||||
| -rw-r--r-- | internal/generate/retclassify_test.go | 59 | ||||
| -rw-r--r-- | internal/generate/testdata.go | 666 | ||||
| -rw-r--r-- | internal/generate/tracepointsgo.go | 43 | ||||
| -rw-r--r-- | internal/generate/tracepointsgo_test.go | 92 | ||||
| -rw-r--r-- | internal/generate/typesgo.go | 341 | ||||
| -rw-r--r-- | internal/generate/typesgo_test.go | 257 | ||||
| -rw-r--r-- | internal/tracepoints/Makefile | 8 | ||||
| -rw-r--r-- | internal/types/Makefile | 13 |
22 files changed, 3409 insertions, 239 deletions
@@ -7,26 +7,26 @@ This file provides guidance to AI coding assistants working with the I/O Riot NG **Prerequisites**: Ensure libbpfgo is cloned at `../libbpfgo` relative to this repository. ```bash -make all # Build everything (BPF objects and Go binary) -make test # Run all tests -make test_with_name TEST_NAME=TestEventloop # Run specific test -go test ./internal/event -v # Run tests for specific package -make generate # Generate code (required after modifying tracepoint definitions) -make bench # Run benchmarks -make clean # Clean build artifacts +mage all # Build everything (BPF objects and Go binary) +mage test # Run all tests +TEST_NAME=TestEventloop mage testWithName # Run specific test +go test ./internal/event -v # Run tests for specific package +mage generate # Generate code (required after modifying tracepoint definitions) +mage bench # Run benchmarks +mage clean # Clean build artifacts ``` ## Code Generation -**Run `make generate` before building when tracepoint definitions change!** +**Run `mage generate` before building when tracepoint definitions change!** -A Go program (`cmd/generate/`) generates code from Linux kernel tracepoint data: +A Mage target generates code from Linux kernel tracepoint data: ```bash -make generate # Generate all code (C and Go) -make -C internal/c generate # Generate C tracepoint handlers from /sys/kernel/tracing -make -C internal/types generate # Generate Go types from C structs -make -C internal/tracepoints generate # Generate Go tracepoint list +mage generate # Generate all code (C and Go) +mage generateTracepointsC # Generate C tracepoint handlers from /sys/kernel/tracing +mage generateTypesGo # Generate Go types from C structs +mage generateTracepointsGo # Generate Go tracepoint list ``` Generated files (do not edit manually): @@ -35,7 +35,6 @@ Generated files (do not edit manually): - `internal/tracepoints/generated_tracepoints.go` - List of available syscall tracepoints Generator source code: -- `cmd/generate/main.go` - Entry point with subcommands: `tracepoints-c`, `tracepoints-go`, `types-go` - `internal/generate/` - Parser, classifier, and code generation logic ## Architecture diff --git a/Magefile.go b/Magefile.go index 7f63a22..8a49bea 100644 --- a/Magefile.go +++ b/Magefile.go @@ -1,18 +1,39 @@ //go:build mage -// Magefile for ior targets: build, test, install. +// Magefile for ior targets: build, test, install, generate, clean, and BPF builds. package main import ( + "bufio" + "errors" "fmt" + "go/format" + "io" "os" + "os/exec" "path/filepath" + "strings" "github.com/magefile/mage/mg" "github.com/magefile/mage/sh" + + "ior/internal/generate" ) -const binaryName = "ior" +const ( + binaryName = "ior" + defaultLibbpfgoPath = "../libbpfgo" + bpfSourcePath = "internal/c/ior.bpf.c" + bpfObjectPath = "internal/c/ior.bpf.o" + bpfOutputPath = "ior.bpf.o" + tracepointsCPath = "internal/c/generated_tracepoints.c" + tracepointsResult = "internal/c/generated_tracepoints_result.txt" + tracepointsResultNew = "internal/c/generated_tracepoints_result.txt.new" + tracepointsGoPath = "internal/tracepoints/generated_tracepoints.go" + typesGoPath = "internal/types/generated_types.go" + typesHeaderPath = "internal/c/types.h" + VMLINUXPath = "internal/c/vmlinux.h" +) // Default builds the project. func Default() { @@ -21,12 +42,126 @@ func Default() { // Build compiles the binary. func Build() error { - return sh.RunV("go", "build", "-o", binaryName, "./cmd/ior") + return sh.RunWithV(goEnv(), "go", "build", "-tags", "netgo", "-ldflags", "-w -extldflags \"-static\"", + "-o", binaryName, "./cmd/ior/main.go") +} + +// GoBuildRace compiles the binary with the race detector enabled. +func GoBuildRace() error { + return sh.RunWithV(goEnv(), "go", "build", "-tags", "netgo", "-ldflags", "-w -extldflags \"-static\"", + "-race", "-o", binaryName, "./cmd/ior/main.go") +} + +// All builds the BPF object and the Go binary. +func All() error { + mg.SerialDeps(BpfBuild, Build) + return nil +} + +// BpfBuild builds the BPF object and copies it to the repo root. +func BpfBuild() error { + if err := ensureVMLINUX(); err != nil { + return err + } + if err := buildBPFObject(); err != nil { + return err + } + return sh.RunV("cp", "-v", bpfObjectPath, bpfOutputPath) } // Test runs the full test suite. func Test() error { - return sh.RunV("go", "test", "./...") + if err := sh.RunWithV(goEnv(), "go", "clean", "-testcache"); err != nil { + return err + } + return sh.RunWithV(goEnv(), "go", "test", "./...", "-v", "-failfast") +} + +// TestWithName runs a specific test by name. +func TestWithName() error { + if err := sh.RunWithV(goEnv(), "go", "clean", "-testcache"); err != nil { + return err + } + testName := os.Getenv("TEST_NAME") + if testName == "" { + testName = "TestEventloop" + } + return sh.RunWithV(goEnv(), "go", "test", "./...", "-run", "^"+testName+"$", "-v", "-failfast") +} + +// Bench runs benchmarks. +func Bench() error { + return sh.RunWithV(goEnv(), "go", "test", "./...", "-v", "-bench=.", "-run", "xxx") +} + +// Generate regenerates all generated files. +func Generate() error { + fmt.Println("Generating tracepoint and type artifacts...") + mg.SerialDeps(GenerateTracepointsC, GenerateTracepointsGo, GenerateTypesGo) + fmt.Println("Generation complete.") + return nil +} + +// GenerateTracepointsC regenerates the tracepoint handlers in C. +func GenerateTracepointsC() error { + fmt.Println("Generating C tracepoints...") + return generateTracepointsC(true, false) +} + +// GenerateTracepointsCForce regenerates the tracepoint handlers in C, ignoring diffs. +func GenerateTracepointsCForce() error { + fmt.Println("Generating C tracepoints (force)...") + return generateTracepointsC(false, false) +} + +// GenerateTracepointsCStdout prints the tracepoint handlers in C to stdout. +func GenerateTracepointsCStdout() error { + fmt.Println("Generating C tracepoints (stdout)...") + return generateTracepointsC(true, true) +} + +// GenerateTracepointsGo regenerates the tracepoint list in Go. +func GenerateTracepointsGo() error { + fmt.Println("Generating Go tracepoints list...") + input, err := os.ReadFile(tracepointsCPath) + if err != nil { + return fmt.Errorf("read %s: %w", tracepointsCPath, err) + } + output, err := generate.ExtractTracepoints(strings.NewReader(string(input))) + if err != nil { + return err + } + formatted, err := format.Source([]byte(output)) + if err != nil { + return fmt.Errorf("format tracepoints go: %w", err) + } + if err := os.WriteFile(tracepointsGoPath, formatted, 0o644); err != nil { + return fmt.Errorf("write %s: %w", tracepointsGoPath, err) + } + return nil +} + +// GenerateTypesGo regenerates the Go types and constants. +func GenerateTypesGo() error { + fmt.Println("Generating Go types...") + input, err := readTypesInput() + if err != nil { + return err + } + structs, constants, err := generate.ParseCTypesInput(strings.NewReader(input)) + if err != nil { + return err + } + output := generate.GenerateTypesGo(structs, constants) + output = generate.AddTypesImports(output) + formatted, err := format.Source([]byte(output)) + if err != nil { + return fmt.Errorf("format types go: %w", err) + } + if err := os.WriteFile(typesGoPath, formatted, 0o644); err != nil { + return fmt.Errorf("write %s: %w", typesGoPath, err) + } + return nil } // Install copies the binary into GOPATH/bin. @@ -50,3 +185,284 @@ func Install() error { dest := filepath.Join(binDir, binaryName) return sh.RunV("cp", "-v", binaryName, dest) } + +// Clean removes build artifacts. +func Clean() error { + if err := removeFilesByName(binaryName); err != nil { + return err + } + if err := removeFilesByPath(bpfOutputPath); err != nil { + return err + } + if err := cleanBPFArtifacts(); err != nil { + return err + } + return nil +} + +// Mrproper removes build artifacts and generated output files. +func Mrproper() error { + mg.SerialDeps(Clean) + patterns := []string{"*.zst", "*.collapsed", "*.svg", "*profile", "*.pdf", "*.tmp", "palete.map"} + for _, pattern := range patterns { + if err := removeFilesByGlob(pattern); err != nil { + return err + } + } + return nil +} + +// World runs clean, generate, test, and build targets. +func World() error { + fmt.Println("World: cleaning...") + if err := Clean(); err != nil { + return err + } + fmt.Println("World: generating...") + if err := Generate(); err != nil { + return err + } + fmt.Println("World: running tests...") + if err := Test(); err != nil { + return err + } + fmt.Println("World: building... (BPF + Go)") + if err := All(); err != nil { + return err + } + fmt.Println("World: done.") + return nil +} + +// Prof generates CPU and memory profiling PDFs. +func Prof() error { + if err := runShellCommand("go tool pprof -pdf ./ior ior.cpuprofile > cpuprofile.pdf"); err != nil { + return err + } + if err := runShellCommand("go tool pprof -pdf ./ior ior.memprofile > memprofile.pdf"); err != nil { + return err + } + return nil +} + +func buildBPFObject() error { + libbpfgo := libbpfgoPath() + includeDir := filepath.Join(libbpfgo, "output") + return sh.RunWithV(bpfEnv(), "clang", "-g", "-O2", "-Wall", "-fpie", "-target", "bpf", + "-D__TARGET_ARCH_amd64", "-I"+includeDir, "-c", bpfSourcePath, "-o", bpfObjectPath) +} + +func bpfEnv() map[string]string { + return map[string]string{"CC": "clang"} +} + +func cleanBPFArtifacts() error { + for _, pattern := range []string{"internal/c/*.o", VMLINUXPath} { + if err := removeFilesByGlob(pattern); err != nil { + return err + } + } + return nil +} + +func ensureVMLINUX() error { + if _, err := os.Stat(VMLINUXPath); err == nil { + return nil + } else if !errors.Is(err, os.ErrNotExist) { + return fmt.Errorf("stat %s: %w", VMLINUXPath, err) + } + + output, err := sudoOutput("bpftool", "btf", "dump", "file", "/sys/kernel/btf/vmlinux", "format", "c") + if err != nil { + return err + } + if err := os.WriteFile(VMLINUXPath, []byte(output), 0o644); err != nil { + return fmt.Errorf("write %s: %w", VMLINUXPath, err) + } + return nil +} + +func generateTracepointsC(strict bool, toStdout bool) error { + fmt.Println("Reading syscall format files...") + formats, err := readSyscallFormats() + if err != nil { + return err + } + fmt.Println("Parsing syscall formats...") + + parsed, err := generate.ParseFormats(strings.NewReader(formats)) + if err != nil { + return err + } + output := generate.GenerateTracepointsC(parsed) + fmt.Println("Writing generated C tracepoints...") + + if toStdout { + fmt.Print(output) + return nil + } + + if err := os.WriteFile(tracepointsCPath, []byte(output), 0o644); err != nil { + return fmt.Errorf("write %s: %w", tracepointsCPath, err) + } + return writeTracepointsResult(output, strict) +} + +func goEnv() map[string]string { + libbpfgo := libbpfgoPath() + cgoCflags := fmt.Sprintf("-I%s -I%s", filepath.Join(libbpfgo, "output"), filepath.Join(libbpfgo, "selftest", "common")) + cgoLdflags := fmt.Sprintf("-lelf -lzstd %s", filepath.Join(libbpfgo, "output", "libbpf", "libbpf.a")) + return map[string]string{ + "CGO_CFLAGS": cgoCflags, + "CGO_LDFLAGS": cgoLdflags, + "GOARCH": "amd64", + "GOOS": "linux", + "LIBBPFGO": libbpfgo, + } +} + +func libbpfgoPath() string { + if libbpfgo := os.Getenv("LIBBPFGO"); libbpfgo != "" { + return libbpfgo + } + return filepath.Clean(filepath.Join(repoRoot(), defaultLibbpfgoPath)) +} + +func readSyscallFormats() (string, error) { + fmt.Println("Reading syscall format files with one sudo call...") + output, err := sudoOutput("sh", "-c", "LC_ALL=C find /sys/kernel/tracing/events/syscalls -maxdepth 2 -mindepth 2 -name format | sort | xargs cat") + if err != nil { + return "", err + } + if output == "" { + return "", fmt.Errorf("no syscall format files found") + } + return output, nil +} + +func readTypesInput() (string, error) { + parts := []string{typesHeaderPath, tracepointsCPath} + var b strings.Builder + for _, p := range parts { + data, err := os.ReadFile(p) + if err != nil { + return "", fmt.Errorf("read %s: %w", p, err) + } + b.Write(data) + if len(data) > 0 && data[len(data)-1] != '\n' { + b.WriteString("\n") + } + } + return b.String(), nil +} + +func removeFilesByGlob(pattern string) error { + matches, err := filepath.Glob(pattern) + if err != nil { + return fmt.Errorf("glob %s: %w", pattern, err) + } + for _, match := range matches { + if err := removeFilesByPath(match); err != nil { + return err + } + } + return nil +} + +func removeFilesByName(name string) error { + return filepath.WalkDir(".", func(path string, d os.DirEntry, err error) error { + if err != nil { + return err + } + if d.IsDir() { + return nil + } + if d.Name() == name { + return removeFilesByPath(path) + } + return nil + }) +} + +func removeFilesByPath(path string) error { + if err := os.Remove(path); err != nil && !errors.Is(err, os.ErrNotExist) { + return fmt.Errorf("remove %s: %w", path, err) + } + return nil +} + +func repoRoot() string { + root, err := os.Getwd() + if err != nil { + return "." + } + return root +} + +func runShellCommand(command string) error { + return sh.RunV("bash", "-c", command) +} + +func sudoOutput(cmd string, args ...string) (string, error) { + if os.Geteuid() == 0 { + return sh.Output(cmd, args...) + } + return sh.Output("sudo", append([]string{cmd}, args...)...) +} + +func writeTracepointsResult(output string, strict bool) error { + result := extractTracepointReasons(output) + if err := os.WriteFile(tracepointsResultNew, []byte(result), 0o644); err != nil { + return fmt.Errorf("write %s: %w", tracepointsResultNew, err) + } + if _, err := os.Stat(tracepointsResult); errors.Is(err, os.ErrNotExist) { + return sh.RunV("cp", tracepointsResultNew, tracepointsResult) + } else if err != nil { + return fmt.Errorf("stat %s: %w", tracepointsResult, err) + } + if err := sh.RunV("diff", "-u", tracepointsResult, tracepointsResultNew); err != nil { + if strict { + return err + } + } + return sh.RunV("cp", tracepointsResultNew, tracepointsResult) +} + +func extractTracepointReasons(output string) string { + var reasons []string + reader := bufio.NewReader(strings.NewReader(output)) + for { + line, err := reader.ReadString('\n') + if line != "" { + line = strings.TrimRight(line, "\n") + if strings.HasPrefix(line, "/// ") { + reasons = append(reasons, strings.TrimPrefix(line, "/// ")) + } + } + if err != nil { + if errors.Is(err, io.EOF) { + break + } + return "" + } + } + if len(reasons) == 0 { + return "" + } + sorted, err := sortLinesWithLocale(reasons) + if err != nil { + return strings.Join(reasons, "\n") + "\n" + } + return sorted +} + +func sortLinesWithLocale(lines []string) (string, error) { + cmd := exec.Command("sort") + cmd.Env = append(os.Environ(), "LC_ALL=C") + cmd.Stdin = strings.NewReader(strings.Join(lines, "\n") + "\n") + output, err := cmd.Output() + if err != nil { + return "", err + } + return string(output), nil +} diff --git a/Makefile b/Makefile deleted file mode 100644 index 7d65af7..0000000 --- a/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -export LIBBPFGO = $(CURDIR)/../libbpfgo -export CC = clang -export GOOS = linux -export GOARCH = amd64 -export CGO_CFLAGS = -I$(LIBBPFGO)/output -I$(LIBBPFGO)/selftest/common -export CGO_LDFLAGS = -lelf -lzstd $(LIBBPFGO)/output/libbpf/libbpf.a -export GO ?= go -export TEST_NAME ?= TestEventloop - -all: bpfbuild gobuild - -.PHONY: bpfbuild -bpfbuild: - make -C ./internal/c redo - cp -v ./internal/c/ior.bpf.o . - -gen: generate -generate: generate - -.PHONY: generate -generate: - make -C ./internal/c generate - make -C ./internal/tracepoints generate - make -C ./internal/types generate - -.PHONY: gobuild -gobuild: - $(GO) build -tags netgo -ldflags '-w -extldflags "-static"' -o ior ./cmd/ior/main.go -gobuild_race: - $(GO) build -tags netgo -ldflags '-w -extldflags "-static"' -race -o ior ./cmd/ior/main.go - -.PHONY: clean -clean: - find . -type f -name ior -delete - if [ -e ior.bpf.o ]; then rm ior.bpf.o; fi - make -C ./internal/c clean - -.PHONY: mrproper -mrproper: clean - find . -type f -name \*.zst -delete - find . -type f -name \*.collapsed -delete - find . -type f -name \*.svg -delete - find . -type f -name \*profile -delete - find . -type f -name \*.pdf -delete - find . -type f -name \*.tmp -delete - find . -type f -name palete.map -delete - -.PHONY: world -world: clean generate test all - -.PHONY: prof -prof: - $(GO) tool pprof -pdf ./ior ior.cpuprofile > cpuprofile.pdf && evince cpuprofile.pdf & - $(GO) tool pprof -pdf ./ior ior.memprofile > memprofile.pdf && evince memprofile.pdf & - -.PHONY: test -test: - $(GO) clean -testcache - $(GO) test ./... -v -failfast - -.PHONY: test_with_name -test_with_name: - $(GO) clean -testcache - $(GO) test ./... -run ^$(TEST_NAME)$$ -v -failfast - -.PHONY: bench -bench: - $(GO) test ./... -v -bench=. -run xxx @@ -6,3 +6,5 @@ require ( github.com/DataDog/zstd v1.5.7 github.com/aquasecurity/libbpfgo v0.6.0-libbpf-1.3.0.20240111220235-90dbffffbdab ) + +require github.com/magefile/mage v1.15.0 // indirect @@ -4,6 +4,8 @@ github.com/aquasecurity/libbpfgo v0.6.0-libbpf-1.3.0.20240111220235-90dbffffbdab github.com/aquasecurity/libbpfgo v0.6.0-libbpf-1.3.0.20240111220235-90dbffffbdab/go.mod h1:0rEApF1YBHGuZ4C8OYI9q5oDBVpgqtRqYATePl9mCDk= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= diff --git a/internal/c/Makefile b/internal/c/Makefile deleted file mode 100644 index 03c1f9f..0000000 --- a/internal/c/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -export LIBBPFGO = $(CURDIR)/../../../libbpfgo -export CC = clang - -SOURCES := $(wildcard *.bpf.c) -TARGETS := $(SOURCES:.bpf.c=.bpf.o) - -all: $(TARGETS) - -redo: clean all - -%.bpf.o: %.bpf.c vmlinux.h - $(CC) -g -O2 -Wall -fpie -target bpf -D__TARGET_ARCH_amd64 \ - -I$(LIBBPFGO)/output -c $< -o $@ - -vmlinux.h: - bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h - -.PHONY: clean -clean: - find . -name \*.o -delete - find . -name vmlinux.h -delete - -.PHONY: generate -generate: generate_tracepoints - -.PHONY: generate_tracepoints -generate_tracepoints: - sudo sh -c 'sudo find /sys/kernel/tracing/events/syscalls -maxdepth 2 -mindepth 2 -name format' \ - | sort -t_ -k3 | sudo xargs cat \ - | go run ../../cmd/generate tracepoints-c > ./generated_tracepoints.c - grep '^/// ' ./generated_tracepoints.c | sort | sed 's|/// ||' > ./generated_tracepoints_result.txt.new - diff -u ./generated_tracepoints_result.txt ./generated_tracepoints_result.txt.new - cp ./generated_tracepoints_result.txt.new ./generated_tracepoints_result.txt - -# TODO: Document what to do, when a syscall is missing. E.g. we also need to add the new syscall maybe -# to the classifier in cmd/generate and internal/generate! -.PHONY: generate_tracepoints_force -generate_tracepoints_force: - sudo sh -c 'sudo find /sys/kernel/tracing/events/syscalls -maxdepth 2 -mindepth 2 -name format' \ - | sort -t_ -k3 | sudo xargs cat \ - | go run ../../cmd/generate tracepoints-c > ./generated_tracepoints.c - grep '^/// ' ./generated_tracepoints.c | sort | sed 's|/// ||' > ./generated_tracepoints_result.txt.new - sh -c 'diff -u ./generated_tracepoints_result.txt ./generated_tracepoints_result.txt.new; exit 0' - cp ./generated_tracepoints_result.txt.new ./generated_tracepoints_result.txt - -.PHONY: generate_tracepoints_stdout -generate_tracepoints_stdout: - sudo sh -c 'sudo find /sys/kernel/tracing/events/syscalls -maxdepth 2 -mindepth 2 -name format' \ - | sort -t_ -k3 | sudo xargs cat \ - | go run ../../cmd/generate tracepoints-c diff --git a/internal/c/generated_tracepoints_result.txt b/internal/c/generated_tracepoints_result.txt index 2176d6b..fb3867c 100644 --- a/internal/c/generated_tracepoints_result.txt +++ b/internal/c/generated_tracepoints_result.txt @@ -1,5 +1,5 @@ -Ignoring sys_enter_accept4 sys_exit_accept4 as possibly not file I/O related Ignoring sys_enter_accept sys_exit_accept as possibly not file I/O related +Ignoring sys_enter_accept4 sys_exit_accept4 as possibly not file I/O related Ignoring sys_enter_acct sys_exit_acct as possibly not file I/O related Ignoring sys_enter_add_key sys_exit_add_key as possibly not file I/O related Ignoring sys_enter_adjtimex sys_exit_adjtimex as possibly not file I/O related @@ -15,32 +15,34 @@ Ignoring sys_enter_clock_getres sys_exit_clock_getres as possibly not file I/O r Ignoring sys_enter_clock_gettime sys_exit_clock_gettime as possibly not file I/O related Ignoring sys_enter_clock_nanosleep sys_exit_clock_nanosleep as possibly not file I/O related Ignoring sys_enter_clock_settime sys_exit_clock_settime as possibly not file I/O related -Ignoring sys_enter_clone3 sys_exit_clone3 as possibly not file I/O related Ignoring sys_enter_clone sys_exit_clone as possibly not file I/O related +Ignoring sys_enter_clone3 sys_exit_clone3 as possibly not file I/O related Ignoring sys_enter_connect sys_exit_connect as possibly not file I/O related Ignoring sys_enter_copy_file_range sys_exit_copy_file_range as possibly not file I/O related Ignoring sys_enter_delete_module sys_exit_delete_module as possibly not file I/O related -Ignoring sys_enter_epoll_create1 sys_exit_epoll_create1 as possibly not file I/O related Ignoring sys_enter_epoll_create sys_exit_epoll_create as possibly not file I/O related +Ignoring sys_enter_epoll_create1 sys_exit_epoll_create1 as possibly not file I/O related Ignoring sys_enter_epoll_ctl sys_exit_epoll_ctl as possibly not file I/O related -Ignoring sys_enter_epoll_pwait2 sys_exit_epoll_pwait2 as possibly not file I/O related Ignoring sys_enter_epoll_pwait sys_exit_epoll_pwait as possibly not file I/O related +Ignoring sys_enter_epoll_pwait2 sys_exit_epoll_pwait2 as possibly not file I/O related Ignoring sys_enter_epoll_wait sys_exit_epoll_wait as possibly not file I/O related -Ignoring sys_enter_eventfd2 sys_exit_eventfd2 as possibly not file I/O related Ignoring sys_enter_eventfd sys_exit_eventfd as possibly not file I/O related -Ignoring sys_enter_execveat sys_exit_execveat as possibly not file I/O related +Ignoring sys_enter_eventfd2 sys_exit_eventfd2 as possibly not file I/O related Ignoring sys_enter_execve sys_exit_execve as possibly not file I/O related -Ignoring sys_enter_exit_group sys_exit_exit_group as possibly not file I/O related +Ignoring sys_enter_execveat sys_exit_execveat as possibly not file I/O related Ignoring sys_enter_exit sys_exit_exit as possibly not file I/O related +Ignoring sys_enter_exit_group sys_exit_exit_group as possibly not file I/O related Ignoring sys_enter_fanotify_init sys_exit_fanotify_init as possibly not file I/O related Ignoring sys_enter_fork sys_exit_fork as possibly not file I/O related Ignoring sys_enter_fsmount sys_exit_fsmount as possibly not file I/O related Ignoring sys_enter_fsopen sys_exit_fsopen as possibly not file I/O related -Ignoring sys_enter_futex_requeue sys_exit_futex_requeue as possibly not file I/O related Ignoring sys_enter_futex sys_exit_futex as possibly not file I/O related +Ignoring sys_enter_futex_requeue sys_exit_futex_requeue as possibly not file I/O related Ignoring sys_enter_futex_wait sys_exit_futex_wait as possibly not file I/O related Ignoring sys_enter_futex_waitv sys_exit_futex_waitv as possibly not file I/O related Ignoring sys_enter_futex_wake sys_exit_futex_wake as possibly not file I/O related +Ignoring sys_enter_get_mempolicy sys_exit_get_mempolicy as possibly not file I/O related +Ignoring sys_enter_get_robust_list sys_exit_get_robust_list as possibly not file I/O related Ignoring sys_enter_getcpu sys_exit_getcpu as possibly not file I/O related Ignoring sys_enter_getcwd sys_exit_getcwd as possibly not file I/O related Ignoring sys_enter_getegid sys_exit_getegid as possibly not file I/O related @@ -48,7 +50,6 @@ Ignoring sys_enter_geteuid sys_exit_geteuid as possibly not file I/O related Ignoring sys_enter_getgid sys_exit_getgid as possibly not file I/O related Ignoring sys_enter_getgroups sys_exit_getgroups as possibly not file I/O related Ignoring sys_enter_getitimer sys_exit_getitimer as possibly not file I/O related -Ignoring sys_enter_get_mempolicy sys_exit_get_mempolicy as possibly not file I/O related Ignoring sys_enter_getpeername sys_exit_getpeername as possibly not file I/O related Ignoring sys_enter_getpgid sys_exit_getpgid as possibly not file I/O related Ignoring sys_enter_getpgrp sys_exit_getpgrp as possibly not file I/O related @@ -59,7 +60,6 @@ Ignoring sys_enter_getrandom sys_exit_getrandom as possibly not file I/O related Ignoring sys_enter_getresgid sys_exit_getresgid as possibly not file I/O related Ignoring sys_enter_getresuid sys_exit_getresuid as possibly not file I/O related Ignoring sys_enter_getrlimit sys_exit_getrlimit as possibly not file I/O related -Ignoring sys_enter_get_robust_list sys_exit_get_robust_list as possibly not file I/O related Ignoring sys_enter_getrusage sys_exit_getrusage as possibly not file I/O related Ignoring sys_enter_getsid sys_exit_getsid as possibly not file I/O related Ignoring sys_enter_getsockname sys_exit_getsockname as possibly not file I/O related @@ -69,8 +69,8 @@ Ignoring sys_enter_gettimeofday sys_exit_gettimeofday as possibly not file I/O r Ignoring sys_enter_getuid sys_exit_getuid as possibly not file I/O related Ignoring sys_enter_init_module sys_exit_init_module as possibly not file I/O related Ignoring sys_enter_inotify_add_watch sys_exit_inotify_add_watch as possibly not file I/O related -Ignoring sys_enter_inotify_init1 sys_exit_inotify_init1 as possibly not file I/O related Ignoring sys_enter_inotify_init sys_exit_inotify_init as possibly not file I/O related +Ignoring sys_enter_inotify_init1 sys_exit_inotify_init1 as possibly not file I/O related Ignoring sys_enter_inotify_rm_watch sys_exit_inotify_rm_watch as possibly not file I/O related Ignoring sys_enter_ioperm sys_exit_ioperm as possibly not file I/O related Ignoring sys_enter_iopl sys_exit_iopl as possibly not file I/O related @@ -97,11 +97,11 @@ Ignoring sys_enter_memfd_create sys_exit_memfd_create as possibly not file I/O r Ignoring sys_enter_memfd_secret sys_exit_memfd_secret as possibly not file I/O related Ignoring sys_enter_migrate_pages sys_exit_migrate_pages as possibly not file I/O related Ignoring sys_enter_mincore sys_exit_mincore as possibly not file I/O related -Ignoring sys_enter_mknodat sys_exit_mknodat as possibly not file I/O related Ignoring sys_enter_mknod sys_exit_mknod as possibly not file I/O related +Ignoring sys_enter_mknodat sys_exit_mknodat as possibly not file I/O related +Ignoring sys_enter_mlock sys_exit_mlock as possibly not file I/O related Ignoring sys_enter_mlock2 sys_exit_mlock2 as possibly not file I/O related Ignoring sys_enter_mlockall sys_exit_mlockall as possibly not file I/O related -Ignoring sys_enter_mlock sys_exit_mlock as possibly not file I/O related Ignoring sys_enter_modify_ldt sys_exit_modify_ldt as possibly not file I/O related Ignoring sys_enter_mount sys_exit_mount as possibly not file I/O related Ignoring sys_enter_move_mount sys_exit_move_mount as possibly not file I/O related @@ -120,8 +120,8 @@ Ignoring sys_enter_msgget sys_exit_msgget as possibly not file I/O related Ignoring sys_enter_msgrcv sys_exit_msgrcv as possibly not file I/O related Ignoring sys_enter_msgsnd sys_exit_msgsnd as possibly not file I/O related Ignoring sys_enter_msync sys_exit_msync as possibly not file I/O related -Ignoring sys_enter_munlockall sys_exit_munlockall as possibly not file I/O related Ignoring sys_enter_munlock sys_exit_munlock as possibly not file I/O related +Ignoring sys_enter_munlockall sys_exit_munlockall as possibly not file I/O related Ignoring sys_enter_munmap sys_exit_munmap as possibly not file I/O related Ignoring sys_enter_name_to_handle_at sys_exit_name_to_handle_at as possibly not file I/O related Ignoring sys_enter_nanosleep sys_exit_nanosleep as possibly not file I/O related @@ -132,8 +132,8 @@ Ignoring sys_enter_personality sys_exit_personality as possibly not file I/O rel Ignoring sys_enter_pidfd_getfd sys_exit_pidfd_getfd as possibly not file I/O related Ignoring sys_enter_pidfd_open sys_exit_pidfd_open as possibly not file I/O related Ignoring sys_enter_pidfd_send_signal sys_exit_pidfd_send_signal as possibly not file I/O related -Ignoring sys_enter_pipe2 sys_exit_pipe2 as possibly not file I/O related Ignoring sys_enter_pipe sys_exit_pipe as possibly not file I/O related +Ignoring sys_enter_pipe2 sys_exit_pipe2 as possibly not file I/O related Ignoring sys_enter_pivot_root sys_exit_pivot_root as possibly not file I/O related Ignoring sys_enter_pkey_alloc sys_exit_pkey_alloc as possibly not file I/O related Ignoring sys_enter_pkey_free sys_exit_pkey_free as possibly not file I/O related @@ -165,11 +165,11 @@ Ignoring sys_enter_rt_sigreturn sys_exit_rt_sigreturn as possibly not file I/O r Ignoring sys_enter_rt_sigsuspend sys_exit_rt_sigsuspend as possibly not file I/O related Ignoring sys_enter_rt_sigtimedwait sys_exit_rt_sigtimedwait as possibly not file I/O related Ignoring sys_enter_rt_tgsigqueueinfo sys_exit_rt_tgsigqueueinfo as possibly not file I/O related +Ignoring sys_enter_sched_get_priority_max sys_exit_sched_get_priority_max as possibly not file I/O related +Ignoring sys_enter_sched_get_priority_min sys_exit_sched_get_priority_min as possibly not file I/O related Ignoring sys_enter_sched_getaffinity sys_exit_sched_getaffinity as possibly not file I/O related Ignoring sys_enter_sched_getattr sys_exit_sched_getattr as possibly not file I/O related Ignoring sys_enter_sched_getparam sys_exit_sched_getparam as possibly not file I/O related -Ignoring sys_enter_sched_get_priority_max sys_exit_sched_get_priority_max as possibly not file I/O related -Ignoring sys_enter_sched_get_priority_min sys_exit_sched_get_priority_min as possibly not file I/O related Ignoring sys_enter_sched_getscheduler sys_exit_sched_getscheduler as possibly not file I/O related Ignoring sys_enter_sched_rr_get_interval sys_exit_sched_rr_get_interval as possibly not file I/O related Ignoring sys_enter_sched_setaffinity sys_exit_sched_setaffinity as possibly not file I/O related @@ -187,6 +187,10 @@ Ignoring sys_enter_sendfile64 sys_exit_sendfile64 as possibly not file I/O relat Ignoring sys_enter_sendmmsg sys_exit_sendmmsg as possibly not file I/O related Ignoring sys_enter_sendmsg sys_exit_sendmsg as possibly not file I/O related Ignoring sys_enter_sendto sys_exit_sendto as possibly not file I/O related +Ignoring sys_enter_set_mempolicy sys_exit_set_mempolicy as possibly not file I/O related +Ignoring sys_enter_set_mempolicy_home_node sys_exit_set_mempolicy_home_node as possibly not file I/O related +Ignoring sys_enter_set_robust_list sys_exit_set_robust_list as possibly not file I/O related +Ignoring sys_enter_set_tid_address sys_exit_set_tid_address as possibly not file I/O related Ignoring sys_enter_setdomainname sys_exit_setdomainname as possibly not file I/O related Ignoring sys_enter_setfsgid sys_exit_setfsgid as possibly not file I/O related Ignoring sys_enter_setfsuid sys_exit_setfsuid as possibly not file I/O related @@ -194,8 +198,6 @@ Ignoring sys_enter_setgid sys_exit_setgid as possibly not file I/O related Ignoring sys_enter_setgroup |
