Skip to content

Commit f535438

Browse files
d-e-s-odanielocfb
authored andcommitted
libbpf-cargo: Emit Rust types into 'types' module
Instead of calling the module into which Rust types are emitted '<skeleton>_types' just call it 'types'. There isn't really a good reason for the former naming from what I can tell. Client code will always be able to prevent naming conflicts, because it is free to include the generated skeleton inside its own module. In fact, that's what all our examples do: > mod capable { > include!(concat!( > env!("CARGO_MANIFEST_DIR"), > "/src/bpf/capable.skel.rs" > )); > } > use capable::capable_types::uniqueness; In the above snippet, the usage of capable::capable_types is a needless repetition. Signed-off-by: Daniel Müller <[email protected]>
1 parent dcc18d1 commit f535438

File tree

5 files changed

+20
-19
lines changed

5 files changed

+20
-19
lines changed

examples/capable/src/main.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ mod capable {
2727
));
2828
}
2929

30-
use capable::capable_types::uniqueness;
30+
use capable::types::uniqueness;
3131
use capable::*;
3232

3333
static CAPS: phf::Map<i32, &'static str> = phf_map! {
@@ -108,7 +108,7 @@ struct Command {
108108
debug: bool,
109109
}
110110

111-
unsafe impl Plain for capable_types::event {}
111+
unsafe impl Plain for capable::types::event {}
112112

