mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-20 01:46:31 +00:00
feat(ebpf):[WIP] add eBPF support (#948)
* feat(kprobe): Add basic kprobe support for x86_64 * feat: add ebpf support (#912) - 实现bpf()一部分命令,包括几种基本map,相关的helper函数 - 实现部分perf相关的数据结构 - 暂时为文件实现简单mmap - 实现一个使用kprobe统计syscall 调用次数的ebpf程序 对eBPF支持程度(基本): - 简单的eBPF程序(没有指定特殊的Map) - 使用内核已经实现的Map的eBPF程序 - 可以和kprobe配合使用 - 内核Map相关的接口定义已经实现,添加新的Map较为简单 不支持的功能: - 区分不同的eBPF程序类型(Network/Cgroup)并限定可调用的helper函数集 - 与内核其它跟踪机制配合(tracepoint) - 其它helper和Map todo - [ ] 修改mmap,需要讨论,因为这个和块缓存层相关 - [x] 添加文档 - [x] 修复可能的错误 - [x] 增加rbpf版本信息 * feat: add /sys/devices/system/cpu/possible file * feat: add /sys/devices/system/cpu/online
This commit is contained in:
72
kernel/crates/rbpf/mk/appveyor.bat
Normal file
72
kernel/crates/rbpf/mk/appveyor.bat
Normal file
@ -0,0 +1,72 @@
|
||||
echo on
|
||||
SetLocal EnableDelayedExpansion
|
||||
|
||||
REM This is the recommended way to choose the toolchain version, according to
|
||||
REM Appveyor's documentation.
|
||||
SET PATH=C:\Program Files (x86)\MSBuild\%TOOLCHAIN_VERSION%\Bin;%PATH%
|
||||
|
||||
set VCVARSALL="C:\Program Files (x86)\Microsoft Visual Studio %TOOLCHAIN_VERSION%\VC\vcvarsall.bat"
|
||||
|
||||
if [%Platform%] NEQ [x64] goto win32
|
||||
set TARGET_ARCH=x86_64
|
||||
set TARGET_PROGRAM_FILES=%ProgramFiles%
|
||||
call %VCVARSALL% amd64
|
||||
if %ERRORLEVEL% NEQ 0 exit 1
|
||||
goto download
|
||||
|
||||
:win32
|
||||
echo on
|
||||
if [%Platform%] NEQ [Win32] exit 1
|
||||
set TARGET_ARCH=i686
|
||||
set TARGET_PROGRAM_FILES=%ProgramFiles(x86)%
|
||||
call %VCVARSALL% amd64_x86
|
||||
if %ERRORLEVEL% NEQ 0 exit 1
|
||||
goto download
|
||||
|
||||
:download
|
||||
REM vcvarsall turns echo off
|
||||
echo on
|
||||
|
||||
mkdir windows_build_tools
|
||||
mkdir windows_build_tools\
|
||||
echo Downloading Yasm...
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe', 'windows_build_tools\yasm.exe')"
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
echo ...downloading Yasm failed.
|
||||
exit 1
|
||||
)
|
||||
|
||||
set RUST_URL=https://static.rust-lang.org/dist/rust-%RUST%-%TARGET_ARCH%-pc-windows-msvc.msi
|
||||
echo Downloading %RUST_URL%...
|
||||
mkdir build
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('%RUST_URL%', 'build\rust-%RUST%-%TARGET_ARCH%-pc-windows-msvc.msi')"
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
echo ...downloading Rust failed.
|
||||
exit 1
|
||||
)
|
||||
|
||||
start /wait msiexec /i build\rust-%RUST%-%TARGET_ARCH%-pc-windows-msvc.msi INSTALLDIR="%TARGET_PROGRAM_FILES%\Rust %RUST%" /quiet /qn /norestart
|
||||
if %ERRORLEVEL% NEQ 0 exit 1
|
||||
|
||||
set PATH="%TARGET_PROGRAM_FILES%\Rust %RUST%\bin";%cd%\windows_build_tools;%PATH%
|
||||
|
||||
if [%Configuration%] == [Release] set CARGO_MODE=--release
|
||||
|
||||
set
|
||||
|
||||
link /?
|
||||
cl /?
|
||||
rustc --version
|
||||
cargo --version
|
||||
|
||||
cargo test --all-features -vv %CARGO_MODE%
|
||||
if %ERRORLEVEL% NEQ 0 exit 1
|
||||
|
||||
REM Verify that `cargo build`, independent from `cargo test`, works; i.e.
|
||||
REM verify that non-test builds aren't trying to use test-only features.
|
||||
cargo build -vv %CARGO_MODE%
|
||||
if %ERRORLEVEL% NEQ 0 exit 1
|
||||
|
||||
REM Verify that we can build with all features
|
||||
cargo build --all-features -vv %CARGO_MODE%
|
||||
if %ERRORLEVEL% NEQ 0 exit 1
|
Reference in New Issue
Block a user