me.bechberger.ebpf.bpf.raw.bpf_insn Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rawbpf Show documentation
Show all versions of rawbpf Show documentation
Raw Panama bindings for libbpf generated for jextract on 64-bit Linux
The newest version!
// Generated by jextract
package me.bechberger.ebpf.bpf.raw;
import java.lang.invoke.*;
import java.lang.foreign.*;
import java.nio.ByteOrder;
import java.util.*;
import java.util.function.*;
import java.util.stream.*;
import static java.lang.foreign.ValueLayout.*;
import static java.lang.foreign.MemoryLayout.PathElement.*;
/**
* {@snippet lang=c :
* struct bpf_insn {
* __u8 code;
* __u8 dst_reg : 4;
* __u8 src_reg : 4;
* __s16 off;
* __s32 imm;
* }
* }
*/
public class bpf_insn {
bpf_insn() {
// Should not be called directly
}
private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
Lib.C_CHAR.withName("code"),
MemoryLayout.paddingLayout(1),
Lib.C_SHORT.withName("off"),
Lib.C_INT.withName("imm")
).withName("bpf_insn");
/**
* The layout of this struct
*/
public static final GroupLayout layout() {
return $LAYOUT;
}
private static final OfByte code$LAYOUT = (OfByte)$LAYOUT.select(groupElement("code"));
/**
* Layout for field:
* {@snippet lang=c :
* __u8 code
* }
*/
public static final OfByte code$layout() {
return code$LAYOUT;
}
private static final long code$OFFSET = 0;
/**
* Offset for field:
* {@snippet lang=c :
* __u8 code
* }
*/
public static final long code$offset() {
return code$OFFSET;
}
/**
* Getter for field:
* {@snippet lang=c :
* __u8 code
* }
*/
public static byte code(MemorySegment struct) {
return struct.get(code$LAYOUT, code$OFFSET);
}
/**
* Setter for field:
* {@snippet lang=c :
* __u8 code
* }
*/
public static void code(MemorySegment struct, byte fieldValue) {
struct.set(code$LAYOUT, code$OFFSET, fieldValue);
}
private static final OfShort off$LAYOUT = (OfShort)$LAYOUT.select(groupElement("off"));
/**
* Layout for field:
* {@snippet lang=c :
* __s16 off
* }
*/
public static final OfShort off$layout() {
return off$LAYOUT;
}
private static final long off$OFFSET = 2;
/**
* Offset for field:
* {@snippet lang=c :
* __s16 off
* }
*/
public static final long off$offset() {
return off$OFFSET;
}
/**
* Getter for field:
* {@snippet lang=c :
* __s16 off
* }
*/
public static short off(MemorySegment struct) {
return struct.get(off$LAYOUT, off$OFFSET);
}
/**
* Setter for field:
* {@snippet lang=c :
* __s16 off
* }
*/
public static void off(MemorySegment struct, short fieldValue) {
struct.set(off$LAYOUT, off$OFFSET, fieldValue);
}
private static final OfInt imm$LAYOUT = (OfInt)$LAYOUT.select(groupElement("imm"));
/**
* Layout for field:
* {@snippet lang=c :
* __s32 imm
* }
*/
public static final OfInt imm$layout() {
return imm$LAYOUT;
}
private static final long imm$OFFSET = 4;
/**
* Offset for field:
* {@snippet lang=c :
* __s32 imm
* }
*/
public static final long imm$offset() {
return imm$OFFSET;
}
/**
* Getter for field:
* {@snippet lang=c :
* __s32 imm
* }
*/
public static int imm(MemorySegment struct) {
return struct.get(imm$LAYOUT, imm$OFFSET);
}
/**
* Setter for field:
* {@snippet lang=c :
* __s32 imm
* }
*/
public static void imm(MemorySegment struct, int fieldValue) {
struct.set(imm$LAYOUT, imm$OFFSET, fieldValue);
}
/**
* Obtains a slice of {@code arrayParam} which selects the array element at {@code index}.
* The returned segment has address {@code arrayParam.address() + index * layout().byteSize()}
*/
public static MemorySegment asSlice(MemorySegment array, long index) {
return array.asSlice(layout().byteSize() * index);
}
/**
* The size (in bytes) of this struct
*/
public static long sizeof() { return layout().byteSize(); }
/**
* Allocate a segment of size {@code layout().byteSize()} using {@code allocator}
*/
public static MemorySegment allocate(SegmentAllocator allocator) {
return allocator.allocate(layout());
}
/**
* Allocate an array of size {@code elementCount} using {@code allocator}.
* The returned segment has size {@code elementCount * layout().byteSize()}.
*/
public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, layout()));
}
/**
* Reinterprets {@code addr} using target {@code arena} and {@code cleanupAction} (if any).
* The returned segment has size {@code layout().byteSize()}
*/
public static MemorySegment reinterpret(MemorySegment addr, Arena arena, Consumer cleanup) {
return reinterpret(addr, 1, arena, cleanup);
}
/**
* Reinterprets {@code addr} using target {@code arena} and {@code cleanupAction} (if any).
* The returned segment has size {@code elementCount * layout().byteSize()}
*/
public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena arena, Consumer cleanup) {
return addr.reinterpret(layout().byteSize() * elementCount, arena, cleanup);
}
}