mirror of
https://github.com/varun-r-mallya/Python-BPF.git
synced 2025-12-31 21:06:25 +00:00
Add ktime
This commit is contained in:
@ -3,7 +3,15 @@ from llvmlite import ir
|
||||
|
||||
|
||||
def bpf_ktime_get_ns_emitter(call, module, builder, func):
|
||||
pass
|
||||
"""
|
||||
Emit LLVM IR for bpf_ktime_get_ns helper function call.
|
||||
"""
|
||||
helper_id = ir.Constant(ir.IntType(64), 5)
|
||||
fn_type = ir.FunctionType(ir.IntType(64), [], var_arg=False)
|
||||
fn_ptr_type = ir.PointerType(fn_type)
|
||||
fn_ptr = builder.inttoptr(helper_id, fn_ptr_type)
|
||||
result = builder.call(fn_ptr, [], tail=False)
|
||||
return result
|
||||
|
||||
|
||||
def bpf_map_lookup_elem_emitter(map_ptr, key_ptr, module, builder):
|
||||
@ -62,3 +70,14 @@ def bpf_printk_emitter(call, module, builder, func):
|
||||
|
||||
builder.call(fn_ptr, [fmt_ptr, ir.Constant(
|
||||
ir.IntType(32), len(fmt_str))], tail=True)
|
||||
|
||||
|
||||
helper_func_list = {
|
||||
"lookup": bpf_map_lookup_elem_emitter,
|
||||
"print": bpf_printk_emitter,
|
||||
"ktime": bpf_ktime_get_ns_emitter,
|
||||
}
|
||||
|
||||
|
||||
def handle_helper_call(call, module, builder, func):
|
||||
return None
|
||||
|
||||
@ -123,7 +123,7 @@ def process_func_body(module, builder, func_node, func, ret_type, map_sym_tab):
|
||||
call = stmt.value
|
||||
if isinstance(call.func, ast.Name) and call.func.id == "print":
|
||||
bpf_printk_emitter(call, module, builder, func)
|
||||
if isinstance(call.func, ast.Name) and call.func.id == "bpf_ktime_get_ns":
|
||||
if isinstance(call.func, ast.Name) and call.func.id == "ktime":
|
||||
bpf_ktime_get_ns_emitter(call, module, builder, func)
|
||||
elif isinstance(stmt, ast.Assign):
|
||||
handle_assign(module, builder, stmt, map_sym_tab, local_sym_tab)
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import ctypes
|
||||
|
||||
def bpf_ktime_get_ns():
|
||||
|
||||
def ktime():
|
||||
return ctypes.c_int64(0)
|
||||
|
||||
Reference in New Issue
Block a user