mirror of
https://github.com/varun-r-mallya/Python-BPF.git
synced 2025-12-31 21:06:25 +00:00
Use StructType in struct_pass, fix indexing
This commit is contained in:
@ -8,7 +8,7 @@ class StructType:
|
|||||||
self.size = size
|
self.size = size
|
||||||
|
|
||||||
def field_idx(self, field_name):
|
def field_idx(self, field_name):
|
||||||
return self.fields.keys().index(field_name)
|
return list(self.fields.keys()).index(field_name)
|
||||||
|
|
||||||
def field_type(self, field_name):
|
def field_type(self, field_name):
|
||||||
return self.fields[field_name]
|
return self.fields[field_name]
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import ast
|
|||||||
import logging
|
import logging
|
||||||
from llvmlite import ir
|
from llvmlite import ir
|
||||||
from .type_deducer import ctypes_to_ir
|
from .type_deducer import ctypes_to_ir
|
||||||
|
from .struct_type import StructType
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -35,14 +36,11 @@ def process_bpf_struct(cls_node, module):
|
|||||||
""" Process a single BPF struct definition """
|
""" Process a single BPF struct definition """
|
||||||
|
|
||||||
fields = parse_struct_fields(cls_node)
|
fields = parse_struct_fields(cls_node)
|
||||||
total_size = calc_struct_size(fields.values())
|
field_types = list(fields.values())
|
||||||
struct_type = ir.LiteralStructType(fields.values())
|
total_size = calc_struct_size(field_types)
|
||||||
|
struct_type = ir.LiteralStructType(field_types)
|
||||||
logger.info(f"Created struct {cls_node.name} with fields {fields.keys()}")
|
logger.info(f"Created struct {cls_node.name} with fields {fields.keys()}")
|
||||||
return {
|
return StructType(struct_type, fields, total_size)
|
||||||
"type": struct_type,
|
|
||||||
"fields": fields,
|
|
||||||
"size": total_size,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def parse_struct_fields(cls_node):
|
def parse_struct_fields(cls_node):
|
||||||
|
|||||||
Reference in New Issue
Block a user