Function report |
Source Code:kernel\events\core.c |
Create Date:2022-07-28 13:40:53 |
Last Modify:2022-05-20 07:50:19 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:perf_copy_attr
Proto:static int perf_copy_attr(struct perf_event_attr __user *uattr, struct perf_event_attr *attr)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
struct perf_event_attr __user * | uattr | |
struct perf_event_attr * | attr |
10908 | ret = Get a simple variable from user space(size, & Size of the attr structure, for fwd/bwd compat.) |
10913 | If Not size Then size = sizeof first published struct |
10915 | If size < sizeof first published struct || size > PAGE_SIZE Then Go to err_size |
10918 | ret = py_struct_from_user: copy a struct from userspace*@dst: Destination address, in kernel space |
10919 | If ret Then |
10927 | If __reserved_1 || __reserved_2 || __reserved_3 Then Return -EINVAL |
10930 | If sample_type & ~(PERF_SAMPLE_MAX - 1) Then Return -EINVAL |
10933 | If read_format & ~(PERF_FORMAT_MAX - 1) Then Return -EINVAL |
10936 | If sample_type & PERF_SAMPLE_BRANCH_STACK Then |
10937 | mask = um perf_branch_sample_type |
10940 | If mask & ~(PERF_SAMPLE_BRANCH_MAX - 1) Then Return -EINVAL |
10944 | If Not (mask & ~PERF_SAMPLE_BRANCH_PLM_ALL) Then Return -EINVAL |
10948 | If Not (mask & PERF_SAMPLE_BRANCH_PLM_ALL) Then |
10951 | If Not ditto kernel Then mask |= PERF_SAMPLE_BRANCH_KERNEL |
10954 | If Not don't count user Then mask |= PERF_SAMPLE_BRANCH_USER |
10957 | If Not ditto hypervisor Then mask |= PERF_SAMPLE_BRANCH_HV |
10962 | um perf_branch_sample_type = mask |
10965 | If mask & anch priv levels that need permission checks Then |
10966 | ret = perf_allow_kernel(attr) |
10972 | If sample_type & PERF_SAMPLE_REGS_USER Then |
10978 | If sample_type & PERF_SAMPLE_STACK_USER Then |
10979 | If Not arch_perf_have_user_stack_dump() Then Return -ENOSYS |
10987 | If Defines size of the user stack to dump on samples. >= USHRT_MAX Then Return -EINVAL |
10989 | Else if Not IS_ALIGNED(Defines size of the user stack to dump on samples., sizeof(u64)) Then Return -EINVAL |
10993 | If Not sample_max_stack Then sample_max_stack = sysctl_perf_event_max_stack |
10998 | out : |
10999 | Return ret |
11001 | err_size : |
11002 | Write a simple value into user space( size of attr , & Size of the attr structure, for fwd/bwd compat.) |
11004 | Go to out |
Name | Describe |
---|---|
_perf_ioctl |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |