@@ -76,7 +76,7 @@ pub(crate) struct BpfObj(ptr::NonNull<libbpf_sys::bpf_object>);
76
76
77
77
impl BpfObj {
78
78
#[ inline]
79
- pub fn as_mut_ptr ( & mut self ) -> * mut libbpf_sys:: bpf_object {
79
+ pub fn as_ptr ( & self ) -> * const libbpf_sys:: bpf_object {
80
80
self . 0 . as_ptr ( )
81
81
}
82
82
}
@@ -92,7 +92,7 @@ impl Deref for BpfObj {
92
92
93
93
impl Drop for BpfObj {
94
94
fn drop ( & mut self ) {
95
- unsafe { libbpf_sys:: bpf_object__close ( self . as_mut_ptr ( ) ) }
95
+ unsafe { libbpf_sys:: bpf_object__close ( self . 0 . as_ptr ( ) ) }
96
96
}
97
97
}
98
98
@@ -109,12 +109,12 @@ pub enum OutputDest<'a> {
109
109
macro_rules! gen_bpf_object_iter {
110
110
( $name: ident, $iter_ty: ty, $next_fn: expr) => {
111
111
struct $name {
112
- obj: * mut libbpf_sys:: bpf_object,
112
+ obj: * const libbpf_sys:: bpf_object,
113
113
last: * mut $iter_ty,
114
114
}
115
115
116
116
impl $name {
117
- fn new( obj: * mut libbpf_sys:: bpf_object) -> $name {
117
+ fn new( obj: * const libbpf_sys:: bpf_object) -> $name {
118
118
$name {
119
119
obj,
120
120
last: ptr:: null_mut( ) ,
@@ -278,7 +278,7 @@ fn map_is_readonly(map: *const libbpf_sys::bpf_map) -> bool {
278
278
( unsafe { libbpf_sys:: bpf_map__map_flags ( map) } & libbpf_sys:: BPF_F_RDONLY_PROG ) > 0
279
279
}
280
280
281
- fn gen_skel_c_skel_constructor ( skel : & mut String , object : & mut BpfObj , name : & str ) -> Result < ( ) > {
281
+ fn gen_skel_c_skel_constructor ( skel : & mut String , object : & BpfObj , name : & str ) -> Result < ( ) > {
282
282
write ! (
283
283
skel,
284
284
r#"
@@ -290,7 +290,7 @@ fn gen_skel_c_skel_constructor(skel: &mut String, object: &mut BpfObj, name: &st
290
290
"# ,
291
291
) ?;
292
292
293
- for map in MapIter :: new ( object. as_mut_ptr ( ) ) {
293
+ for map in MapIter :: new ( object. as_ptr ( ) ) {
294
294
let raw_name = get_raw_map_name ( map) ?;
295
295
let mmaped = if map_is_mmapable ( map) {
296
296
"true"
@@ -306,7 +306,7 @@ fn gen_skel_c_skel_constructor(skel: &mut String, object: &mut BpfObj, name: &st
306
306
) ?;
307
307
}
308
308
309
- for prog in ProgIter :: new ( object. as_mut_ptr ( ) ) {
309
+ for prog in ProgIter :: new ( object. as_ptr ( ) ) {
310
310
let name = get_prog_name ( prog) ?;
311
311
312
312
write ! (
@@ -330,14 +330,9 @@ fn gen_skel_c_skel_constructor(skel: &mut String, object: &mut BpfObj, name: &st
330
330
Ok ( ( ) )
331
331
}
332
332
333
- fn gen_skel_map_defs (
334
- skel : & mut String ,
335
- object : & mut BpfObj ,
336
- obj_name : & str ,
337
- open : bool ,
338
- ) -> Result < ( ) > {
333
+ fn gen_skel_map_defs ( skel : & mut String , object : & BpfObj , obj_name : & str , open : bool ) -> Result < ( ) > {
339
334
let mut gen = |mutable| -> Result < ( ) > {
340
- if MapIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
335
+ if MapIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
341
336
return Ok ( ( ) ) ;
342
337
}
343
338
@@ -372,7 +367,7 @@ fn gen_skel_map_defs(
372
367
"# ,
373
368
) ?;
374
369
375
- for map in MapIter :: new ( object. as_mut_ptr ( ) ) {
370
+ for map in MapIter :: new ( object. as_ptr ( ) ) {
376
371
let map_name = match get_map_name ( map) ? {
377
372
Some ( n) => n,
378
373
None => continue ,
@@ -405,12 +400,12 @@ fn gen_skel_map_defs(
405
400
406
401
fn gen_skel_prog_defs (
407
402
skel : & mut String ,
408
- object : & mut BpfObj ,
403
+ object : & BpfObj ,
409
404
obj_name : & str ,
410
405
open : bool ,
411
406
mutable : bool ,
412
407
) -> Result < ( ) > {
413
- if ProgIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
408
+ if ProgIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
414
409
return Ok ( ( ) ) ;
415
410
}
416
411
@@ -445,7 +440,7 @@ fn gen_skel_prog_defs(
445
440
"# ,
446
441
) ?;
447
442
448
- for prog in ProgIter :: new ( object. as_mut_ptr ( ) ) {
443
+ for prog in ProgIter :: new ( object. as_ptr ( ) ) {
449
444
write ! (
450
445
skel,
451
446
r#"
@@ -515,12 +510,12 @@ pub struct struct_ops {{}}
515
510
516
511
fn gen_skel_map_getters (
517
512
skel : & mut String ,
518
- object : & mut BpfObj ,
513
+ object : & BpfObj ,
519
514
obj_name : & str ,
520
515
open : bool ,
521
516
) -> Result < ( ) > {
522
517
let mut gen = |mutable| -> Result < ( ) > {
523
- if MapIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
518
+ if MapIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
524
519
return Ok ( ( ) ) ;
525
520
}
526
521
@@ -555,12 +550,8 @@ fn gen_skel_map_getters(
555
550
Ok ( ( ) )
556
551
}
557
552
558
- fn gen_skel_struct_ops_getters (
559
- skel : & mut String ,
560
- object : & mut BpfObj ,
561
- obj_name : & str ,
562
- ) -> Result < ( ) > {
563
- if MapIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
553
+ fn gen_skel_struct_ops_getters ( skel : & mut String , object : & BpfObj , obj_name : & str ) -> Result < ( ) > {
554
+ if MapIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
564
555
return Ok ( ( ) ) ;
565
556
}
566
557
@@ -582,12 +573,12 @@ fn gen_skel_struct_ops_getters(
582
573
583
574
fn gen_skel_prog_getters (
584
575
skel : & mut String ,
585
- object : & mut BpfObj ,
576
+ object : & BpfObj ,
586
577
obj_name : & str ,
587
578
open : bool ,
588
579
) -> Result < ( ) > {
589
580
let mut gen = |mutable| -> Result < ( ) > {
590
- if ProgIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
581
+ if ProgIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
591
582
return Ok ( ( ) ) ;
592
583
}
593
584
@@ -624,11 +615,11 @@ fn gen_skel_prog_getters(
624
615
625
616
fn gen_skel_datasec_getters (
626
617
skel : & mut String ,
627
- object : & mut BpfObj ,
618
+ object : & BpfObj ,
628
619
obj_name : & str ,
629
620
loaded : bool ,
630
621
) -> Result < ( ) > {
631
- for ( idx, map) in MapIter :: new ( object. as_mut_ptr ( ) ) . enumerate ( ) {
622
+ for ( idx, map) in MapIter :: new ( object. as_ptr ( ) ) . enumerate ( ) {
632
623
if !map_is_datasec ( map) {
633
624
continue ;
634
625
}
@@ -670,8 +661,8 @@ fn gen_skel_datasec_getters(
670
661
Ok ( ( ) )
671
662
}
672
663
673
- fn gen_skel_link_defs ( skel : & mut String , object : & mut BpfObj , obj_name : & str ) -> Result < ( ) > {
674
- if ProgIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
664
+ fn gen_skel_link_defs ( skel : & mut String , object : & BpfObj , obj_name : & str ) -> Result < ( ) > {
665
+ if ProgIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
675
666
return Ok ( ( ) ) ;
676
667
}
677
668
@@ -683,7 +674,7 @@ fn gen_skel_link_defs(skel: &mut String, object: &mut BpfObj, obj_name: &str) ->
683
674
"# ,
684
675
) ?;
685
676
686
- for prog in ProgIter :: new ( object. as_mut_ptr ( ) ) {
677
+ for prog in ProgIter :: new ( object. as_ptr ( ) ) {
687
678
write ! (
688
679
skel,
689
680
r#"pub {}: Option<libbpf_rs::Link>,
@@ -697,8 +688,8 @@ fn gen_skel_link_defs(skel: &mut String, object: &mut BpfObj, obj_name: &str) ->
697
688
Ok ( ( ) )
698
689
}
699
690
700
- fn gen_skel_link_getter ( skel : & mut String , object : & mut BpfObj , obj_name : & str ) -> Result < ( ) > {
701
- if ProgIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
691
+ fn gen_skel_link_getter ( skel : & mut String , object : & BpfObj , obj_name : & str ) -> Result < ( ) > {
692
+ if ProgIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
702
693
return Ok ( ( ) ) ;
703
694
}
704
695
@@ -730,8 +721,8 @@ fn open_bpf_object(name: &str, data: &[u8]) -> Result<BpfObj> {
730
721
Ok ( BpfObj ( ptr:: NonNull :: new ( object) . unwrap ( ) ) )
731
722
}
732
723
733
- fn gen_skel_attach ( skel : & mut String , object : & mut BpfObj , obj_name : & str ) -> Result < ( ) > {
734
- if ProgIter :: new ( object. as_mut_ptr ( ) ) . next ( ) . is_none ( ) {
724
+ fn gen_skel_attach ( skel : & mut String , object : & BpfObj , obj_name : & str ) -> Result < ( ) > {
725
+ if ProgIter :: new ( object. as_ptr ( ) ) . next ( ) . is_none ( ) {
735
726
return Ok ( ( ) ) ;
736
727
}
737
728
@@ -748,7 +739,7 @@ fn gen_skel_attach(skel: &mut String, object: &mut BpfObj, obj_name: &str) -> Re
748
739
"# ,
749
740
) ?;
750
741
751
- for ( idx, prog) in ProgIter :: new ( object. as_mut_ptr ( ) ) . enumerate ( ) {
742
+ for ( idx, prog) in ProgIter :: new ( object. as_ptr ( ) ) . enumerate ( ) {
752
743
let prog_name = get_prog_name ( prog) ?;
753
744
754
745
write ! (
@@ -772,10 +763,10 @@ fn gen_skel_attach(skel: &mut String, object: &mut BpfObj, obj_name: &str) -> Re
772
763
Ok ( ( ) )
773
764
}
774
765
775
- fn gen_skel_struct_ops_init ( object : & mut BpfObj ) -> Result < String > {
766
+ fn gen_skel_struct_ops_init ( object : & BpfObj ) -> Result < String > {
776
767
let mut def = String :: new ( ) ;
777
768
778
- for map in MapIter :: new ( object. as_mut_ptr ( ) ) {
769
+ for map in MapIter :: new ( object. as_ptr ( ) ) {
779
770
let type_ = unsafe { libbpf_sys:: bpf_map__type ( map) } ;
780
771
if type_ != libbpf_sys:: BPF_MAP_TYPE_STRUCT_OPS {
781
772
continue ;
@@ -833,9 +824,9 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
833
824
let file = File :: open ( obj_file_path)
834
825
. with_context ( || format ! ( "failed to open BPF object `{}`" , obj_file_path. display( ) ) ) ?;
835
826
let mmap = unsafe { Mmap :: map ( & file) ? } ;
836
- let mut object = open_bpf_object ( & libbpf_obj_name, & mmap) ?;
827
+ let object = open_bpf_object ( & libbpf_obj_name, & mmap) ?;
837
828
838
- gen_skel_c_skel_constructor ( & mut skel, & mut object, & libbpf_obj_name) ?;
829
+ gen_skel_c_skel_constructor ( & mut skel, & object, & libbpf_obj_name) ?;
839
830
840
831
#[ allow( clippy:: uninlined_format_args) ]
841
832
write ! (
@@ -886,12 +877,12 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
886
877
}}
887
878
"# ,
888
879
name = obj_name,
889
- struct_ops_init = gen_skel_struct_ops_init( & mut object) ?,
880
+ struct_ops_init = gen_skel_struct_ops_init( & object) ?,
890
881
) ?;
891
882
892
- gen_skel_map_defs ( & mut skel, & mut object, & obj_name, true ) ?;
893
- gen_skel_prog_defs ( & mut skel, & mut object, & obj_name, true , false ) ?;
894
- gen_skel_prog_defs ( & mut skel, & mut object, & obj_name, true , true ) ?;
883
+ gen_skel_map_defs ( & mut skel, & object, & obj_name, true ) ?;
884
+ gen_skel_prog_defs ( & mut skel, & object, & obj_name, true , false ) ?;
885
+ gen_skel_prog_defs ( & mut skel, & object, & obj_name, true , true ) ?;
895
886
write ! (
896
887
skel,
897
888
r#"
@@ -941,7 +932,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
941
932
}}
942
933
"# ,
943
934
name = & obj_name,
944
- links = if ProgIter :: new( object. as_mut_ptr ( ) ) . next( ) . is_some( ) {
935
+ links = if ProgIter :: new( object. as_ptr ( ) ) . next( ) . is_some( ) {
945
936
format!( r#"links: {obj_name}Links::default()"# )
946
937
} else {
947
938
"" . to_string( )
@@ -950,15 +941,15 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
950
941
writeln ! ( skel, "}}" ) ?;
951
942
writeln ! ( skel, "impl Open{name}Skel<'_> {{" , name = & obj_name) ?;
952
943
953
- gen_skel_prog_getters ( & mut skel, & mut object, & obj_name, true ) ?;
954
- gen_skel_map_getters ( & mut skel, & mut object, & obj_name, true ) ?;
955
- gen_skel_datasec_getters ( & mut skel, & mut object, raw_obj_name, false ) ?;
944
+ gen_skel_prog_getters ( & mut skel, & object, & obj_name, true ) ?;
945
+ gen_skel_map_getters ( & mut skel, & object, & obj_name, true ) ?;
946
+ gen_skel_datasec_getters ( & mut skel, & object, raw_obj_name, false ) ?;
956
947
writeln ! ( skel, "}}" ) ?;
957
948
958
- gen_skel_map_defs ( & mut skel, & mut object, & obj_name, false ) ?;
959
- gen_skel_prog_defs ( & mut skel, & mut object, & obj_name, false , false ) ?;
960
- gen_skel_prog_defs ( & mut skel, & mut object, & obj_name, false , true ) ?;
961
- gen_skel_link_defs ( & mut skel, & mut object, & obj_name) ?;
949
+ gen_skel_map_defs ( & mut skel, & object, & obj_name, false ) ?;
950
+ gen_skel_prog_defs ( & mut skel, & object, & obj_name, false , false ) ?;
951
+ gen_skel_prog_defs ( & mut skel, & object, & obj_name, false , true ) ?;
952
+ gen_skel_link_defs ( & mut skel, & object, & obj_name) ?;
962
953
963
954
write ! (
964
955
skel,
@@ -970,7 +961,7 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
970
961
"# ,
971
962
name = & obj_name,
972
963
) ?;
973
- gen_skel_link_getter ( & mut skel, & mut object, & obj_name) ?;
964
+ gen_skel_link_getter ( & mut skel, & object, & obj_name) ?;
974
965
write ! (
975
966
skel,
976
967
r#"
@@ -990,14 +981,14 @@ fn gen_skel_contents(_debug: bool, raw_obj_name: &str, obj_file_path: &Path) ->
990
981
"# ,
991
982
name = & obj_name,
992
983
) ?;
993
- gen_skel_attach ( & mut skel, & mut object, & obj_name) ?;
984
+ gen_skel_attach ( & mut skel, & object, & obj_name) ?;
994
985
writeln ! ( skel, "}}" ) ?;
995
986
996
987
write ! ( skel, "impl {name}Skel<'_> {{" , name = & obj_name) ?;
997
- gen_skel_prog_getters ( & mut skel, & mut object, & obj_name, false ) ?;
998
- gen_skel_map_getters ( & mut skel, & mut object, & obj_name, false ) ?;
999
- gen_skel_struct_ops_getters ( & mut skel, & mut object, raw_obj_name) ?;
1000
- gen_skel_datasec_getters ( & mut skel, & mut object, raw_obj_name, true ) ?;
988
+ gen_skel_prog_getters ( & mut skel, & object, & obj_name, false ) ?;
989
+ gen_skel_map_getters ( & mut skel, & object, & obj_name, false ) ?;
990
+ gen_skel_struct_ops_getters ( & mut skel, & object, raw_obj_name) ?;
991
+ gen_skel_datasec_getters ( & mut skel, & object, raw_obj_name, true ) ?;
1001
992
writeln ! ( skel, "}}" ) ?;
1002
993
1003
994
// Coerce to &[u8] just to be safe, as we'll be using debug formatting
0 commit comments