- Introduced a comprehensive tutorial in README.md explaining how to fix broken HID devices using eBPF without kernel patches.
- Implemented a userspace program (hid-input-modifier.c) that creates a virtual HID mouse using the uhid interface and sends synthetic mouse events.
- Developed a BPF program (hid-input-modifier.bpf.c) that intercepts HID events and modifies mouse movement data, effectively doubling the X and Y movement.
- Created necessary header files (hid_bpf.h, hid_bpf_defs.h, hid_bpf_helpers.h) to define structures and helper functions for the BPF program.
- Added functionality to find and manage the virtual HID device, ensuring seamless integration with the BPF program.
- Created SUMMARY.md.template and SUMMARY.zh.md.template for eBPF tutorial.
- Updated generate_toc.py to generate table of contents for English and Chinese versions.
- Added configuration files for new eBPF examples, categorizing them by level and type.
- Updated SUMMARY.md and SUMMARY.zh.md to reflect new lessons and reorganized sections.
- Introduced new features related to GPU and tracing in the tutorial.
- Removed unnecessary print statements for arena sum and number of elements in the test_arena_list_add_del function.
- Simplified output to focus on essential test results, improving clarity and conciseness of the test logs.
- Introduced a comprehensive README.md detailing the use of eBPF for monitoring GPU activity through kernel tracepoints.
- Added bpftrace scripts for monitoring AMD GPU operations, including buffer object creation, command submission, and interrupts.
- Created a bpftrace script for tracking DRM GPU scheduler activity across all modern GPU drivers.
- Developed a bpftrace script to monitor display vertical blanking events for frame timing analysis.
- Implemented a bpftrace script for Intel i915 GPU activity, focusing on GEM object management, memory operations, and page faults.
- Introduced BPF workqueues to enable asynchronous work from BPF programs, allowing deferred processing, non-blocking operations, and sleepable contexts for long-running tasks.
- Added README.md to document the BPF workqueues, including use cases, technical architecture, and code examples.
- Created bpf_experimental.h header file to define necessary BPF workqueue functions and structures.
- Implemented a simple BPF workqueue example (wq_simple) demonstrating the initialization, scheduling, and execution of work in a separate context.
- Developed a userspace test (wq_simple.c) to verify the functionality of the BPF workqueue by triggering a syscall and checking the execution results.
This commit introduces a new BPF program that manages an arena list, allowing for the addition and deletion of elements. The following changes were made:
- Added `arena_list.bpf.c` to implement BPF functions for adding and deleting elements in an arena list.
- Created `arena_list.c` for user-space testing of the BPF program, including functions to sum elements and validate the arena list operations.
- Introduced `bpf_arena_alloc.h` and `bpf_arena_common.h` for memory allocation and common definitions related to arena management.
- Defined `bpf_arena_list.h` to establish the structure of the arena list nodes and heads.
- Added `bpf_experimental.h` to include experimental BPF features and helper functions for object management.
These changes enhance the BPF capabilities for managing memory in a structured way, facilitating efficient allocation and deallocation of resources.
* Add combined on-CPU and off-CPU profiler script
- Implemented a new profiling tool that captures both on-CPU and off-CPU activity for a specified process.
- The script runs 'oncputime' and 'offcputime' tools simultaneously and combines their results into a unified flamegraph.
- Added functionality to discover threads and profile them individually if the application is multi-threaded.
- Included error handling for tool execution and output processing.
- Created methods for generating flamegraph data and SVG visualizations.
- Added command-line argument parsing for user-defined profiling parameters.
- Implemented detailed analysis reports for both individual threads and overall profiling results.
* feat: integrate blazesym v0.2.0 for improved symbol resolution and add test program for memory leak detection
* docs: update README to enhance wall clock profiling tutorial with detailed explanations and examples
* feat: add wallclock-profiler tests to CI workflow for tool validation
* fix: rename combined_profiler.py to wallclock_profiler.py in test scripts and usage examples
- Improved descriptions of key features in the README, emphasizing type safety, symbol resolution, error handling, logging, and command-line interface.
- Updated the Makefile to include a specific RUSTFLAGS setting for building the blazesym library, enhancing build safety and control.
- Removed the legacy C implementation of the profiling tool.
- Added a new Rust-based implementation that utilizes BPF for stack tracing.
- Introduced a Makefile for building the project and managing dependencies.
- Created a Cargo.toml file to manage Rust dependencies and project metadata.
- Implemented event handling and performance monitoring using the libbpf library.
- Added support for both standard and extended output formats for stack traces.
- Included a .gitignore file to exclude build artifacts and output directories.
- Established a new directory structure for organizing source files and BPF code.
- Revised wording for better clarity in the English README related to CUDA API calls.
- Updated directory path in the Chinese README to reflect the correct location for building components.
- Corrected URLs in the Chinese and English README files to ensure accuracy and consistency.
- Removed trailing punctuation from links for better formatting.
- Enhanced clarity in the descriptions and instructions across multiple documents.
- Updated URLs in the README files for the eunomia-bpf repository to point to the correct build documentation.
- Changed references to the DPDK eBPF support documentation to the new link format.
- Ensured all links in the BCC reference guide and tutorial documents are consistent and functional.
- Introduced a new Python script to check the availability of URLs in markdown files within the project.
- The script supports options for fixing internal links, specifying output formats, and setting request timeouts.
- Generates detailed reports on working, broken, and skipped links, with support for text, JSON, and markdown formats.
- Updated markdown files to remove trailing punctuation from tutorial links for consistency.
- Introduced CLAUDE.md to provide an overview and guidance for the eBPF Developer Tutorial repository.
- Added a master Makefile to automate the building and cleaning of eBPF tutorial subdirectories.
- Updated .gitignore in the sslsniff example to include the sslsniff binary.
- Made minor code adjustments in user_ringbuf.c and xdp-tcpdump.c to include necessary headers.
- Modified the Makefile in the btf-uprobe example to streamline the build process.