/
usr
/
share
/
systemtap
/
tapset
/
linux
/
/usr/share/systemtap/tapset/linux
mkdir
upload
Name
Size
Mode
Actions
arm/
-
0755
rm
arm64/
-
0755
rm
i386/
-
0755
rm
ia64/
-
0755
rm
mips/
-
0755
rm
powerpc/
-
0755
rm
riscv/
-
0755
rm
s390/
-
0755
rm
x86_64/
-
0755
rm
atomic.stp
1563
0644
edit
dl
rm
aux_syscalls.stp
151702
0644
edit
dl
rm
context-caller.stp
3148
0644
edit
dl
rm
context-envvar.stp
1761
0644
edit
dl
rm
context-symbols.stp
12276
0644
edit
dl
rm
context-unwind.stp
3283
0644
edit
dl
rm
context.stp
19015
0644
edit
dl
rm
context.stpm
125
0644
edit
dl
rm
conversions-guru.stp
5876
0644
edit
dl
rm
conversions.stp
17273
0644
edit
dl
rm
ctime.stp
5750
0644
edit
dl
rm
dentry.stp
10667
0644
edit
dl
rm
dev.stp
2074
0644
edit
dl
rm
endian.stp
602
0644
edit
dl
rm
errno.stpm
57
0644
edit
dl
rm
guru-delay.stp
1230
0644
edit
dl
rm
guru-signal.stp
1092
0644
edit
dl
rm
inet.stp
1456
0644
edit
dl
rm
inet.stpm
383
0644
edit
dl
rm
inet_sock.stp
1282
0644
edit
dl
rm
ioblock.stp
15597
0644
edit
dl
rm
ioscheduler.stp
14098
0644
edit
dl
rm
ip.stp
5483
0644
edit
dl
rm
ipmib-filter-default.stp
965
0644
edit
dl
rm
ipmib.stp
12981
0644
edit
dl
rm
irq.stp
5120
0644
edit
dl
rm
json.stp
9194
0644
edit
dl
rm
json.stpm
6256
0644
edit
dl
rm
kprocess.stp
4750
0644
edit
dl
rm
kretprobe.stp
2153
0644
edit
dl
rm
linuxmib-filter-default.stp
876
0644
edit
dl
rm
linuxmib.stp
3718
0644
edit
dl
rm
loadavg.stp
1995
0644
edit
dl
rm
logging.stp
2585
0644
edit
dl
rm
memory.stp
19219
0644
edit
dl
rm
netfilter.stp
36356
0644
edit
dl
rm
networking.stp
9656
0644
edit
dl
rm
nfs.stp
38997
0644
edit
dl
rm
nfsd.stp
47379
0644
edit
dl
rm
nfsderrno.stp
11979
0644
edit
dl
rm
nfs_proc.stp
58325
0644
edit
dl
rm
nfs_proc.stpm
1288
0644
edit
dl
rm
panic.stp
1092
0644
edit
dl
rm
perf.stp
5284
0644
edit
dl
rm
proc_mem.stp
12702
0644
edit
dl
rm
pstrace.stp
773
0644
edit
dl
rm
rcu.stp
928
0644
edit
dl
rm
rlimit.stp
1382
0644
edit
dl
rm
rpc.stp
38578
0644
edit
dl
rm
scheduler.stp
11661
0644
edit
dl
rm
scsi.stp
9721
0644
edit
dl
rm
signal.stp
29371
0644
edit
dl
rm
socket.stp
35024
0644
edit
dl
rm
syscalls.stpm
14643
0644
edit
dl
rm
syscalls_cfg_trunc.stp
111
0644
edit
dl
rm
syscall_any.stp
1560
0644
edit
dl
rm
syscall_table.stp
1475
0644
edit
dl
rm
sysc_accept.stp
7868
0644
edit
dl
rm
sysc_accept4.stp
7864
0644
edit
dl
rm
sysc_access.stp
2911
0644
edit
dl
rm
sysc_acct.stp
2583
0644
edit
dl
rm
sysc_add_key.stp
3532
0644
edit
dl
rm
sysc_adjtimex.stp
5672
0644
edit
dl
rm
sysc_alarm.stp
2833
0644
edit
dl
rm
sysc_bdflush.stp
3113
0644
edit
dl
rm
sysc_bind.stp
6965
0644
edit
dl
rm
sysc_bpf.stp
2738
0644
edit
dl
rm
sysc_brk.stp
2629
0644
edit
dl
rm
sysc_capget.stp
3101
0644
edit
dl
rm
sysc_capset.stp
3102
0644
edit
dl
rm
sysc_chdir.stp
2616
0644
edit
dl
rm
sysc_chmod.stp
2959
0644
edit
dl
rm
sysc_chown.stp
3775
0644
edit
dl
rm
sysc_chown16.stp
3115
0644
edit
dl
rm
sysc_chroot.stp
2679
0644
edit
dl
rm
sysc_clock_adjtime.stp
5243
0644
edit
dl
rm
sysc_clock_getres.stp
4248
0644
edit
dl
rm
sysc_clock_gettime.stp
4035
0644
edit
dl
rm
sysc_clock_nanosleep.stp
8041
0644
edit
dl
rm
sysc_clock_settime.stp
5554
0644
edit
dl
rm
sysc_clone.stp
6708
0644
edit
dl
rm
sysc_close.stp
2771
0644
edit
dl
rm
sysc_connect.stp
7452
0644
edit
dl
rm
sysc_copy_file_range.stp
3769
0644
edit
dl
rm
sysc_creat.stp
2728
0644
edit
dl
rm
sysc_delete_module.stp
3366
0644
edit
dl
rm
sysc_dup.stp
2383
0644
edit
dl
rm
sysc_dup2.stp
2991
0644
edit
dl
rm
sysc_dup3.stp
3073
0644
edit
dl
rm
sysc_epoll_create.stp
5742
0644
edit
dl
rm
sysc_epoll_ctl.stp
3998
0644
edit
dl
rm
sysc_epoll_pwait.stp
4157
0644
edit
dl
rm
sysc_epoll_wait.stp
4850
0644
edit
dl
rm
sysc_eventfd.stp
5411
0644
edit
dl
rm
sysc_execve.stp
6257
0644
edit
dl
rm
sysc_execveat.stp
6942
0644
edit
dl
rm
sysc_exit.stp
1984
0644
edit
dl
rm
sysc_exit_group.stp
2146
0644
edit
dl
rm
sysc_faccessat.stp
3736
0644
edit
dl
rm
sysc_faccessat2.stp
4434
0644
edit
dl
rm
sysc_fadvise64.stp
8639
0644
edit
dl
rm
sysc_fallocate.stp
3918
0644
edit
dl
rm
sysc_fanotify_init.stp
3432
0644
edit
dl
rm
sysc_fanotify_mark.stp
7572
0644
edit
dl
rm
sysc_fchdir.stp
2525
0644
edit
dl
rm
sysc_fchmod.stp
2880
0644
edit
dl
rm
sysc_fchmodat.stp
3734
0644
edit
dl
rm
sysc_fchown.stp
3722
0644
edit
dl
rm
sysc_fchown16.stp
3023
0644
edit
dl
rm
sysc_fchownat.stp
3903
0644
edit
dl
rm
sysc_fcntl.stp
4806
0644
edit
dl
rm
sysc_fdatasync.stp
2692
0644
edit
dl
rm
sysc_fgetxattr.stp
3720
0644
edit
dl
rm
sysc_finit_module.stp
3382
0644
edit
dl
rm
sysc_flistxattr.stp
3000
0644
edit
dl
rm
sysc_flock.stp
2579
0644
edit
dl
rm
sysc_fork.stp
2586
0644
edit
dl
rm
sysc_fremovexattr.stp
3229
0644
edit
dl
rm
sysc_fsetxattr.stp
4187
0644
edit
dl
rm
sysc_fstat.stp
6163
0644
edit
dl
rm
sysc_fstatat.stp
5789
0644
edit
dl
rm
sysc_fstatfs.stp
3266
0644
edit
dl
rm
sysc_fstatfs64.stp
3240
0644
edit
dl
rm
sysc_fsync.stp
2419
0644
edit
dl
rm
sysc_ftruncate.stp
6212
0644
edit
dl
rm
sysc_futex.stp
5810
0644
edit
dl
rm
sysc_futimesat.stp
6639
0644
edit
dl
rm
sysc_getcpu.stp
3034
0644
edit
dl
rm
sysc_getcwd.stp
2747
0644
edit
dl
rm
sysc_getdents.stp
5618
0644
edit
dl
rm
sysc_getegid.stp
3542
0644
edit
dl
rm
sysc_geteuid.stp
3484
0644
edit
dl
rm
sysc_getgid.stp
3402
0644
edit
dl
rm
sysc_getgroups.stp
4274
0644
edit
dl
rm
sysc_gethostname.stp
1249
0644
edit
dl
rm
sysc_getitimer.stp
5355
0644
edit
dl
rm
sysc_getpeername.stp
7522
0644
edit
dl
rm
sysc_getpgid.stp
2859
0644
edit
dl
rm
sysc_getpgrp.stp
2090
0644
edit
dl
rm
sysc_getpid.stp
2031
0644
edit
dl
rm
sysc_getppid.stp
2112
0644
edit
dl
rm
sysc_getpriority.stp
2943
0644
edit
dl
rm
sysc_getrandom.stp
3184
0644
edit
dl
rm
sysc_getresgid.stp
4172
0644
edit
dl
rm
sysc_getresuid.stp
3972
0644
edit
dl
rm
sysc_getrlimit.stp
4460
0644
edit
dl
rm
sysc_getrusage.stp
3803
0644
edit
dl
rm
sysc_getsid.stp
2509
0644
edit
dl
rm
sysc_getsockname.stp
7550
0644
edit
dl
rm
sysc_getsockopt.stp
8520
0644
edit
dl
rm
sysc_gettid.stp
2057
0644
edit
dl
rm
sysc_gettimeofday.stp
4078
0644
edit
dl
rm
sysc_getuid.stp
3427
0644
edit
dl
rm
sysc_getxattr.stp
3812
0644
edit
dl
rm
sysc_get_mempolicy.stp
4671
0644
edit
dl
rm
sysc_get_robust_list.stp
4572
0644
edit
dl
rm
sysc_init_module.stp
3241
0644
edit
dl
rm
sysc_inotify_add_watch.stp
3861
0644
edit
dl
rm
sysc_inotify_init.stp
5548
0644
edit
dl
rm
sysc_inotify_rm_watch.stp
3277
0644
edit
dl
rm
sysc_ioctl.stp
3536
0644
edit
dl
rm
sysc_ioperm.stp
2819
0644
edit
dl
rm
sysc_ioprio_get.stp
3018
0644
edit
dl
rm
sysc_ioprio_set.stp
3247
0644
edit
dl
rm
sysc_io_cancel.stp
3318
0644
edit
dl
rm
sysc_io_destroy.stp
2816
0644
edit
dl
rm
sysc_io_getevents.stp
4994
0644
edit
dl
rm
sysc_io_setup.stp
3838
0644
edit
dl
rm
sysc_io_submit.stp
3983
0644
edit
dl
rm
sysc_kcmp.stp
3007
0644
edit
dl
rm
sysc_kexec_file_load.stp
4041
0644
edit
dl
rm
sysc_kexec_load.stp
4513
0644
edit
dl
rm
sysc_keyctl.stp
3722
0644
edit
dl
rm
sysc_kill.stp
2591
0644
edit
dl
rm
sysc_lchown.stp
3880
0644
edit
dl
rm
sysc_lchown16.stp
3194
0644
edit
dl
rm
sysc_lgetxattr.stp
3912
0644
edit
dl
rm
sysc_link.stp
2885
0644
edit
dl
rm
sysc_linkat.stp
4005
0644
edit
dl
rm
sysc_listen.stp
6624
0644
edit
dl
rm
sysc_listxattr.stp
3318
0644
edit
dl
rm
sysc_llistxattr.stp
3379
0644
edit
dl
rm
sysc_llseek.stp
3371
0644
edit
dl
rm
sysc_lookup_dcookie.stp
4089
0644
edit
dl
rm
sysc_lremovexattr.stp
4001
0644
edit
dl
rm
sysc_lseek.stp
4500
0644
edit
dl
rm
sysc_lsetxattr.stp
4097
0644
edit
dl
rm
sysc_lstat.stp
6455
0644
edit
dl
rm
sysc_madvise.stp
2976
0644
edit
dl
rm
sysc_mbind.stp
4303
0644
edit
dl
rm
sysc_membarrier.stp
3017
0644
edit
dl
rm
sysc_memfd_create.stp
3247
0644
edit
dl
rm
sysc_memfd_secret.stp
2815
0644
edit
dl
rm
sysc_migrate_pages.stp
4374
0644
edit
dl
rm
sysc_mincore.stp
2900
0644
edit
dl
rm
sysc_mkdir.stp
2897
0644
edit
dl
rm
sysc_mkdirat.stp
3445
0644
edit
dl
rm
sysc_mknod.stp
2958
0644
edit
dl
rm
sysc_mknodat.stp
3644
0644
edit
dl
rm
sysc_mlock.stp
2618
0644
edit
dl
rm
sysc_mlock2.stp
2882
0644
edit
dl
rm
sysc_mlockall.stp
2771
0644
edit
dl
rm
sysc_mmap2.stp
6229
0644
edit
dl
rm
sysc_modify_ldt.stp
3112
0644
edit
dl
rm
sysc_mount.stp
4499
0644
edit
dl
rm
sysc_move_pages.stp
4725
0644
edit
dl
rm
sysc_mprotect.stp
2966
0644
edit
dl
rm
sysc_mq_getsetattr.stp
4460
0644
edit
dl
rm
sysc_mq_notify.stp
3936
0644
edit
dl
rm
sysc_mq_open.stp
5385
0644
edit
dl
rm
sysc_mq_timedreceive.stp
6183
0644
edit
dl
rm
sysc_mq_timedsend.stp
5928
0644
edit
dl
rm
sysc_mq_unlink.stp
3018
0644
edit
dl
rm
sysc_mremap.stp
3577
0644
edit
dl
rm
sysc_msgctl.stp
8255
0644
edit
dl
rm
sysc_msgget.stp
4423
0644
edit
dl
rm
sysc_msgrcv.stp
10689
0644
edit
dl
rm
sysc_msgsnd.stp
8866
0644
edit
dl
rm
sysc_msync.stp
2851
0644
edit
dl
rm
sysc_munlock.stp
2744
0644
edit
dl
rm
sysc_munlockall.stp
2342
0644
edit
dl
rm
sysc_munmap.stp
2709
0644
edit
dl
rm
sysc_name_to_handle_at.stp
4150
0644
edit
dl
rm
sysc_nanosleep.stp
5824
0644
edit
dl
rm
sysc_nfsservctl.stp
2284
0644
edit
dl
rm
sysc_nice.stp
2440
0644
edit
dl
rm
sysc_ni_syscall.stp
1433
0644
edit
dl
rm
sysc_open.stp
4329
0644
edit
dl
rm
sysc_openat.stp
3916
0644
edit
dl
rm
sysc_open_by_handle_at.stp
4298
0644
edit
dl
rm
sysc_pause.stp
2564
0644
edit
dl
rm
sysc_perf_event_open.stp
3808
0644
edit
dl
rm
sysc_personality.stp
3077
0644
edit
dl
rm
sysc_pipe.stp
10596
0644
edit
dl
rm
sysc_pivot_root.stp
3314
0644
edit
dl
rm
sysc_pkey_alloc.stp
3057
0644
edit
dl
rm
sysc_pkey_free.stp
2719
0644
edit
dl
rm
sysc_pkey_mprotect.stp
3392
0644
edit
dl
rm
sysc_poll.stp
2769
0644
edit
dl
rm
sysc_ppoll.stp
6493
0644
edit
dl
rm
sysc_prctl.stp
2993
0644
edit
dl
rm
sysc_pread.stp
5427
0644
edit
dl
rm
sysc_preadv.stp
5283
0644
edit
dl
rm
sysc_preadv2.stp
5667
0644
edit
dl
rm
sysc_prlimit64.stp
3495
0644
edit
dl
rm
sysc_process_vm_readv.stp
4775
0644
edit
dl
rm
sysc_process_vm_writev.stp
4897
0644
edit
dl
rm
sysc_pselect6.stp
6457
0644
edit
dl
rm
sysc_pselect7.stp
3668
0644
edit
dl
rm
sysc_ptrace.stp
3661
0644
edit
dl
rm
sysc_pwrite.stp
7239
0644
edit
dl
rm
sysc_pwritev.stp
5414
0644
edit
dl
rm
sysc_pwritev2.stp
5774
0644
edit
dl
rm
sysc_quotactl.stp
4691
0644
edit
dl
rm
sysc_read.stp
3721
0644
edit
dl
rm
sysc_readahead.stp
3601
0644
edit
dl
rm
sysc_readdir.stp
4043
0644
edit
dl
rm
sysc_readlink.stp
3114
0644
edit
dl
rm
sysc_readlinkat.stp
3833
0644
edit
dl
rm
sysc_readv.stp
3502
0644
edit
dl
rm
sysc_reboot.stp
3253
0644
edit
dl
rm
sysc_recv.stp
7260
0644
edit
dl
rm
sysc_recvfrom.stp
8554
0644
edit
dl
rm
sysc_recvmmsg.stp
6462
0644
edit
dl
rm
sysc_recvmsg.stp
10962
0644
edit
dl
rm
sysc_remap_file_pages.stp
3935
0644
edit
dl
rm
sysc_removexattr.stp
3320
0644
edit
dl
rm
sysc_rename.stp
3038
0644
edit
dl
rm
sysc_renameat.stp
4191
0644
edit
dl
rm
sysc_renameat2.stp
4500
0644
edit
dl
rm
sysc_request_key.stp
4138
0644
edit
dl
rm
sysc_restart_syscall.stp
2565
0644
edit
dl
rm
sysc_rmdir.stp
2657
0644
edit
dl
rm
sysc_rt_sigaction.stp
6952
0644
edit
dl
rm
sysc_rt_sigpending.stp
4799
0644
edit
dl
rm
sysc_rt_sigprocmask.stp
9105
0644
edit
dl
rm
sysc_rt_sigqueueinfo.stp
4750
0644
edit
dl
rm
sysc_rt_sigreturn.stp
1639
0644
edit
dl
rm
sysc_rt_sigsuspend.stp
3879
0644
edit
dl
rm
sysc_rt_sigtimedwait.stp
6024
0644
edit
dl
rm
sysc_rt_tgsigqueueinfo.stp
4460
0644
edit
dl
rm
sysc_sched_getaffinity.stp
4102
0644
edit
dl
rm
sysc_sched_getattr.stp
3671
0644
edit
dl
rm
sysc_sched_getparam.stp
3236
0644
edit
dl
rm
sysc_sched_getscheduler.stp
3296
0644
edit
dl
rm
sysc_sched_get_priority_max.stp
3640
0644
edit
dl
rm
sysc_sched_get_priority_min.stp
3640
0644
edit
dl
rm
sysc_sched_rr_get_interval.stp
4864
0644
edit
dl
rm
sysc_sched_setaffinity.stp
3960
0644
edit
dl
rm
sysc_sched_setattr.stp
3445
0644
edit
dl
rm
sysc_sched_setparam.stp
3221
0644
edit
dl
rm
sysc_sched_setscheduler.stp
3666
0644
edit
dl
rm
sysc_sched_yield.stp
2315
0644
edit
dl
rm
sysc_seccomp.stp
3365
0644
edit
dl
rm
sysc_select.stp
6359
0644
edit
dl
rm
sysc_semctl.stp
8206
0644
edit
dl
rm
sysc_semget.stp
4596
0644
edit
dl
rm
sysc_semop.stp
5770
0644
edit
dl
rm
sysc_semtimedop.stp
9936
0644
edit
dl
rm
sysc_send.stp
7369
0644
edit
dl
rm
sysc_sendfile.stp
4912
0644
edit
dl
rm
sysc_sendmmsg.stp
9305
0644
edit
dl
rm
sysc_sendmsg.stp
12110
0644
edit
dl
rm
sysc_sendto.stp
8357
0644
edit
dl
rm
sysc_setdomainname.stp
3729
0644
edit
dl
rm
sysc_setfsgid.stp
4796
0644
edit
dl
rm
sysc_setfsuid.stp
4839
0644
edit
dl
rm
sysc_setgid.stp
4573
0644
edit
dl
rm
sysc_setgroups.stp
4519
0644
edit
dl
rm
sysc_sethostname.stp
3274
0644
edit
dl
rm
sysc_setitimer.stp
6286
0644
edit
dl
rm
sysc_setns.stp
2804
0644
edit
dl
rm
sysc_setpgid.stp
2760
0644
edit
dl
rm
sysc_setpriority.stp
3218
0644
edit
dl
rm
sysc_setregid.stp
6660
0644
edit
dl
rm
sysc_setresgid.stp
7040
0644
edit
dl
rm
sysc_setresuid.stp
7055
0644
edit
dl
rm
sysc_setreuid.stp
6630
0644
edit
dl
rm
sysc_setrlimit.stp
4030
0644
edit
dl
rm
sysc_setsid.stp
2101
0644
edit
dl
rm
sysc_setsockopt.stp
8444
0644
edit
dl
rm
sysc_settimeofday.stp
6646
0644
edit
dl
rm
sysc_setuid.stp
4572
0644
edit
dl
rm
sysc_setxattr.stp
3993
0644
edit
dl
rm
sysc_set_mempolicy.stp
4171
0644
edit
dl
rm
sysc_set_robust_list.stp
4358
0644
edit
dl
rm
sysc_set_tid_address.stp
3195
0644
edit
dl
rm
sysc_sgetmask.stp
2169
0644
edit
dl
rm
sysc_shmat.stp
6777
0644
edit
dl
rm
sysc_shmctl.stp
8139
0644
edit
dl
rm
sysc_shmdt.stp
3982
0644
edit
dl
rm
sysc_shmget.stp
4501
0644
edit
dl
rm
sysc_shutdown.stp
6909
0644
edit
dl
rm
sysc_sigaction.stp
5782
0644
edit
dl
rm
sysc_sigaltstack.stp
4267
0644
edit
dl
rm
sysc_signal.stp
2867
0644
edit
dl
rm
sysc_signalfd.stp
12464
0644
edit
dl
rm
sysc_sigpending.stp
3712
0644
edit
dl
rm
sysc_sigprocmask.stp
4172
0644
edit
dl
rm
sysc_sigreturn.stp
1461
0644
edit
dl
rm
sysc_sigsuspend.stp
4575
0644
edit
dl
rm
sysc_socket.stp
7438
0644
edit
dl
rm
sysc_socketpair.stp
8297
0644
edit
dl
rm
sysc_splice.stp
3363
0644
edit
dl
rm
sysc_ssetmask.stp
2810
0644
edit
dl
rm
sysc_stat.stp
6535
0644
edit
dl
rm
sysc_statfs.stp
3491
0644
edit
dl
rm
sysc_statfs64.stp
3459
0644
edit
dl
rm
sysc_statx.stp
4118
0644
edit
dl
rm
sysc_stime.stp
3083
0644
edit
dl
rm
sysc_swapoff.stp
2875
0644
edit
dl
rm
sysc_swapon.stp
3121
0644
edit
dl
rm
sysc_symlink.stp
3028
0644
edit
dl
rm
sysc_symlinkat.stp
4060
0644
edit
dl
rm
sysc_sync.stp
1925
0644
edit
dl
rm
sysc_syncfs.stp
2571
0644
edit
dl
rm
sysc_sync_file_range.stp
6011
0644
edit
dl
rm
sysc_sysctl.stp
3095
0644
edit
dl
rm
sysc_sysfs.stp
3648
0644
edit
dl
rm
sysc_sysinfo.stp
3286
0644
edit
dl
rm
sysc_syslog.stp
2826
0644
edit
dl
rm
sysc_tee.stp
2743
0644
edit
dl
rm
sysc_tgkill.stp
2883
0644
edit
dl
rm
sysc_time.stp
3505
0644
edit
dl
rm
sysc_timerfd.stp
1829
0644
edit
dl
rm
sysc_timerfd_create.stp
3394
0644
edit
dl
rm
sysc_timerfd_gettime.stp
4219
0644
edit
dl
rm
sysc_timerfd_settime.stp
5282
0644
edit
dl
rm
sysc_timer_create.stp
4975
0644
edit
dl
rm
sysc_timer_delete.stp
2942
0644
edit
dl
rm
sysc_timer_getoverrun.stp
3207
0644
edit
dl
rm
sysc_timer_gettime.stp
4670
0644
edit
dl
rm
sysc_timer_settime.stp
6075
0644
edit
dl
rm
sysc_times.stp
3167
0644
edit
dl
rm
sysc_tkill.stp
2695
0644
edit
dl
rm
sysc_truncate.stp
7031
0644
edit
dl
rm
sysc_tux.stp
1068
0644
edit
dl
rm
sysc_umask.stp
2522
0644
edit
dl
rm
sysc_umount.stp
5360
0644
edit
dl
rm
sysc_uname.stp
5145
0644
edit
dl
rm
sysc_unlink.stp
2866
0644
edit
dl
rm
sysc_unlinkat.stp
3380
0644
edit
dl
rm
sysc_unshare.stp
2814
0644
edit
dl
rm
sysc_uselib.stp
2871
0644
edit
dl
rm
sysc_userfaultfd.stp
3005
0644
edit
dl
rm
sysc_ustat.stp
5333
0644
edit
dl
rm
sysc_utime.stp
6173
0644
edit
dl
rm
sysc_utimensat.stp
7044
0644
edit
dl
rm
sysc_utimes.stp
6331
0644
edit
dl
rm
sysc_vfork.stp
2029
0644
edit
dl
rm
sysc_vhangup.stp
2128
0644
edit
dl
rm
sysc_vmsplice.stp
6337
0644
edit
dl
rm
sysc_wait4.stp
5097
0644
edit
dl
rm
sysc_waitid.stp
4253
0644
edit
dl
rm
sysc_waitpid.stp
3460
0644
edit
dl
rm
sysc_write.stp
3939
0644
edit
dl
rm
sysc_writev.stp
3656
0644
edit
dl
rm
target_set.stp
1769
0644
edit
dl
rm
task.stp
22880
0644
edit
dl
rm
task.stpm
253
0644
edit
dl
rm
task_ancestry.stp
1621
0644
edit
dl
rm
task_time.stp
7861
0644
edit
dl
rm
tcp.stp
22642
0644
edit
dl
rm
tcpmib-filter-default.stp
885
0644
edit
dl
rm
tcpmib.stp
10824
0644
edit
dl
rm
timestamp.stp
1761
0644
edit
dl
rm
timestamp_gtod.stp
1629
0644
edit
dl
rm
timestamp_monotonic.stp
5589
0644
edit
dl
rm
tty.stp
7351
0644
edit
dl
rm
tzinfo.stp
803
0644
edit
dl
rm
ucontext-symbols.stp
8842
0644
edit
dl
rm
ucontext-unwind.stp
7645
0644
edit
dl
rm
ucontext.stp
2237
0644
edit
dl
rm
udp.stp
6097
0644
edit
dl
rm
utrace.stp
1363
0644
edit
dl
rm
vfs.stp
33826
0644
edit
dl
rm
Edit:
/usr/share/systemtap/tapset/linux/task.stp
(22880B)
// task information tapset // Copyright (C) 2006 Intel Corporation. // Copyright (C) 2010-2017 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. %{ #include <linux/version.h> #include <linux/file.h> #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,25) #include <linux/fdtable.h> #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0) #include <linux/sched/rt.h> #endif #ifndef STAPCONF_TASK_UID #include <linux/cred.h> #endif #include <linux/fs_struct.h> #include <linux/mm.h> %} /** * sfunction task_current - The current task_struct of the current task * * Description: This function returns the task_struct representing the current process. * This address can be passed to the various task_*() functions to extract * more task-specific data. */ function task_current:long () { return & @task(%{ /* pure */ (unsigned long)current %}) } @__private30 function _task_rlimit_cur:long (task:long, nd_limit:long) { if (nd_limit < 0 || nd_limit >= @const("RLIM_NLIMITS")) { return -1; } sig = @task(task)->signal; return @cast(sig, "signal_struct", "kernel")->rlim[nd_limit]->rlim_cur; } /* sfunction task_rlimit - The current resource limit of the task * * @task: task_struct pointer * @lim_str: String representing limit. * * Description: Little bit slower way how ger resource limits of * process. * There is need translate string into number for each call. */ function task_rlimit:long (task:long, lim_str:string) { lim = rlimit_from_str(lim_str); if (lim == -1) { return -1; } return _task_rlimit_cur(task, lim); } /* Fast and "safe" way how to do it. */ function task_rlimit_cpu:long (task:long) { return _task_rlimit_cur(task, @const("RLIMIT_CPU") ); } function task_rlimit_fsize:long (task:long) { return _task_rlimit_cur(task, @const("RLIMIT_FSIZE")); } function task_rlimit_data:long (task:long) { return _task_rlimit_cur(task, @const("RLIMIT_DATA")); } function task_rlimit_stack:long (task:long) { return _task_rlimit_cur(task, @const("RLIMIT_STACK")); } function task_rlimit_core:long (task:long) { return _task_rlimit_cur(task, @const("RLIMIT_CORE")); } function task_rlimit_rss:long (task:long) { return _task_rlimit_cur(task, @const("RLIMIT_RSS")); } function task_rlimit_nproc:long (task:long) { return _task_rlimit_cur(task, @const("RLIMIT_NPROC")); } function task_rlimit_nofile:long(task:long) { return _task_rlimit_cur(task, @const("RLIMIT_NOFILE")); } function task_rlimit_memlock:long(task:long) { return _task_rlimit_cur(task, @const("RLIMIT_MEMLOCK")); } function task_rlimit_as:long(task:long) { return _task_rlimit_cur(task, @const("RLIMIT_AS")); } function task_rlimit_locks:long(task:long) { return _task_rlimit_cur(task, @const("RLIMIT_LOCKS")); } function task_rlimit_sigpending:long(task:long) { %( kernel_v >= "2.6.8" %? return _task_rlimit_cur(task, @const("RLIMIT_SIGPENDING")); %: return -1 %) } function task_rlimit_msgqueue:long(task:long) { %( kernel_v >= "2.6.8" %? return _task_rlimit_cur(task, @const("RLIMIT_MSGQUEUE")); %: return -1 %) } function task_rlimit_nice:long(task:long) { %( kernel_v >= "2.6.12" %? return _task_rlimit_cur(task, @const("RLIMIT_NICE")); %: return -1 %) } function task_rlimit_rtprio:long(task:long) { %( kernel_v >= "2.6.12" %? return _task_rlimit_cur(task, @const("RLIMIT_RTPRIO")); %: return -1 %) } function task_rlimit_rttime:long(task:long) { %( kernel_v >= "2.6.25" %? return _task_rlimit_cur(task, @const("RLIMIT_RTTIME")); %: return -1 %) } /** * sfunction task_parent - The task_struct of the parent task * * @task: task_struct pointer * * Description: This function returns the parent task_struct of * the given task. This address can be passed to the various * task_*() functions to extract more task-specific data. */ function task_parent:long(task:long) { return @choose_defined(@task(task)->real_parent, @task(task)->parent) } /** * sfunction task_state - The state of the task * * @task: task_struct pointer * * Description: Return the state of the given task, one of: * TASK_RUNNING (0), TASK_INTERRUPTIBLE (1), TASK_UNINTERRUPTIBLE (2), * TASK_STOPPED (4), TASK_TRACED (8), EXIT_ZOMBIE (16), or EXIT_DEAD (32). */ function task_state:long (task:long) { return @choose_defined(@task(task)->state,@task(task)->__state) } /** * sfunction task_execname - The name of the task * * @task: task_struct pointer * * Description: Return the name of the given task. */ function task_execname:string (task:long) { return kernel_string(@task(task)->comm) } /** * sfunction task_pid - The process identifier of the task * * @task: task_struct pointer * * Description: This fucntion returns the process id of the given task. */ function task_pid:long (task:long) { return @task(task)->tgid } /** * sfunction task_ns_pid - The process identifier of the task * * @task: task_struct pointer * * Description: This fucntion returns the process id of the given task based on * the specified pid namespace.. */ function task_ns_pid:long (task:long) %{ /* pure */ /* guru */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; int64_t rc; /* Before using the task_struct pointer, make sure it is valid to * read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); rc = from_target_pid_ns(t, PID); if (rc < 0) STAP_ERROR ("cannot resolve id in namespace"); else STAP_RETURN (rc); CATCH_DEREF_FAULT(); %} /** * sfunction pid2task - The task_struct of the given process identifier * * @pid: process identifier * * Description: Return the task struct of the given process id. */ function pid2task:long (pid:long) { return & @task(%{ /* pure */ ({ struct task_struct *t = NULL; pid_t t_pid = (pid_t)(long)STAP_ARG_pid; #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31) struct pid *p_pid = find_get_pid(t_pid); rcu_read_lock(); t = pid_task(p_pid, PIDTYPE_PID); put_pid(p_pid); #else rcu_read_lock(); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) t = find_task_by_vpid (t_pid); #else t = find_task_by_pid (t_pid); #endif /* 2.6.24 */ #endif /* 2.6.31 */ rcu_read_unlock(); (unsigned long)t; }) %}) } /** * sfunction pid2execname - The name of the given process identifier * * @pid: process identifier * * Description: Return the name of the given process id. */ function pid2execname:string (pid:long) { tsk = pid2task(pid) if (tsk) return task_execname(tsk) return "" } /** * sfunction task_tid - The thread identifier of the task * * @task: task_struct pointer * * Description: This function returns the thread id of the given task. */ function task_tid:long (task:long) { return @task(task)->pid } /** * sfunction task_ns_tid - The thread identifier of the task as seen in a namespace * * @task: task_struct pointer * * Description: This function returns the thread id of the given task as seen * in the pid namespace. */ function task_ns_tid:long (task:long)%{ /* pure */ /* guru */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; int64_t rc; /* Before using the task_struct pointer, make sure it is valid to * read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); rc = from_target_pid_ns(t, TID); if (rc < 0) STAP_ERROR ("cannot resolve id in namespace"); else STAP_RETURN (rc); CATCH_DEREF_FAULT(); %} /** * sfunction task_gid - The group identifier of the task * * @task: task_struct pointer * * Description: This function returns the group id of the given task. */ function task_gid:long (task:long) %{ /* pure */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; #ifdef STAPCONF_TASK_UID STAP_RETVALUE = kread(&(t->gid)); #else #ifdef STAPCONF_FROM_KUID_MUNGED struct user_namespace *user_ns; #endif /* We can't easily kread the task_struct's rcu-protected * credential fields. So, let's just make sure the entire * task_struct is valid to read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); /* If task_gid() isn't defined, make our own. */ #if !defined(task_gid) && defined(task_cred_xxx) #define task_gid(task) (task_cred_xxx((task), gid)) #endif #ifdef STAPCONF_FROM_KUID_MUNGED /* We also need to validate the namespace structure. */ user_ns = task_cred_xxx(t, user_ns); (void)kderef_buffer(NULL, user_ns, sizeof(struct user_namespace)); STAP_RETVALUE = from_kgid_munged(user_ns, task_gid(t)); #else STAP_RETVALUE = task_gid (t); #endif #endif CATCH_DEREF_FAULT(); %} /** * sfunction task_ns_gid - The group identifier of the task as seen in a namespace * * @task: task_struct pointer * * Description: This function returns the group id of the given task as seen in * in the given user namespace. */ function task_ns_gid:long (task:long) %{ /* pure */ /* guru */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; int64_t rc; /* Before using the task_struct pointer, make sure it is valid to * read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); rc = from_target_user_ns(t, GID); if (rc < 0) STAP_ERROR ("cannot resolve id in namespace"); else STAP_RETURN (rc); CATCH_DEREF_FAULT(); %} /** * sfunction task_egid - The effective group identifier of the task * * @task: task_struct pointer * * Description: This function returns the effective group id of the given task. */ function task_egid:long (task:long) %{ /* pure */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; #ifdef STAPCONF_TASK_UID STAP_RETVALUE = kread(&(t->egid)); #else #ifdef STAPCONF_FROM_KUID_MUNGED struct user_namespace *user_ns; #endif /* We can't easily kread the task_struct's rcu-protected * credential fields. So, let's just make sure the entire * task_struct is valid to read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); /* If task_egid() isn't defined, make our own. */ #if !defined(task_egid) && defined(task_cred_xxx) #define task_egid(task) (task_cred_xxx((task), egid)) #endif #ifdef STAPCONF_FROM_KUID_MUNGED /* We also need to validate the namespace structure. */ user_ns = task_cred_xxx(t, user_ns); (void)kderef_buffer(NULL, user_ns, sizeof(struct user_namespace)); STAP_RETVALUE = from_kgid_munged(user_ns, task_egid(t)); #else STAP_RETVALUE = task_egid (t); #endif #endif CATCH_DEREF_FAULT(); %} /** * sfunction task_ns_egid - The effective group identifier of the task * * @task: task_struct pointer * * Description: This function returns the effective group id of the given task. */ function task_ns_egid:long (task:long) %{ /* pure */ /* guru */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; int64_t rc; /* Before using the task_struct pointer, make sure it is valid to * read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); rc = from_target_user_ns(current, EGID); if (rc < 0) STAP_ERROR ("cannot resolve id in namespace"); else STAP_RETURN (rc); CATCH_DEREF_FAULT(); %} /** * sfunction task_uid - The user identifier of the task * * @task: task_struct pointer * * Description: This function returns the user id of the given task. */ function task_uid:long (task:long) %{ /* pure */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; #ifdef STAPCONF_TASK_UID STAP_RETVALUE = kread(&(t->uid)); #else #ifdef STAPCONF_FROM_KUID_MUNGED struct user_namespace *user_ns; #endif /* We can't easily kread the task_struct's rcu-protected * credential fields. So, let's just make sure the entire * task_struct is valid to read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); #ifdef STAPCONF_FROM_KUID_MUNGED /* We also need to validate the namespace structure. */ user_ns = task_cred_xxx(t, user_ns); (void)kderef_buffer(NULL, user_ns, sizeof(struct user_namespace)); STAP_RETVALUE = from_kuid_munged(user_ns, task_uid(t)); #else STAP_RETVALUE = task_uid (t); #endif #endif CATCH_DEREF_FAULT(); %} /** * sfunction task_ns_uid - The user identifier of the task * * @task: task_struct pointer * * Description: This function returns the user id of the given task. */ function task_ns_uid:long (task:long) %{ /* pure */ /* guru */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; int64_t rc; /* Before using the task_struct pointer, make sure it is valid to * read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); rc = from_target_user_ns(current, UID); if (rc < 0) STAP_ERROR ("cannot resolve id in namespace"); else STAP_RETURN (rc); CATCH_DEREF_FAULT(); %} /** * sfunction task_euid - The effective user identifier of the task * * @task: task_struct pointer * * Description: This function returns the effective user id of the given task. */ function task_euid:long (task:long) %{ /* pure */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; #ifdef STAPCONF_TASK_UID STAP_RETVALUE = kread(&(t->euid)); #else #ifdef STAPCONF_FROM_KUID_MUNGED struct user_namespace *user_ns; #endif /* We can't easily kread the task_struct's rcu-protected * credential fields. So, let's just make sure the entire * task_struct is valid to read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); #ifdef STAPCONF_FROM_KUID_MUNGED /* We also need to validate the namespace structure. */ user_ns = task_cred_xxx(t, user_ns); (void)kderef_buffer(NULL, user_ns, sizeof(struct user_namespace)); STAP_RETVALUE = from_kuid_munged(user_ns, task_euid(t)); #else STAP_RETVALUE = task_euid (t); #endif #endif CATCH_DEREF_FAULT(); %} /** * sfunction task_ns_euid - The effective user identifier of the task * * @task: task_struct pointer * * Description: This function returns the effective user id of the given task. */ function task_ns_euid:long (task:long) %{ /* pure */ /* guru */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; int64_t rc; /* Before using the task_struct pointer, make sure it is valid to * read. */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); rc = from_target_user_ns(current, EUID); if (rc < 0) STAP_ERROR ("cannot resolve id in namespace"); else STAP_RETURN (rc); CATCH_DEREF_FAULT(); %} /** * sfunction task_prio - The priority value of the task * * @task: task_struct pointer * * Description: This function returns the priority value of the given task. */ function task_prio:long (task:long) %{ /* pure */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; STAP_RETVALUE = kread(&(t->prio)) - MAX_RT_PRIO; CATCH_DEREF_FAULT(); %} /** * sfunction task_nice - The nice value of the task * * @task: task_struct pointer * * Description: This function returns the nice value of the given task. */ function task_nice:long (task:long) %{ /* pure */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; STAP_RETVALUE = kread(&(t->static_prio)) - MAX_RT_PRIO - 20; CATCH_DEREF_FAULT(); %} /** * sfunction task_cpu - The scheduled cpu of the task * * @task: task_struct pointer * * Description: This function returns the scheduled cpu for the given task. */ function task_cpu:long (task:long) { if (@defined(@task(task)->cpu)) return @task(task)->cpu else { ti = @choose_defined(@task(task)->stack, @task(task)->thread_info); return @cast(ti, "thread_info", "kernel<linux/sched.h>")->cpu } } /** * sfunction task_open_file_handles - The number of open files of the task * * @task: task_struct pointer * * Description: This function returns the number of open file handlers for the given task. */ function task_open_file_handles:long (task:long) %{ /* pure */ int locked = 0; unsigned int count=0, fd, max; struct task_struct *t; #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15) /* Older kernels */ struct files_struct *f; #else struct files_struct *fs; struct fdtable *f; #endif t = (struct task_struct *)(uintptr_t)STAP_ARG_task; #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15) /* Older kernels */ f = kread(&(t->files)); #else fs = kread(&(t->files)); f = kread(&(fs->fdt)); #endif rcu_read_lock(); locked = 1; max = kread(&(f->max_fds)); for (fd = 0; fd < max; fd++) { if ( kread(&(f->fd[fd])) != NULL) count ++; } STAP_RETVALUE = count; CATCH_DEREF_FAULT(); if (locked) rcu_read_unlock(); %} /** * sfunction task_max_file_handles - The max number of open files for the task * * @task: task_struct pointer * * Description: This function returns the maximum number of file handlers for the given task. */ function task_max_file_handles:long (task:long) %{ /* pure */ int locked = 0; struct task_struct *t; #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15) struct files_struct *f; #else struct files_struct *fs; struct fdtable *f; #endif t = (struct task_struct *)(uintptr_t)STAP_ARG_task; #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15) f = kread(&(t->files)); #else fs = kread (&(t->files)); f = kread(&(fs->fdt)); #endif rcu_read_lock(); locked = 1; STAP_RETVALUE = kread(&(f->max_fds)); CATCH_DEREF_FAULT(); if (locked) rcu_read_unlock(); %} /** * sfunction task_fd_lookup - get the file struct for a task's fd * * @task: task_struct pointer. * @fd: file descriptor number. * * Description: Returns the file struct pointer for a task's file * descriptor. */ function task_fd_lookup:long(task:long, fd:long) %{ /* pure */ struct task_struct *t = (struct task_struct *)(uintptr_t)STAP_ARG_task; struct files_struct *files = NULL; unsigned int fd = (unsigned int)(unsigned long)STAP_ARG_fd; struct file *file = NULL; /* Before using the task_struct pointer, make sure it is valid * to read. * * Note that originally we called * get_task_struct()/put_task_struct() here. However, just * because the task_struct memory is valid to read, doesn't * mean it is valid to *write* to this memory, which * get_task_struct() does. So, we won't bother with * get_task_struct()/put_task_struct(). */ (void)kderef_buffer(NULL, t, sizeof(struct task_struct)); // We should be calling get_files_struct() here, but it isn't // exported. This means that we can't lock the // files_struct. files = t->files; if (files) { /* Before using the files_struct pointer, make sure it is * valid to read. */ (void)kderef_buffer(NULL, files, sizeof(struct files_struct)); spin_lock(&files->file_lock); #ifdef STAPCONF_FILES_LOOKUP_FD_RAW file = files_lookup_fd_raw(files, fd); #else file = fcheck_files(files, fd); #endif spin_unlock(&files->file_lock); } if (file) { // Note that we're returning a pointer which isn't // locked or has had its usage count increased. There // is nothing keeping this pointer valid until we use // it. So, before using it, it must be validated by // callers. STAP_RETURN((unsigned long)file); } else { STAP_ERROR ("cannot find file in task"); } CATCH_DEREF_FAULT(); %} /** * sfunction task_cwd_path - get the path struct pointer for a task's current working directory * * @task: task_struct pointer. */ function task_cwd_path:long(task:long) %{ /* pure */ struct task_struct *task = (struct task_struct *)(uintptr_t)STAP_ARG_task; int put_task_struct_needed = 0; // Before using the task_struct pointer, make sure it is valid // to read. (void)kderef_buffer(NULL, task, sizeof(struct task_struct)); // OK, we now know it is valid to read. But, is it really a // task struct? if (!_stp_task_struct_valid(task)) { STAP_ERROR ("invalid task struct pointer"); } get_task_struct(task); put_task_struct_needed = 1; // The kernel calls get_fs_pwd() here, which is an inlined // function in include/linux/fs_struct.h. This function // doesn't return a path pointer, but assumes the caller has // allocated storage for the struct path. Instead, we're going // to return a pointer to task->fs->pwd. if (task->fs) { // Sigh. On kernels before 2.6.25, the task->fs->pwd // structure exists, but isn't a 'path' // structure. Instead it is a 'dentry' structure. The // 'pwd' and 'pwdmnt' (which is a 'vfsmount' // structure) variables would both be needed to get a // pathname. However, this function can't return 2 // items or really declare a static 'path' structure // to put the 2 pointers in. // // So, on those RHEL5-era kernels, we'll just return // NULL here. #ifdef STAPCONF_DPATH_PATH // Before using the task->fs pointer, let's be // paranoid and make sure it is valid to read. (void)kderef_buffer(NULL, task->fs, sizeof(struct fs_struct)); if (put_task_struct_needed) put_task_struct(task); STAP_RETURN((unsigned long)&task->fs->pwd); #endif } CATCH_DEREF_FAULT(); if (put_task_struct_needed) put_task_struct(task); %} /** * sfunction current_exe_file - get the file struct pointer for the current task's executable file * * Description: This function returns the file struct pointer for the * current task's executable file. Note that the file struct pointer * isn't locked on return. The return value of this function can be * passed to fullpath_struct_file() to get the path from the file * struct. */ function current_exe_file:long() %{ /* pure */ struct file *exe_file = NULL; if (current == NULL) { STAP_ERROR ("No current task"); } // Since we're stopped inside current, it isn't going away. So // don't bother incrementing the task's usage count by calling // get_task_struct()/put_task_struct(). We also don't need to // bother to try to lock current->mm. if (current->mm) { exe_file = stap_find_exe_file(current->mm); if (exe_file) { STAP_RETVALUE = (unsigned long)exe_file; fput(exe_file); } } %} %(systemtap_v <= "3.2" %? /** * sfunction task_exe_file - get the file struct pointer for a task's executable file * * @task: task_struct pointer. */ function task_exe_file:long(task:long) { if (task == task_current()) { return current_exe_file() } error("Only the exe file for the current task can be returned") } %)
Save
cmd:
run