mirror of
https://github.com/varun-r-mallya/Python-BPF.git
synced 2025-12-31 21:06:25 +00:00
@ -35,13 +35,13 @@ repos:
|
|||||||
- id: requirements-txt-fixer
|
- id: requirements-txt-fixer
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
|
|
||||||
#- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
# rev: "v0.4.2"
|
rev: "v0.4.2"
|
||||||
# hooks:
|
hooks:
|
||||||
# - id: ruff
|
- id: ruff
|
||||||
# args: ["--fix", "--show-fixes"]
|
args: ["--fix", "--show-fixes"]
|
||||||
# - id: ruff-format
|
- id: ruff-format
|
||||||
# exclude: ^(docs)
|
exclude: ^(docs)
|
||||||
|
|
||||||
## Checking static types
|
## Checking static types
|
||||||
#- repo: https://github.com/pre-commit/mirrors-mypy
|
#- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import time
|
|||||||
from pythonbpf import bpf, map, section, bpfglobal, BPF
|
from pythonbpf import bpf, map, section, bpfglobal, BPF
|
||||||
from pythonbpf.helpers import pid
|
from pythonbpf.helpers import pid
|
||||||
from pythonbpf.maps import HashMap
|
from pythonbpf.maps import HashMap
|
||||||
from pylibbpf import *
|
from pylibbpf import BpfMap
|
||||||
from ctypes import c_void_p, c_int64, c_uint64, c_int32
|
from ctypes import c_void_p, c_int64, c_uint64, c_int32
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
|||||||
@ -24,12 +24,13 @@ def events() -> PerfEventArray:
|
|||||||
def hello(ctx: c_void_p) -> c_int32:
|
def hello(ctx: c_void_p) -> c_int32:
|
||||||
dataobj = data_t()
|
dataobj = data_t()
|
||||||
ts = ktime()
|
ts = ktime()
|
||||||
process_id = pid()
|
|
||||||
strobj = "hellohellohello"
|
strobj = "hellohellohello"
|
||||||
dataobj.pid = pid()
|
dataobj.pid = pid()
|
||||||
dataobj.ts = ktime()
|
dataobj.ts = ktime()
|
||||||
# dataobj.comm = strobj
|
# dataobj.comm = strobj
|
||||||
print(f"clone called at {dataobj.ts} by pid {dataobj.pid}, comm {strobj}")
|
print(
|
||||||
|
f"clone called at {dataobj.ts} by pid {dataobj.pid}, comm {strobj} at time {ts}"
|
||||||
|
)
|
||||||
events.output(dataobj)
|
events.output(dataobj)
|
||||||
return c_int32(0)
|
return c_int32(0)
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1,13 @@
|
|||||||
from .decorators import bpf, map, section, bpfglobal, struct
|
from .decorators import bpf, map, section, bpfglobal, struct
|
||||||
from .codegen import compile_to_ir, compile, BPF
|
from .codegen import compile_to_ir, compile, BPF
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"bpf",
|
||||||
|
"map",
|
||||||
|
"section",
|
||||||
|
"bpfglobal",
|
||||||
|
"struct",
|
||||||
|
"compile_to_ir",
|
||||||
|
"compile",
|
||||||
|
"BPF",
|
||||||
|
]
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
from .dwarf_constants import *
|
from .dwarf_constants import * # noqa: F403
|
||||||
from .dtypes import *
|
from .dtypes import * # noqa: F403
|
||||||
from .debug_info_generator import DebugInfoGenerator
|
from .debug_info_generator import DebugInfoGenerator
|
||||||
|
|
||||||
|
__all__ = ["DebugInfoGenerator"]
|
||||||
|
|||||||
@ -189,7 +189,7 @@ def handle_assign(
|
|||||||
map_name = rval.func.value.func.id
|
map_name = rval.func.value.func.id
|
||||||
method_name = rval.func.attr
|
method_name = rval.func.attr
|
||||||
if map_name in map_sym_tab:
|
if map_name in map_sym_tab:
|
||||||
map_ptr = map_sym_tab[map_name]
|
# map_ptr = map_sym_tab[map_name]
|
||||||
if method_name in helper_func_list:
|
if method_name in helper_func_list:
|
||||||
val = handle_helper_call(
|
val = handle_helper_call(
|
||||||
rval,
|
rval,
|
||||||
@ -289,7 +289,7 @@ def handle_if(
|
|||||||
):
|
):
|
||||||
"""Handle if statements in the function body."""
|
"""Handle if statements in the function body."""
|
||||||
print("Handling if statement")
|
print("Handling if statement")
|
||||||
start = builder.block.parent
|
# start = builder.block.parent
|
||||||
then_block = func.append_basic_block(name="if.then")
|
then_block = func.append_basic_block(name="if.then")
|
||||||
merge_block = func.append_basic_block(name="if.end")
|
merge_block = func.append_basic_block(name="if.end")
|
||||||
if stmt.orelse:
|
if stmt.orelse:
|
||||||
@ -674,7 +674,7 @@ def assign_string_to_array(builder, target_array_ptr, source_string_ptr, array_l
|
|||||||
Copy a string (i8*) to a fixed-size array ([N x i8]*)
|
Copy a string (i8*) to a fixed-size array ([N x i8]*)
|
||||||
"""
|
"""
|
||||||
# Create a loop to copy characters one by one
|
# Create a loop to copy characters one by one
|
||||||
entry_block = builder.block
|
# entry_block = builder.block
|
||||||
copy_block = builder.append_basic_block("copy_char")
|
copy_block = builder.append_basic_block("copy_char")
|
||||||
end_block = builder.append_basic_block("copy_end")
|
end_block = builder.append_basic_block("copy_end")
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1,4 @@
|
|||||||
from .maps import HashMap, PerfEventArray
|
from .maps import HashMap, PerfEventArray
|
||||||
from .maps_pass import maps_proc
|
from .maps_pass import maps_proc
|
||||||
|
|
||||||
|
__all__ = ["HashMap", "PerfEventArray", "maps_proc"]
|
||||||
|
|||||||
@ -1 +1,3 @@
|
|||||||
from .structs_pass import structs_proc
|
from .structs_pass import structs_proc
|
||||||
|
|
||||||
|
__all__ = ["structs_proc"]
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from ctypes import c_void_p, c_int64
|
|||||||
@section("sometag1")
|
@section("sometag1")
|
||||||
def sometag(ctx: c_void_p) -> c_int64:
|
def sometag(ctx: c_void_p) -> c_int64:
|
||||||
a = 1 + 2 + 1
|
a = 1 + 2 + 1
|
||||||
|
print(f"{a}")
|
||||||
return c_int64(0)
|
return c_int64(0)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ from ctypes import c_void_p, c_int64
|
|||||||
@section("sometag1")
|
@section("sometag1")
|
||||||
def sometag(ctx: c_void_p) -> c_int64:
|
def sometag(ctx: c_void_p) -> c_int64:
|
||||||
a = 1 + 2
|
a = 1 + 2
|
||||||
|
print(f"{a}")
|
||||||
return c_int64(0)
|
return c_int64(0)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user