Skip to content

Commit f22d568

Browse files
d-e-s-odanielocfb
authored andcommitted
Remove 'mutable' argument to gen_skel_map_defs()
There is not too much of a point in passing in the desired mutability to gen_skel_map_defs() when all call sites invoke it with both true and false. Move the logic for dealing with mutability into the function itself to shield callers from the need to care. Signed-off-by: Daniel Müller <[email protected]>
1 parent 0708271 commit f22d568

File tree

1 file changed

+54
-51
lines changed

1 file changed

+54
-51
lines changed

libbpf-cargo/src/gen/mod.rs

Lines changed: 54 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -267,66 +267,71 @@ fn gen_skel_map_defs(
267267
object: &mut BpfObj,
268268
obj_name: &str,
269269
open: bool,
270-
mutable: bool,
271270
) -> Result<()> {
272-
if MapIter::new(object.as_mut_ptr()).next().is_none() {
273-
return Ok(());
274-
}
275-
276-
let (struct_suffix, mut_prefix, map_fn) = if mutable {
277-
("Mut", "mut ", "map_mut")
278-
} else {
279-
("", "", "map")
280-
};
281-
282-
let (struct_name, inner_ty, return_ty) = if open {
283-
(
284-
format!("Open{obj_name}Maps{struct_suffix}"),
285-
"libbpf_rs::OpenObject",
286-
"libbpf_rs::OpenMap",
287-
)
288-
} else {
289-
(
290-
format!("{obj_name}Maps{struct_suffix}"),
291-
"libbpf_rs::Object",
292-
"libbpf_rs::Map",
293-
)
294-
};
295-
296-
write!(
297-
skel,
298-
r#"
299-
pub struct {struct_name}<'a> {{
300-
inner: &'a {mut_prefix}{inner_ty},
301-
}}
271+
let mut gen = |mutable| -> Result<()> {
272+
if MapIter::new(object.as_mut_ptr()).next().is_none() {
273+
return Ok(());
274+
}
302275

303-
impl {struct_name}<'_> {{
304-
"#,
305-
)?;
276+
let (struct_suffix, mut_prefix, map_fn) = if mutable {
277+
("Mut", "mut ", "map_mut")
278+
} else {
279+
("", "", "map")
280+
};
306281

307-
for map in MapIter::new(object.as_mut_ptr()) {
308-
let map_name = match get_map_name(map)? {
309-
Some(n) => n,
310-
None => continue,
282+
let (struct_name, inner_ty, return_ty) = if open {
283+
(
284+
format!("Open{obj_name}Maps{struct_suffix}"),
285+
"libbpf_rs::OpenObject",
286+
"libbpf_rs::OpenMap",
287+
)
288+
} else {
289+
(
290+
format!("{obj_name}Maps{struct_suffix}"),
291+
"libbpf_rs::Object",
292+
"libbpf_rs::Map",
293+
)
311294
};
312295

313296
write!(
314297
skel,
315298
r#"
316-
pub fn {map_name}(&{mut_prefix}self) -> &{mut_prefix}{return_ty} {{
317-
self.inner.{map_fn}("{raw_map_name}").unwrap()
299+
pub struct {struct_name}<'a> {{
300+
inner: &'a {mut_prefix}{inner_ty},
318301
}}
302+
303+
impl {struct_name}<'_> {{
319304
"#,
320-
map_name = map_name,
321-
raw_map_name = get_raw_map_name(map)?,
322-
return_ty = return_ty,
323-
mut_prefix = mut_prefix,
324-
map_fn = map_fn
325305
)?;
326-
}
327306

328-
writeln!(skel, "}}")?;
307+
for map in MapIter::new(object.as_mut_ptr()) {
308+
let map_name = match get_map_name(map)? {
309+
Some(n) => n,
310+
None => continue,
311+
};
312+
313+
write!(
314+
skel,
315+
r#"
316+
pub fn {map_name}(&{mut_prefix}self) -> &{mut_prefix}{return_ty} {{
317+
self.inner.{map_fn}("{raw_map_name}").unwrap()
318+
}}
319+
"#,
320+
map_name = map_name,
321+
raw_map_name = get_raw_map_name(map)?,
322+
return_ty = return_ty,
323+
mut_prefix = mut_prefix,
324+
map_fn = map_fn
325+
)?;
326+
}
329327

328+
writeln!(skel, "}}")?;
329+
330+
Ok(())
331+
};
332+
333+
let () = gen(true)?;
334+
let () = gen(false)?;
330335
Ok(())
331336
}
332337

@@ -745,8 +750,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
745750
name = obj_name
746751
)?;
747752

748-
gen_skel_map_defs(&mut skel, &mut object, &obj_name, true, false)?;
749-
gen_skel_map_defs(&mut skel, &mut object, &obj_name, true, true)?;
753+
gen_skel_map_defs(&mut skel, &mut object, &obj_name, true)?;
750754
gen_skel_prog_defs(&mut skel, &mut object, &obj_name, true, false)?;
751755
gen_skel_prog_defs(&mut skel, &mut object, &obj_name, true, true)?;
752756
gen_skel_datasec_defs(&mut skel, raw_obj_name, &mmap)?;
@@ -799,8 +803,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
799803
gen_skel_datasec_getters(&mut skel, &mut object, raw_obj_name, false)?;
800804
writeln!(skel, "}}")?;
801805

802-
gen_skel_map_defs(&mut skel, &mut object, &obj_name, false, false)?;
803-
gen_skel_map_defs(&mut skel, &mut object, &obj_name, false, true)?;
806+
gen_skel_map_defs(&mut skel, &mut object, &obj_name, false)?;
804807
gen_skel_prog_defs(&mut skel, &mut object, &obj_name, false, false)?;
805808
gen_skel_prog_defs(&mut skel, &mut object, &obj_name, false, true)?;
806809
gen_skel_link_defs(&mut skel, &mut object, &obj_name)?;

0 commit comments

Comments
 (0)