xref: /DragonOS/kernel/src/arch/riscv64/rand.rs (revision 2b7818e80e00fcfe4d03533f587cc125ea5e4bec)

rand() -> usize14fda81ceSLoGin pub fn rand() -> usize {
2*2b7818e8SLoGin     static mut SEED: u64 = 0xdead_beef_cafe_babe;
3*2b7818e8SLoGin     let mut buf = [0u8; size_of::<usize>()];
4*2b7818e8SLoGin     for x in buf.iter_mut() {
5*2b7818e8SLoGin         unsafe {
6*2b7818e8SLoGin             // from musl
7*2b7818e8SLoGin             SEED = SEED.wrapping_mul(0x5851_f42d_4c95_7f2d);
8*2b7818e8SLoGin             *x = (SEED >> 33) as u8;
9*2b7818e8SLoGin         }
10*2b7818e8SLoGin     }
11*2b7818e8SLoGin     let x: usize = unsafe { core::mem::transmute(buf) };
12*2b7818e8SLoGin     return x;
134fda81ceSLoGin }
14