summaryrefslogtreecommitdiff
path: root/kernel/drivers/pit.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-07-04 18:29:17 +0200
committerAnton Kling <anton@kling.gg>2024-07-04 18:42:47 +0200
commit7d7f0aa9595bedf50083fb89dae049c1f064ca98 (patch)
tree9f821cb85e6deaf54b8c5b481325c7d9b231d907 /kernel/drivers/pit.c
parentf7752e37ce29b903e15d2579d25d4ebbaad023e6 (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/drivers/pit.c')
-rw-r--r--kernel/drivers/pit.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/drivers/pit.c b/kernel/drivers/pit.c
index 70dc0f9..b8a8aac 100644
--- a/kernel/drivers/pit.c
+++ b/kernel/drivers/pit.c
@@ -1,5 +1,6 @@
#include "pit.h"
#include <arch/i386/tsc.h>
+#include <random.h>
#define PIT_IO_CHANNEL_0 0x40
#define PIT_IO_MODE_COMMAND 0x43
@@ -46,7 +47,8 @@ u64 last_tsc = 0;
extern int is_switching_tasks;
void int_clock(reg_t *regs) {
-
+ u64 current_tsc = tsc_get();
+ random_add_entropy_fast((u8 *)&current_tsc, sizeof(current_tsc));
switch_counter++;
if (clock_num_ms_ticks - last_flush > 50) {
tcp_flush_acks();