113113
fn bump_memlock_rlimit() -> Result<()> {
114114
let rlimit = libc::rlimit {
@@ -138,7 +138,7 @@ fn print_banner(extra_fields: bool) {
138138
}
139139
}
140140

141-
fn _handle_event(opts: Command, event: capable_types::event) {
141+
fn _handle_event(opts: Command, event: capable::types::event) {
142142
let now = if let Ok(now) = OffsetDateTime::now_local() {
143143
let format = format_description!("[hour]:[minute]:[second]");
144144
now.format(&format)
@@ -211,7 +211,7 @@ fn main() -> Result<()> {
211211

212212
print_banner(opts.extra_fields);
213213
let handle_event = move |_cpu: i32, data: &[u8]| {
214-
let mut event = capable_types::event::default();
214+
let mut event = capable::types::event::default();
215215
plain::copy_from_bytes(&mut event, data).expect("Data buffer was too short");
216216
_handle_event(opts, event);
217217
};

examples/runqslower/src/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ struct Command {
4141
verbose: bool,
4242
}
4343

44-
unsafe impl Plain for runqslower_types::event {}
44+
unsafe impl Plain for runqslower::types::event {}
4545

4646
fn bump_memlock_rlimit() -> Result<()> {
4747
let rlimit = libc::rlimit {
@@ -57,7 +57,7 @@ fn bump_memlock_rlimit() -> Result<()> {
5757
}
5858

5959
fn handle_event(_cpu: i32, data: &[u8]) {
60-
let mut event = runqslower_types::event::default();
60+
let mut event = runqslower::types::event::default();
6161
plain::copy_from_bytes(&mut event, data).expect("Data buffer was too short");
6262

6363
let now = if let Ok(now) = OffsetDateTime::now_local() {

libbpf-cargo/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Unreleased
44
program members, no longer requiring method calls
55
- Adjusted skeleton creation logic to generate Rust types for types used in BPF
66
maps
7+
- Renamed module for generated Rust types from `<project>_types` to just `types`
78

89

910
0.23.3

libbpf-cargo/src/gen/mod.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ fn gen_skel_open_map_defs(skel: &mut String, maps: &MapsData, raw_obj_name: &str
395395
write!(
396396
skel,
397397
"\
398-
pub {name}_data: &'obj mut {raw_obj_name}_types::{name},
398+
pub {name}_data: &'obj mut types::{name},
399399
",
400400
name = map.name,
401401
)?;
@@ -481,7 +481,7 @@ fn gen_skel_open_map_defs(skel: &mut String, maps: &MapsData, raw_obj_name: &str
481481
.map_mmap_ptr({mmap_idx})
482482
.ok()
483483
.unwrap_or_else(std::ptr::null_mut)
484-
.cast::<{raw_obj_name}_types::{name}>()
484+
.cast::<types::{name}>()
485485
.as_mut()
486486
.expect(\"BPF map `{name}` does not have mmap pointer\")
487487
}},
@@ -528,7 +528,7 @@ fn gen_skel_map_defs(skel: &mut String, maps: &MapsData, raw_obj_name: &str) ->
528528
write!(
529529
skel,
530530
"\
531-
pub {name}_data: &'obj{ref_mut} {raw_obj_name}_types::{name},
531+
pub {name}_data: &'obj{ref_mut} types::{name},
532532
",
533533
name = map.name,
534534
)?;
@@ -815,19 +815,19 @@ fn gen_skel_map_types(
815815
Ok(())
816816
}
817817

818-
fn gen_skel_struct_ops_getters(skel: &mut String, object: &Object, obj_name: &str) -> Result<()> {
818+
fn gen_skel_struct_ops_getters(skel: &mut String, object: &Object) -> Result<()> {
819819
if maps(object).next().is_none() {
820820
return Ok(());
821821
}
822822

823823
write!(
824824
skel,
825825
"\
826-
pub fn struct_ops_raw(&self) -> *const {obj_name}_types::struct_ops {{
826+
pub fn struct_ops_raw(&self) -> *const types::struct_ops {{
827827
&self.struct_ops
828828
}}
829829
830-
pub fn struct_ops(&self) -> &{obj_name}_types::struct_ops {{
830+
pub fn struct_ops(&self) -> &types::struct_ops {{
831831
&self.struct_ops
832832
}}
833833
",
@@ -1079,7 +1079,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
10791079
write!(
10801080
skel,
10811081
"\
1082-
pub mod {raw_obj_name}_types {{
1082+
pub mod types {{
10831083
#[allow(unused_imports)]
10841084
use super::*;
10851085
"
@@ -1100,7 +1100,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
11001100
pub obj: &'obj mut libbpf_rs::OpenObject,
11011101
pub maps: Open{name}Maps<'obj>,
11021102
pub progs: Open{name}Progs<'obj>,
1103-
pub struct_ops: {raw_obj_name}_types::struct_ops,
1103+
pub struct_ops: types::struct_ops,
11041104
skel_config: libbpf_rs::__internal_skel::ObjectSkeletonConfig<'obj>,
11051105
}}
11061106
@@ -1167,7 +1167,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
11671167
pub obj: &'obj mut libbpf_rs::Object,
11681168
pub maps: {name}Maps<'obj>,
11691169
pub progs: {name}Progs<'obj>,
1170-
struct_ops: {raw_obj_name}_types::struct_ops,
1170+
struct_ops: types::struct_ops,
11711171
skel_config: libbpf_rs::__internal_skel::ObjectSkeletonConfig<'obj>,
11721172
",
11731173
name = &obj_name,
@@ -1196,7 +1196,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
11961196
writeln!(skel, "}}")?;
11971197

11981198
write!(skel, "impl {name}Skel<'_> {{", name = &obj_name)?;
1199-
gen_skel_struct_ops_getters(&mut skel, &object, raw_obj_name)?;
1199+
gen_skel_struct_ops_getters(&mut skel, &object)?;
12001200
writeln!(skel, "}}")?;
12011201

12021202
// Coerce to &[u8] just to be safe, as we'll be using debug formatting

libbpf-cargo/src/test.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,7 @@ fn test_skeleton_datasec() {
731731
assert_eq!(skel.maps.rodata_custom_1_data.mycustomrodata, 43);
732732
733733
// Read only for rodata after load
734-
let _rodata: &prog_types::rodata = skel.maps.rodata_data;
734+
let _rodata: &types::rodata = skel.maps.rodata_data;
735735
}}
736736
"#,
737737
)
@@ -866,7 +866,7 @@ fn test_skeleton_builder_basic() {
866866
// Check that Option<Link> field is generated
867867
let _mylink = skel.links.this_is_my_prog.unwrap();
868868
869-
let _key = prog_types::unique_key::default();
869+
let _key = types::unique_key::default();
870870
}}
871871
"#,
872872
skel_path = skel.path().display(),
@@ -1250,7 +1250,7 @@ struct Foo foo;
12501250
.expect("failed to open skel");
12511251
12521252
let _skel = open_skel.load().expect("failed to load skel");
1253-
let _key = prog_types::unique_key::default();
1253+
let _key = types::unique_key::default();
12541254
}}
12551255
"#,
12561256
skel_path = skel.path().display(),

0 commit comments

Comments
 (0)