diff options
-rw-r--r-- | kernel/drivers/pit.c | 7 | ||||
-rw-r--r-- | kernel/init/kernel.c | 2 | ||||
-rw-r--r-- | kernel/random.c | 2 | ||||
-rw-r--r-- | kernel/socket.c | 1 | ||||
-rw-r--r-- | kernel/socket.h | 1 |
5 files changed, 6 insertions, 7 deletions
diff --git a/kernel/drivers/pit.c b/kernel/drivers/pit.c index b8a8aac..9161885 100644 --- a/kernel/drivers/pit.c +++ b/kernel/drivers/pit.c @@ -5,7 +5,6 @@ #define PIT_IO_CHANNEL_0 0x40 #define PIT_IO_MODE_COMMAND 0x43 -u64 clock_num_ms_ticks = 0; u32 pit_counter = 0; u32 switch_counter = 0; u16 hertz; @@ -45,14 +44,16 @@ int last_flush = 0; u64 last_tsc = 0; +extern u64 timer_current_uptime; extern int is_switching_tasks; void int_clock(reg_t *regs) { u64 current_tsc = tsc_get(); + timer_current_uptime = tsc_calculate_ms(current_tsc); random_add_entropy_fast((u8 *)¤t_tsc, sizeof(current_tsc)); switch_counter++; - if (clock_num_ms_ticks - last_flush > 50) { + if (timer_current_uptime - last_flush > 50) { tcp_flush_acks(); - last_flush = clock_num_ms_ticks; + last_flush = timer_current_uptime; } if (switch_counter >= hertz) { EOI(0x20); diff --git a/kernel/init/kernel.c b/kernel/init/kernel.c index 4c7ed89..868cfb1 100644 --- a/kernel/init/kernel.c +++ b/kernel/init/kernel.c @@ -82,8 +82,6 @@ void kernel_main(u32 kernel_end, unsigned long magic, unsigned long addr, ata_init(); klog(LOG_SUCCESS, "ATA Initalized"); - timer_start_init(); - tasking_init(); klog(LOG_SUCCESS, "Tasking Initalized"); diff --git a/kernel/random.c b/kernel/random.c index 3ac36f2..4389ee0 100644 --- a/kernel/random.c +++ b/kernel/random.c @@ -132,7 +132,7 @@ void random_add_entropy(u8 *buffer, u64 size) { void random_add_entropy_fast(u8 *buffer, u64 size) { for (u64 i = 0; i < size; i++) { - entropy_fast_state ^= (buffer[i] << (8 * (i % 8))); + entropy_fast_state ^= ((u64)buffer[i] << (8 * (i % 8))); if (0 == i % 8) { xorshift64(); } diff --git a/kernel/socket.c b/kernel/socket.c index e0d99a9..bab80c5 100644 --- a/kernel/socket.c +++ b/kernel/socket.c @@ -596,6 +596,7 @@ int tcp_create_fd(int is_nonblock) { if (!con) { return -ENOMEM; } + memset(con, 0, sizeof(struct TcpConnection)); con->state = TCP_STATE_CLOSED; con->should_send_ack = 0; diff --git a/kernel/socket.h b/kernel/socket.h index e881111..e0cf92f 100644 --- a/kernel/socket.h +++ b/kernel/socket.h @@ -47,7 +47,6 @@ struct TcpConnection { u32 outgoing_ip; u16 outgoing_port; - int unhandled_packet; struct ringbuffer incoming_buffer; struct ringbuffer outgoing_buffer; |