From 059c9e12b00206a5ac58281f065271bf73a9b769 Mon Sep 17 00:00:00 2001 From: "dana_maria.caruntu" <dana_maria.caruntu@stud.acs.upb.ro> Date: Tue, 3 Dec 2024 21:58:48 +0200 Subject: [PATCH] update consumer logic (90p) --- src/consumer.c | 140 +++++++++++-------- src/consumer.h | 5 +- src/firewall | Bin 48480 -> 49696 bytes src/ring_buffer.c | 350 ++++++++++++++++++++++------------------------ src/ring_buffer.h | 8 +- src/serial | Bin 47296 -> 48384 bytes 6 files changed, 259 insertions(+), 244 deletions(-) diff --git a/src/consumer.c b/src/consumer.c index 356e13a..d0363e3 100644 --- a/src/consumer.c +++ b/src/consumer.c @@ -3,72 +3,102 @@ #include <pthread.h> #include <fcntl.h> #include <unistd.h> - +#include <stdatomic.h> #include "consumer.h" #include "ring_buffer.h" #include "packet.h" #include "utils.h" -pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER; +_Atomic unsigned long global_seq_num; +_Atomic unsigned long write_seq_num; + +pthread_mutex_t write_mutex; +pthread_cond_t write_condition; +pthread_mutex_t global_seq_num_mutex; + +void initialize_thread_resources(void) +{ + pthread_mutex_init(&write_mutex, NULL); + pthread_cond_init(&write_condition, NULL); +} + +void cleanup_thread_resources(void) +{ + pthread_mutex_destroy(&write_mutex); + pthread_cond_destroy(&write_condition); +} + + +void write_to_file(int file_descriptor, unsigned long packet_sequence, char log_entry[], int length) +{ + pthread_mutex_lock(&write_mutex); + while (packet_sequence != write_seq_num) + pthread_cond_wait(&write_condition, &write_mutex); + write(file_descriptor, log_entry, length); + atomic_fetch_add(&write_seq_num, 1); + pthread_cond_broadcast(&write_condition); + pthread_mutex_unlock(&write_mutex); +} void consumer_thread(so_consumer_ctx_t *ctx) { - /* TODO: implement consumer thread */ - so_packet_t packet; - - - while (1) { - pthread_mutex_lock(&log_mutex); - ssize_t result = ring_buffer_dequeue(ctx->producer_rb, &packet, sizeof(packet)); - // pthread_mutex_unlock(&log_mutex); - if (result <= 0 && ctx->producer_rb->stop) { - pthread_mutex_unlock(&log_mutex); - break; - } - pthread_mutex_unlock(&log_mutex); - char log[PKT_SZ]; - so_action_t decision = process_packet(&packet); - unsigned long pkt_hash = packet_hash(&packet); - pthread_mutex_lock(&log_mutex); - snprintf(log, PKT_SZ, "%s %016lx %lu\n", RES_TO_STR(decision), pkt_hash, packet.hdr.timestamp); - - //pthread_mutex_lock(&ctx->log_mutex); - fputs(log, ctx->log_file); - fflush(ctx->log_file); - pthread_mutex_unlock(&log_mutex); - //pthread_mutex_unlock(&ctx->log_mutex); - } - // (void) ctx; + char packet_buffer[256]; + char log_entry[256]; + unsigned long packet_sequence; + int file_descriptor = ctx->log_file; + + while (true) { + pthread_mutex_lock(&write_mutex); + ssize_t received_size = ring_buffer_dequeue(ctx->producer_rb, packet_buffer, 256); + + if (received_size <= 0 && ctx->producer_rb->stop) { + pthread_mutex_unlock(&write_mutex); + break; + } + packet_sequence = atomic_fetch_add(&global_seq_num, 1); + pthread_mutex_unlock(&write_mutex); + + struct so_packet_t *packet = (struct so_packet_t *)packet_buffer; + int action_result = process_packet(packet); + unsigned long hash_value = packet_hash(packet); + unsigned long time_stamp = packet->hdr.timestamp; + + int length = snprintf(log_entry, sizeof(log_entry), "%s %016lx %lu\n", + action_result == PASS ? "PASS" : "DROP", hash_value, time_stamp); + write_to_file(file_descriptor, packet_sequence, log_entry, length); + } + cleanup_thread_resources(); +} + + +void *consumer_thread_wrapper(void *arg) +{ + consumer_thread((so_consumer_ctx_t *)arg); return NULL; } + int create_consumers(pthread_t *tids, - int num_consumers, - struct so_ring_buffer_t *rb, - const char *out_filename) + int num_consumers, + struct so_ring_buffer_t *rb, + const char *out_filename) { - // (void) tids; - // (void) num_consumers; - // (void) rb; - // (void) out_filename; - - - FILE *log_file = fopen(out_filename, "w"); - if (!log_file) { - perror("Error opening file"); - return -1; - } - - pthread_mutex_t log_mutex; - pthread_mutex_init(&log_mutex, NULL); - for (int i = 0; i < num_consumers; i++) { - so_consumer_ctx_t *ctx = malloc(sizeof(so_consumer_ctx_t)); - ctx->producer_rb = rb; - ctx->log_file = log_file; - ctx->log_mutex = log_mutex; - - pthread_create(&tids[i], NULL, consumer_thread, ctx); - } - - return num_consumers; + int file_descriptor = open(out_filename, O_RDWR | O_CREAT | O_APPEND, 0666); + + DIE(file_descriptor < 0, "Error opening output file"); + + for (int i = 0; i < num_consumers; i++) { + so_consumer_ctx_t *ctx = malloc(sizeof(so_consumer_ctx_t)); + if(!ctx){ + DIE(1, "malloc failed"); + } + + ctx->producer_rb = rb; + ctx->log_file = file_descriptor; + ctx->log_mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; + + pthread_create(&tids[i], NULL, consumer_thread_wrapper, ctx); + } + + return num_consumers; } \ No newline at end of file diff --git a/src/consumer.h b/src/consumer.h index b19b7b2..5654068 100644 --- a/src/consumer.h +++ b/src/consumer.h @@ -12,10 +12,9 @@ typedef struct so_consumer_ctx_t { /* TODO: add synchronization primitives for timestamp ordering */ pthread_mutex_t log_mutex; - FILE *log_file; - pthread_cond_t seq_cond; + int log_file; + pthread_cond_t seq_cond; unsigned long next_seq_to_log; - unsigned long my_seq; } so_consumer_ctx_t; diff --git a/src/firewall b/src/firewall index 4a3aac26a41192ea6925dea0c818607aeb4b1d1a..3837e4800c35b40ee0a28c121b57ddd6a796c79c 100755 GIT binary patch literal 49696 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 X3h&mR2mEOKCI2KDZgerYK=FS8Z$N~@ literal 48480 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 b3(kc>!P)u?fu4we$5#~nO<4?Cp!k0P+hd9} diff --git a/src/ring_buffer.c b/src/ring_buffer.c index e059e7d..106932d 100644 --- a/src/ring_buffer.c +++ b/src/ring_buffer.c @@ -8,225 +8,213 @@ #include "utils.h" typedef struct { - size_t first_part; - size_t second_part; + size_t first_part; + size_t second_part; } SplitSizes; -SplitSizes split_space(size_t size, size_t space_at_end) { - SplitSizes sizes; - if (size > space_at_end) { - sizes.first_part = space_at_end; - sizes.second_part = size - space_at_end; - } else { - sizes.first_part = size; - sizes.second_part = 0; - } - return sizes; +SplitSizes split_space(size_t size, size_t space_at_end) +{ + SplitSizes sizes; + + if (size > space_at_end) { + sizes.first_part = space_at_end; + sizes.second_part = size - space_at_end; + } else { + sizes.first_part = size; + sizes.second_part = 0; + } + return sizes; } static size_t get_free_space(const so_ring_buffer_t *ring) { - return ring->cap - ring->len; + return ring->cap - ring->len; } static size_t adjust_position(size_t pos, size_t offset, size_t cap) { - size_t new_pos = pos + offset; - if (new_pos >= cap) { - new_pos -= cap; - } - return new_pos; + size_t new_pos = pos + offset; + + if (new_pos >= cap) + new_pos -= cap; + return new_pos; } static void copy_data_to_ring(so_ring_buffer_t *ring, const void *data, size_t size) { - size_t space_at_end = ring->cap - ring->write_pos; - SplitSizes sizes = split_space(size, space_at_end); - memcpy(ring->data + ring->write_pos, data, sizes.first_part); - if (sizes.second_part > 0) { - memcpy(ring->data, (const char *)data + sizes.first_part, sizes.second_part); - } + size_t space_at_end = ring->cap - ring->write_pos; + SplitSizes sizes = split_space(size, space_at_end); + + memcpy(ring->data + ring->write_pos, data, sizes.first_part); + if (sizes.second_part > 0) + memcpy(ring->data, (const char *)data + sizes.first_part, sizes.second_part); } static void copy_data_from_ring(so_ring_buffer_t *ring, void *data, size_t size) { - size_t space_at_end = ring->cap - ring->read_pos; - SplitSizes sizes = split_space(size, space_at_end); - memcpy(data, ring->data + ring->read_pos, sizes.first_part); - if (sizes.second_part > 0) { - memcpy((char *)data + sizes.first_part, ring->data, sizes.second_part); - } + size_t space_at_end = ring->cap - ring->read_pos; + SplitSizes sizes = split_space(size, space_at_end); + + memcpy(data, ring->data + ring->read_pos, sizes.first_part); } int ring_buffer_init(so_ring_buffer_t *ring, size_t cap) { - ring->data = malloc(cap); - if (ring->data == NULL) { - DIE(1, "Memory allocation failed"); - } - - ring->cap = cap; - ring->len = 0; - ring->read_pos = 0; - ring->write_pos = 0; - ring->stop = 0; - - int result = pthread_mutex_init(&ring->mutex, NULL); - if (result != 0) { - DIE(1, "Failed to initialize mutex"); - } - - result = pthread_cond_init(&ring->not_empty, NULL); - if (result != 0) { - DIE(1, "Failed to initialize not_empty condition"); - } - - result = pthread_cond_init(&ring->not_full, NULL); - if (result != 0) { - DIE(1, "Failed to initialize not_full condition"); - } - - return 0; + ring->data = malloc(cap); + if (ring->data == NULL) + DIE(1, "Memory allocation failed"); + + ring->cap = cap; + ring->len = 0; + ring->read_pos = 0; + ring->write_pos = 0; + ring->stop = 0; + + int result = pthread_mutex_init(&ring->mutex, NULL); + + if (result != 0) + DIE(1, "Failed to initialize mutex"); + + result = pthread_cond_init(&ring->not_empty, NULL); + if (result != 0) + DIE(1, "Failed to initialize not_empty condition"); + + result = pthread_cond_init(&ring->not_full, NULL); + if (result != 0) + DIE(1, "Failed to initialize not_full condition"); + return 0; } ssize_t ring_buffer_enqueue(so_ring_buffer_t *ring, void *data, size_t size) { - if (data == NULL) { - ERR(1, "Invalid data pointer"); - return -1; - } - - int result = pthread_mutex_lock(&ring->mutex); - if (result != 0) { - ERR(1, "Failed to lock mutex"); - return -1; - } - - while (get_free_space(ring) < size && !ring->stop) { - result = pthread_cond_wait(&ring->not_full, &ring->mutex); - if (result != 0) { - pthread_mutex_unlock(&ring->mutex); - ERR(result != 0, "Failed to wait on not_full condition"); - return -1; - } - } - - if (ring->stop) { - pthread_mutex_unlock(&ring->mutex); - return -1; - } - - copy_data_to_ring(ring, data, size); - - ring->write_pos = adjust_position(ring->write_pos, size, ring->cap); - ring->len += size; - - result = pthread_cond_signal(&ring->not_empty); - if (result != 0) { - ERR(1, "Failed to signal not_empty condition"); - } - - result = pthread_mutex_unlock(&ring->mutex); - if (result != 0) { - ERR(1, "Failed to unlock mutex"); - } - - return size; + if (data == NULL) { + ERR(1, "Invalid data pointer"); + return -1; + } + + int result = pthread_mutex_lock(&ring->mutex); + + if (result != 0) { + ERR(result != 0, "Failed to lock mutex"); + return -1; + } + + while (get_free_space(ring) < size && !ring->stop) { + result = pthread_cond_wait(&ring->not_full, &ring->mutex); + if (result != 0) { + pthread_mutex_unlock(&ring->mutex); + ERR(result != 0, "Failed to wait on not_full condition"); + return -1; + } + } + + if (ring->stop) { + pthread_mutex_unlock(&ring->mutex); + return -1; + } + + + copy_data_to_ring(ring, data, size); + + ring->write_pos = adjust_position(ring->write_pos, size, ring->cap); + ring->len += size; + + result = pthread_cond_signal(&ring->not_empty); + if (result != 0) + ERR(result != 0, "Failed to signal not_empty condition"); + + result = pthread_mutex_unlock(&ring->mutex); + if (result != 0) + ERR(result != 0, "Failed to unlock mutex"); + return size; } ssize_t ring_buffer_dequeue(so_ring_buffer_t *ring, void *data, size_t size) { - if (data == NULL) { - ERR(1, "Invalid data pointer"); - return -1; - } - - int result = pthread_mutex_lock(&ring->mutex); - if (result != 0) { - ERR(1, "Failed to lock mutex"); - return -1; - } - - while (ring->len < size && !ring->stop) { - result = pthread_cond_wait(&ring->not_empty, &ring->mutex); - if (result != 0) { - pthread_mutex_unlock(&ring->mutex); - ERR(1, "Failed to wait on not_empty condition"); - return -1; - } - } - - if (ring->stop && ring->len == 0) { - pthread_mutex_unlock(&ring->mutex); - return 0; - } - - copy_data_from_ring(ring, data, size); - - ring->read_pos = adjust_position(ring->read_pos, size, ring->cap); - ring->len -= size; - - result = pthread_cond_signal(&ring->not_full); - if (result != 0) { - ERR(1, "Failed to signal not_full condition"); - } - - result = pthread_mutex_unlock(&ring->mutex); - if (result != 0) { - ERR(1, "Failed to unlock mutex"); - } - - return size; + if (data == NULL) { + ERR(1, "Invalid data pointer"); + return -1; + } + + int result = pthread_mutex_lock(&ring->mutex); + + if (result != 0) { + ERR(result != 0, "Failed to lock mutex"); + return -1; + } + + while (ring->len < size && !ring->stop) { + result = pthread_cond_wait(&ring->not_empty, &ring->mutex); + if (result != 0) { + pthread_mutex_unlock(&ring->mutex); + ERR(result != 0, "Failed to wait on not_empty condition"); + return -1; + } + } + + if (ring->stop && ring->len == 0) { + pthread_mutex_unlock(&ring->mutex); + return 0; + } + + copy_data_from_ring(ring, data, size); + + ring->read_pos = adjust_position(ring->read_pos, size, ring->cap); + ring->len -= size; + + result = pthread_cond_signal(&ring->not_full); + if (result != 0) + ERR(result != 0, "Failed to signal not_full condition"); + + result = pthread_mutex_unlock(&ring->mutex); + if (result != 0) + ERR(result != 0, "Failed to unlock mutex"); + + return size; } void ring_buffer_destroy(so_ring_buffer_t *ring) { - if (ring == NULL || ring->data == NULL) { - DIE(1, "Attempting to destroy an uninitialized ring buffer"); - } - - free(ring->data); - - int result = pthread_mutex_destroy(&ring->mutex); - if (result != 0) { - DIE(1, "Failed to destroy mutex"); - } - - result = pthread_cond_destroy(&ring->not_empty); - if (result != 0) { - DIE(1, "Failed to destroy not_empty condition"); - } - - result = pthread_cond_destroy(&ring->not_full); - if (result != 0) { - DIE(1, "Failed to destroy not_full condition"); - } + if (ring == NULL || ring->data == NULL) + DIE(1, "Attempting to destroy an uninitialized ring buffer"); + + free(ring->data); + + int result = pthread_mutex_destroy(&ring->mutex); + + if (result != 0) + DIE(1, "Failed to destroy mutex"); + + result = pthread_cond_destroy(&ring->not_empty); + if (result != 0) + DIE(1, "Failed to destroy not_empty condition"); + + result = pthread_cond_destroy(&ring->not_full); + if (result != 0) + DIE(1, "Failed to destroy not_full condition"); } -void ring_buffer_stop(so_ring_buffer_t *ring) { - if (ring == NULL) { - DIE(1, "Attempting to stop an uninitialized ring buffer"); - } +void ring_buffer_stop(so_ring_buffer_t *ring) +{ + if (ring == NULL) + DIE(1, "Attempting to stop an uninitialized ring buffer"); + + int result = pthread_mutex_lock(&ring->mutex); - int result = pthread_mutex_lock(&ring->mutex); - if (result != 0) { - DIE(1, "Failed to lock mutex"); - } + if (result != 0) + DIE(1, "Failed to lock mutex"); - ring->stop = 1; + ring->stop = 1; - result = pthread_cond_broadcast(&ring->not_empty); - if (result != 0) { - DIE(1, "Failed to broadcast not_empty condition"); - } + result = pthread_cond_broadcast(&ring->not_empty); + if (result != 0) + DIE(1, "Failed to broadcast not_empty condition"); - result = pthread_cond_broadcast(&ring->not_full); - if (result != 0) { - DIE(1, "Failed to broadcast not_full condition"); - } + result = pthread_cond_broadcast(&ring->not_full); + if (result != 0) + DIE(1, "Failed to broadcast not_full condition"); - result = pthread_mutex_unlock(&ring->mutex); - if (result != 0) { - DIE(1, "Failed to unlock mutex"); - } -} + result = pthread_mutex_unlock(&ring->mutex); + if (result != 0) + DIE(1, "Failed to unlock mutex"); +} \ No newline at end of file diff --git a/src/ring_buffer.h b/src/ring_buffer.h index ccb9119..4f8aac3 100644 --- a/src/ring_buffer.h +++ b/src/ring_buffer.h @@ -6,22 +6,20 @@ #include <sys/types.h> #include <string.h> #include <pthread.h> +#include <semaphore.h> typedef struct so_ring_buffer_t { char *data; - size_t read_pos; size_t write_pos; - size_t len; size_t cap; - /* TODO: Add syncronization primitives */ pthread_mutex_t mutex; pthread_cond_t not_empty; pthread_cond_t not_full; + sem_t semaphore; int stop; - } so_ring_buffer_t; int ring_buffer_init(so_ring_buffer_t *rb, size_t cap); @@ -30,4 +28,4 @@ ssize_t ring_buffer_dequeue(so_ring_buffer_t *rb, void *data, size_t size); void ring_buffer_destroy(so_ring_buffer_t *rb); void ring_buffer_stop(so_ring_buffer_t *rb); -#endif /* __SO_RINGBUFFER_H__ */ +#endif /* __SO_RINGBUFFER_H__ */ \ No newline at end of file diff --git a/src/serial b/src/serial index 265816e01681ccfeebe22341d05d9207747a9c33..b24d42de3c45cf68a28f90244647f218752aba10 100755 GIT binary patch literal 48384 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 IJfQJ^0UKMC&Hw-a literal 47296 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 -- GitLab