@@ -42,6 +42,12 @@ external btf_extract_kernel_struct_and_enum_names : btf_handle -> string list =
4242external btf_extract_kfuncs : btf_handle -> (string * string ) list = " btf_extract_kfuncs_stub"
4343external btf_free : btf_handle -> unit = " btf_free_stub"
4444
45+ (* * BTF kind constants from C headers *)
46+ external btf_kind_struct : unit -> int = " btf_kind_struct_stub"
47+ external btf_kind_union : unit -> int = " btf_kind_union_stub"
48+ external btf_kind_enum : unit -> int = " btf_kind_enum_stub"
49+ external btf_kind_enum64 : unit -> int = " btf_kind_enum64_stub"
50+
4551(* * Parse BTF file and extract requested types using libbpf *)
4652let parse_btf_file btf_path target_types =
4753 try
@@ -82,17 +88,17 @@ let parse_btf_file btf_path target_types =
8288
8389 (* Check if this is a target type *)
8490 if List. mem name target_types then (
85- let kind_str = match kind_int with
86- | 4 -> " struct"
87- | 5 -> " union"
88- | 6 -> " enum"
89- | 19 -> " enum64"
90- | _ -> " unknown"
91+ let kind_str =
92+ if kind_int = btf_kind_struct () then " struct"
93+ else if kind_int = btf_kind_union () then " union"
94+ else if kind_int = btf_kind_enum () then " enum"
95+ else if kind_int = btf_kind_enum64 () then " enum64"
96+ else " unknown"
9197 in
9298
9399 (* Get members for struct/union/enum types *)
94100 let members =
95- if kind_int = 4 || kind_int = 5 then (
101+ if kind_int = btf_kind_struct () || kind_int = btf_kind_union () then (
96102 (* Struct/Union: resolve member types *)
97103 try
98104 let member_array = btf_type_get_members btf_handle i in
@@ -123,8 +129,7 @@ let parse_btf_file btf_path target_types =
123129 Some (List. rev resolved_members)
124130 with
125131 | _ -> None
126- ) else if kind_int = 6 || kind_int = 19 then (
127- (* Enum (kind 6) or Enum64 (kind 19): extract enum values *)
132+ ) else if kind_int = btf_kind_enum () || kind_int = btf_kind_enum64 () then (
128133 try
129134 let member_array = btf_type_get_members btf_handle i in
130135 let member_list = Array. to_list member_array in
0 commit comments