structOpsPopulateValue writes a `prog FD` which references to `p` into the struct_ops value buffer `kernVData` at byte offset `dstOff` corresponding to the member `km`.
(km btf.Member, kernVData []byte, p *Program)
| 119 | // struct_ops value buffer `kernVData` at byte offset `dstOff` corresponding to |
| 120 | // the member `km`. |
| 121 | func structOpsPopulateValue(km btf.Member, kernVData []byte, p *Program) error { |
| 122 | if err := structOpsFuncPtrMember(km); err != nil { |
| 123 | return err |
| 124 | } |
| 125 | |
| 126 | layout, err := newStructOpsMemberLayout(km) |
| 127 | if err != nil { |
| 128 | return err |
| 129 | } |
| 130 | |
| 131 | dst, err := layout.bytes(kernVData) |
| 132 | if err != nil || len(dst) != 8 { |
| 133 | return fmt.Errorf("member %q: value buffer too small for func ptr", km.Name) |
| 134 | } |
| 135 | |
| 136 | internal.NativeEndian.PutUint64(dst, uint64(p.FD())) |
| 137 | return nil |
| 138 | } |
| 139 | |
| 140 | // structOpsValidateMemberPair checks whether `m` can be copied into `km`. |
| 141 | func structOpsValidateMemberPair(m, km btf.Member) (int, error) { |
no test coverage detected
searching dependent graphs…