me.bechberger.ebpf.bpf.raw.tpacket_req_u 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 :
* union tpacket_req_u {
* struct tpacket_req req;
* struct tpacket_req3 req3;
* }
* }
*/
public class tpacket_req_u {
tpacket_req_u() {
// Should not be called directly
}
private static final GroupLayout $LAYOUT = MemoryLayout.unionLayout(
tpacket_req.layout().withName("req"),
tpacket_req3.layout().withName("req3")
).withName("tpacket_req_u");
/**
* The layout of this union
*/
public static final GroupLayout layout() {
return $LAYOUT;
}
private static final GroupLayout req$LAYOUT = (GroupLayout)$LAYOUT.select(groupElement("req"));
/**
* Layout for field:
* {@snippet lang=c :
* struct tpacket_req req
* }
*/
public static final GroupLayout req$layout() {
return req$LAYOUT;
}
private static final long req$OFFSET = 0;
/**
* Offset for field:
* {@snippet lang=c :
* struct tpacket_req req
* }
*/
public static final long req$offset() {
return req$OFFSET;
}
/**
* Getter for field:
* {@snippet lang=c :
* struct tpacket_req req
* }
*/
public static MemorySegment req(MemorySegment union) {
return union.asSlice(req$OFFSET, req$LAYOUT.byteSize());
}
/**
* Setter for field:
* {@snippet lang=c :
* struct tpacket_req req
* }
*/
public static void req(MemorySegment union, MemorySegment fieldValue) {
MemorySegment.copy(fieldValue, 0L, union, req$OFFSET, req$LAYOUT.byteSize());
}
private static final GroupLayout req3$LAYOUT = (GroupLayout)$LAYOUT.select(groupElement("req3"));
/**
* Layout for field:
* {@snippet lang=c :
* struct tpacket_req3 req3
* }
*/
public static final GroupLayout req3$layout() {
return req3$LAYOUT;
}
private static final long req3$OFFSET = 0;
/**
* Offset for field:
* {@snippet lang=c :
* struct tpacket_req3 req3
* }
*/
public static final long req3$offset() {
return req3$OFFSET;
}
/**
* Getter for field:
* {@snippet lang=c :
* struct tpacket_req3 req3
* }
*/
public static MemorySegment req3(MemorySegment union) {
return union.asSlice(req3$OFFSET, req3$LAYOUT.byteSize());
}
/**
* Setter for field:
* {@snippet lang=c :
* struct tpacket_req3 req3
* }
*/
public static void req3(MemorySegment union, MemorySegment fieldValue) {
MemorySegment.copy(fieldValue, 0L, union, req3$OFFSET, req3$LAYOUT.byteSize());
}
/**
* 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 union
*/
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);
}
}