mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 17:42:03 +02:00
KVM: selftests: Add helper to generate random u64 in range [min,max]
Introduce kvm_random_u64_in_range(state, min, max). This function returns a random u64 in the inclusive range of [min, max] using a struct kvm_random_state. Suggested-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Josh Hilke <jrhilke@google.com> Link: https://patch.msgid.link/20260626213534.3866178-7-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
5506feb242
commit
c772591d27
|
|
@ -134,6 +134,9 @@ static inline u64 kvm_random_u64(struct kvm_random_state *state)
|
|||
return ((u64)kvm_random_u32(state) << 32) | kvm_random_u32(state);
|
||||
}
|
||||
|
||||
u64 kvm_random_u64_in_range(struct kvm_random_state *state, u64 min,
|
||||
u64 max);
|
||||
|
||||
enum vm_mem_backing_src_type {
|
||||
VM_MEM_SRC_ANONYMOUS,
|
||||
VM_MEM_SRC_ANONYMOUS_THP,
|
||||
|
|
|
|||
|
|
@ -42,6 +42,24 @@ u32 kvm_random_u32(struct kvm_random_state *state)
|
|||
return state->seed;
|
||||
}
|
||||
|
||||
/* Returns a random u64 in the inclusive range [min, max] */
|
||||
u64 kvm_random_u64_in_range(struct kvm_random_state *state, u64 min,
|
||||
u64 max)
|
||||
{
|
||||
u64 value;
|
||||
u64 range;
|
||||
|
||||
TEST_ASSERT(min <= max, "PEBKAC, min = 0x%lx, max = 0x%lx", min, max);
|
||||
|
||||
value = kvm_random_u64(state);
|
||||
|
||||
range = max - min;
|
||||
if (range == ULLONG_MAX)
|
||||
return value;
|
||||
|
||||
return min + (value % (range + 1));
|
||||
}
|
||||
|
||||
/*
|
||||
* Parses "[0-9]+[kmgt]?".
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user