summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/drivers/pit.c7
-rw-r--r--kernel/init/kernel.c2
-rw-r--r--kernel/random.c2
-rw-r--r--kernel/socket.c1
-rw-r--r--kernel/socket.h1
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 *)&current_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;