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
8 changes: 8 additions & 0 deletions scheds/include/scx/common.bpf.h
Original file line number Diff line number Diff line change
Expand Up @@ -763,6 +763,14 @@ static inline u64 scale_by_task_weight_inverse(const struct task_struct *p, u64
return value * 100 / p->scx.weight;
}

/*
* Get a random u64 from the kernel's pseudo-random generator.
*/
static inline u64 get_prandom_u64()
{
return ((u64)bpf_get_prandom_u32() << 32) | bpf_get_prandom_u32();
}


#include "compat.bpf.h"
#include "enums.bpf.h"
Expand Down
14 changes: 11 additions & 3 deletions scheds/rust/scx_chaos/src/bpf/intf.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ typedef unsigned long long u64;
#endif

enum chaos_consts {
CHAOS_DSQ_BASE_SHIFT = 16,
CHAOS_DSQ_BASE = 1 << CHAOS_DSQ_BASE_SHIFT,
CHAOS_DSQ_BASE_SHIFT = 16,
CHAOS_DSQ_BASE = 1 << CHAOS_DSQ_BASE_SHIFT,

CHAOS_NUM_PPIDS_CHECK = 1 << 20,
CHAOS_NUM_PPIDS_CHECK = 1 << 20,

CHAOS_MAX_RAND_ATTEMPTS = 512,
};

enum chaos_match {
Expand All @@ -31,6 +33,7 @@ enum chaos_trait_kind {
CHAOS_TRAIT_CPU_FREQ,
CHAOS_TRAIT_DEGRADATION,
CHAOS_TRAIT_KPROBE_RANDOM_DELAYS,
CHAOS_TRAIT_FUTEX_DELAYS,
CHAOS_TRAIT_MAX,
};

Expand All @@ -42,12 +45,17 @@ struct chaos_task_ctx {
enum chaos_trait_kind pending_trait;
u64 enq_flags;
u64 p2dq_vtime;

// Futex delay state
u64 futex_uaddr;
};

enum chaos_stat_idx {
CHAOS_STAT_TRAIT_RANDOM_DELAYS,
CHAOS_STAT_TRAIT_CPU_FREQ,
CHAOS_STAT_TRAIT_DEGRADATION,
CHAOS_STAT_TRAIT_FUTEX_DELAYS,
CHAOS_STAT_TRAIT_FUTEX_DELAYS_CONTENDED,
CHAOS_STAT_CHAOS_EXCLUDED,
CHAOS_STAT_CHAOS_SKIPPED,
CHAOS_STAT_KPROBE_RANDOM_DELAYS,
Expand Down
Loading
Loading