Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm")
Expand Down Expand Up @@ -29,8 +30,8 @@ dependencies {
// With compose.desktop.common you will also lose @Preview functionality
implementation(compose.desktop.currentOs)
implementation(compose.components.resources)
implementation("me.bechberger:bpf:0.1.2")
annotationProcessor("me.bechberger:bpf:0.1.2")
implementation("me.bechberger:bpf:0.1.3")
annotationProcessor("me.bechberger:bpf:0.1.3")
implementation("org.jetbrains.androidx.navigation:navigation-compose:2.8.0-alpha12")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.2")
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED --enable-native-access=ALL-UNNAMED
kotlin.code.style=official
kotlin.version=2.1.10
kotlin.version=2.2.21
compose.version=1.7.3
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
import me.bechberger.ebpf.annotations.Size;
import me.bechberger.ebpf.annotations.Type;
import me.bechberger.ebpf.annotations.Unsigned;
import me.bechberger.ebpf.annotations.bpf.BPF;
import me.bechberger.ebpf.annotations.bpf.BPFFunction;
import me.bechberger.ebpf.annotations.bpf.BPFMapDefinition;
import me.bechberger.ebpf.annotations.bpf.Property;
import me.bechberger.ebpf.annotations.bpf.*;
import me.bechberger.ebpf.bpf.*;
import me.bechberger.ebpf.bpf.map.BPFBloomFilter;
import me.bechberger.ebpf.bpf.map.BPFQueue;
Expand Down Expand Up @@ -105,7 +102,7 @@ public void enqueue(Ptr<TaskDefinitions.task_struct> p, long enq_flags) {

if (!isEnqueued) {
@Unsigned int baseSlice = 5_000_000;
scx_bpf_dispatch(p, BLACKLISTED_DSQ_ID, baseSlice / scx_bpf_dsq_nr_queued(BLACKLISTED_DSQ_ID), 1033);
scx_bpf_dsq_insert(p, BLACKLISTED_DSQ_ID, baseSlice / scx_bpf_dsq_nr_queued(BLACKLISTED_DSQ_ID), 1033);
}
}

Expand All @@ -120,12 +117,28 @@ public void dispatch(int cpu, Ptr<TaskDefinitions.task_struct> prev) {
Ptr<TaskDefinitions.task_struct> task = bpf_task_from_pid(pid);
if (task != null) {
@Unsigned int baseSlice = 5_000_000;
scx_bpf_dispatch(task, scx_dsq_id_flags.SCX_DSQ_GLOBAL.value(), baseSlice / scx_bpf_dsq_nr_queued(scx_dsq_id_flags.SCX_DSQ_GLOBAL.value()), 0);
scx_bpf_dsq_insert(task, scx_dsq_id_flags.SCX_DSQ_GLOBAL.value(), baseSlice / scx_bpf_dsq_nr_queued(scx_dsq_id_flags.SCX_DSQ_GLOBAL.value()), 0);
bpf_task_release(task);
}
}

scx_bpf_consume(BLACKLISTED_DSQ_ID); // TODO: After 6.15: renamed to scx_bpf_dsq_move_to_local
scx_bpf_dsq_move_to_local(BLACKLISTED_DSQ_ID); // TODO: After 6.15: renamed to scx_bpf_dsq_move_to_local
}

@BuiltinBPFFunction
public static @NotUsableInJava boolean scx_bpf_dsq_move_to_local(@Unsigned long dsq_id) {
throw new MethodIsBPFRelatedFunction();
}

@BuiltinBPFFunction
public static void scx_bpf_dsq_insert(Ptr<TaskDefinitions.task_struct> p, @Unsigned long dsq_id, @Unsigned long slice, @Unsigned long enq_flags) {
throw new MethodIsBPFRelatedFunction();
}

@NotUsableInJava
@BuiltinBPFFunction
public static void scx_bpf_dispatch(Ptr<TaskDefinitions.task_struct> p, @Unsigned long dsq_id, @Unsigned long slice, @Unsigned long enq_flags) {
throw new MethodIsBPFRelatedFunction();
}

void queueLoop(Consumer<ClickableTask> taskConsumer, IntConsumer syscallUpdater) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
import me.bechberger.ebpf.annotations.Size;
import me.bechberger.ebpf.annotations.Type;
import me.bechberger.ebpf.annotations.Unsigned;
import me.bechberger.ebpf.annotations.bpf.BPF;
import me.bechberger.ebpf.annotations.bpf.BPFFunction;
import me.bechberger.ebpf.annotations.bpf.BPFMapDefinition;
import me.bechberger.ebpf.annotations.bpf.Property;
import me.bechberger.ebpf.annotations.bpf.*;
import me.bechberger.ebpf.bpf.BPFJ;
import me.bechberger.ebpf.bpf.BPFProgram;
import me.bechberger.ebpf.bpf.GlobalVariable;
Expand Down Expand Up @@ -52,10 +49,15 @@ public void enqueue(Ptr<TaskDefinitions.task_struct> p, long enq_flags) {
boolean blacklisted = isBlacklisted(p);
if (blacklisted) {
@Unsigned int baseSlice = 5_000_000;
scx_bpf_dispatch(p, scx_dsq_id_flags.SCX_DSQ_GLOBAL.value(), baseSlice / scx_bpf_dsq_nr_queued(scx_dsq_id_flags.SCX_DSQ_GLOBAL.value()), 1033);
scx_bpf_dsq_insert(p, scx_dsq_id_flags.SCX_DSQ_GLOBAL.value(), baseSlice / scx_bpf_dsq_nr_queued(scx_dsq_id_flags.SCX_DSQ_GLOBAL.value()), 1033);
}
}

@BuiltinBPFFunction
public static void scx_bpf_dsq_insert(Ptr<TaskDefinitions.task_struct> p, @Unsigned long dsq_id, @Unsigned long slice, @Unsigned long enq_flags) {
throw new MethodIsBPFRelatedFunction();
}

public static void run(int[] pidBlacklist) {
try (var program = BPFProgram.load(TaskTestScheduler.class)) {
for (int pid : pidBlacklist) {
Expand Down