1- use std:: { convert:: TryInto as _, fs:: remove_file, path:: Path , thread, time:: Duration } ;
1+ use std:: {
2+ convert:: TryInto as _, fs:: remove_file, num:: NonZeroU32 , path:: Path , thread, time:: Duration ,
3+ } ;
24
35use assert_matches:: assert_matches;
46use aya:: {
@@ -14,12 +16,13 @@ use aya::{
1416 loaded_links, loaded_programs,
1517 tc:: TcAttachOptions ,
1618 trace_point:: { TracePointLink , TracePointLinkId } ,
17- uprobe:: { UProbeLink , UProbeLinkId } ,
19+ uprobe:: { UProbeLink , UProbeLinkId , UProbeScope } ,
1820 xdp:: { XdpLink , XdpLinkId } ,
1921 } ,
2022 util:: KernelVersion ,
2123} ;
2224use aya_obj:: programs:: XdpAttachType ;
25+ use test_case:: test_case;
2326
2427const MAX_RETRIES : usize = 100 ;
2528pub ( crate ) const RETRY_DURATION : Duration = Duration :: from_millis ( 10 ) ;
@@ -55,8 +58,12 @@ fn ringbuffer_btf_map() {
5558
5659 let prog: & mut UProbe = bpf. program_mut ( "bpf_prog" ) . unwrap ( ) . try_into ( ) . unwrap ( ) ;
5760 prog. load ( ) . unwrap ( ) ;
58- prog. attach ( "trigger_bpf_program" , "/proc/self/exe" , None )
59- . unwrap ( ) ;
61+ prog. attach (
62+ "trigger_bpf_program" ,
63+ "/proc/self/exe" ,
64+ UProbeScope :: AllProcesses ,
65+ )
66+ . unwrap ( ) ;
6067
6168 trigger_bpf_program ( ) ;
6269
@@ -77,8 +84,12 @@ fn multiple_btf_maps() {
7784
7885 let prog: & mut UProbe = bpf. program_mut ( "bpf_prog" ) . unwrap ( ) . try_into ( ) . unwrap ( ) ;
7986 prog. load ( ) . unwrap ( ) ;
80- prog. attach ( "trigger_bpf_program" , "/proc/self/exe" , None )
81- . unwrap ( ) ;
87+ prog. attach (
88+ "trigger_bpf_program" ,
89+ "/proc/self/exe" ,
90+ UProbeScope :: AllProcesses ,
91+ )
92+ . unwrap ( ) ;
8293
8394 trigger_bpf_program ( ) ;
8495
@@ -127,8 +138,12 @@ fn pin_lifecycle_multiple_btf_maps() {
127138
128139 let prog: & mut UProbe = bpf. program_mut ( "bpf_prog" ) . unwrap ( ) . try_into ( ) . unwrap ( ) ;
129140 prog. load ( ) . unwrap ( ) ;
130- prog. attach ( "trigger_bpf_program" , "/proc/self/exe" , None )
131- . unwrap ( ) ;
141+ prog. attach (
142+ "trigger_bpf_program" ,
143+ "/proc/self/exe" ,
144+ UProbeScope :: AllProcesses ,
145+ )
146+ . unwrap ( ) ;
132147
133148 trigger_bpf_program ( ) ;
134149
@@ -276,13 +291,14 @@ fn unload_xdp() {
276291 ) ;
277292}
278293
279- fn run_unload_program_test < P > (
294+ fn run_unload_program_test < P , F > (
280295 bpf_image : & [ u8 ] ,
281296 program_name : & str ,
282- attach : fn ( & mut P ) -> P :: LinkId ,
297+ attach : F ,
283298 expect_fd_link : bool ,
284299) where
285300 P : UnloadProgramOps ,
301+ F : Fn ( & mut P ) -> P :: LinkId ,
286302 P :: OwnedLink : TryInto < FdLink , Error = LinkError > ,
287303 for < ' a > & ' a mut Program : TryInto < & ' a mut P , Error = ProgramError > ,
288304{
@@ -351,32 +367,22 @@ fn basic_tracepoint() {
351367 ) ;
352368}
353369
370+ #[ test_case( UProbeScope :: AllProcesses ; "all_processes" ) ]
371+ #[ test_case( UProbeScope :: CallingProcess ; "calling_process" ) ]
372+ #[ test_case(
373+ UProbeScope :: OneProcess ( NonZeroU32 :: new( std:: process:: id( ) ) . unwrap( ) ) ;
374+ "one_process"
375+ ) ]
354376#[ test_log:: test]
355- fn basic_uprobe ( ) {
377+ fn basic_uprobe_scopes ( scope : UProbeScope ) {
356378 type P = UProbe ;
357379
358380 let program_name = "test_uprobe" ;
359381 let attach = |prog : & mut P | {
360- prog. attach ( "uprobe_function" , "/proc/self/exe" , None )
382+ prog. attach ( "uprobe_function" , "/proc/self/exe" , scope )
361383 . unwrap ( )
362384 } ;
363- run_unload_program_test (
364- crate :: TEST ,
365- program_name,
366- attach,
367- aya:: features ( ) . bpf_perf_link ( ) , // probe uses perf_attach.
368- ) ;
369- }
370-
371- #[ test_log:: test]
372- fn basic_uprobe_pid_zero_is_self ( ) {
373- type P = UProbe ;
374385
375- let program_name = "test_uprobe" ;
376- let attach = |prog : & mut P | {
377- prog. attach ( "uprobe_function" , "/proc/self/exe" , Some ( 0 ) )
378- . unwrap ( )
379- } ;
380386 run_unload_program_test (
381387 crate :: TEST ,
382388 program_name,
@@ -676,8 +682,12 @@ fn pin_lifecycle_uprobe() {
676682
677683 let program_name = "test_uprobe" ;
678684 let attach = |prog : & mut P | {
679- prog. attach ( "uprobe_function" , "/proc/self/exe" , None )
680- . unwrap ( )
685+ prog. attach (
686+ "uprobe_function" ,
687+ "/proc/self/exe" ,
688+ UProbeScope :: AllProcesses ,
689+ )
690+ . unwrap ( )
681691 } ;
682692 let program_pin = "/sys/fs/bpf/aya-uprobe-test-prog" ;
683693 let link_pin = "/sys/fs/bpf/aya-uprobe-test-uprobe-function" ;
0 commit comments