diff options
author | Anton Kling <anton@kling.gg> | 2024-07-04 18:29:17 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-07-04 18:42:47 +0200 |
commit | 7d7f0aa9595bedf50083fb89dae049c1f064ca98 (patch) | |
tree | 9f821cb85e6deaf54b8c5b481325c7d9b231d907 /kernel/timer.c | |
parent | f7752e37ce29b903e15d2579d25d4ebbaad023e6 (diff) |
Random: Improve random seeding.
Now it appears to be sufficiently good at producing a distinct seed at
each boot without using a /etc/seed file. Previously it did not do this.
Of course this is nowhere near cryptographically secure but randomness
does assist with things such as kmalloc.
Diffstat (limited to 'kernel/timer.c')
-rw-r--r-- | kernel/timer.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index d0ef113..2121462 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -3,6 +3,7 @@ #include <fs/devfs.h> #include <interrupts.h> #include <math.h> +#include <random.h> #include <time.h> #include <timer.h> #include <typedefs.h> @@ -14,6 +15,7 @@ u64 start_tsc_time; void timer_start_init(void) { tsc_init(); start_tsc_time = tsc_get(); + random_add_entropy((u8 *)&start_tsc_time, sizeof(start_tsc_time)); enable_interrupts(); cmos_init(); cmos_start_call(1, &has_unix_time, &start_unix_time); @@ -26,6 +28,7 @@ void timer_wait_for_init(void) { ; } +u64 timer_current_uptime = 0; // This gets updated by the PIT handler u64 timer_get_uptime(void) { return tsc_calculate_ms(tsc_get()); } |