newStructOpsMemberLayout returns a layout information from a struct_ops member.
(m btf.Member)
| 25 | |
| 26 | // newStructOpsMemberLayout returns a layout information from a struct_ops member. |
| 27 | func newStructOpsMemberLayout(m btf.Member) (*structOpsMemberLayout, error) { |
| 28 | if m.BitfieldSize > 0 { |
| 29 | return nil, fmt.Errorf("bitfield %s not supported", m.Name) |
| 30 | } |
| 31 | |
| 32 | size, err := btf.Sizeof(m.Type) |
| 33 | if err != nil { |
| 34 | return nil, fmt.Errorf("sizeof(%s): %w", m.Name, err) |
| 35 | } |
| 36 | |
| 37 | off := int(m.Offset.Bytes()) |
| 38 | if off < 0 { |
| 39 | return nil, fmt.Errorf("member %q: invalid offset", m.Name) |
| 40 | } |
| 41 | |
| 42 | return &structOpsMemberLayout{ |
| 43 | member: m, |
| 44 | off: off, |
| 45 | size: size, |
| 46 | typ: btf.UnderlyingType(m.Type), |
| 47 | }, nil |
| 48 | } |
| 49 | |
| 50 | // bytes returns the portion of `buf` corresponding to the member. |
| 51 | func (ml *structOpsMemberLayout) bytes(buf []byte) ([]byte, error) { |
no test coverage detected
searching dependent graphs…