diff options
| author | 2025-09-15 03:49:50 +0330 | |
|---|---|---|
| committer | 2025-09-15 03:49:50 +0330 | |
| commit | 5b10e3d451bd538a7f5c0ac432dcc1b85c157a53 (patch) | |
| tree | 69b60e5fe9aad5e36dc0a2f47f67c78c616ddea8 /src/firehose.c | |
| parent | perf opt in set_data_packet (diff) | |
add new opcode + firehose change
Diffstat (limited to 'src/firehose.c')
| -rw-r--r-- | src/firehose.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/firehose.c b/src/firehose.c index 6a4a134..c5d232d 100644 --- a/src/firehose.c +++ b/src/firehose.c @@ -6,7 +6,7 @@ #include <stdio.h> #include <string.h> -#define FIREHOSE_BUFFER_SIZE 1 << 14 +#define FIREHOSE_BUFFER_SIZE 1 << 15 typedef struct { hash packet_hash; @@ -14,10 +14,10 @@ typedef struct { } water_splash; typedef struct { - water_splash entries[ FIREHOSE_BUFFER_SIZE ]; + water_splash* entries; uint16_t head; uint16_t tail; - uint16_t count; + uint32_t count; uint64_t total_packets; pthread_mutex_t mutex; } fire_buffer; @@ -30,8 +30,10 @@ uint16_t firehose_get_count(void); uint64_t firehose_get_total_packets(void); uint16_t firehose_get_packets(uint64_t offset, uint16_t count, water_splash* output_entries); +void* alloc_map(uint64_t size); + void firehose_init(void) { - memset(firehose_buffer.entries, 0, sizeof(firehose_buffer.entries)); + firehose_buffer.entries = alloc_map(sizeof(water_splash) * FIREHOSE_BUFFER_SIZE); firehose_buffer.head = 0; firehose_buffer.tail = 0; firehose_buffer.count = 0; @@ -80,7 +82,6 @@ uint16_t firehose_get_packets(uint64_t offset, uint16_t count, water_splash* out } uint16_t start_index = (firehose_buffer.head + relative_offset) % FIREHOSE_BUFFER_SIZE; - pthread_mutex_lock(&packet_storage_mutex); for (int i = 0; i < count; i++) { if (relative_offset + i >= firehose_buffer.count) { break; } @@ -89,8 +90,7 @@ uint16_t firehose_get_packets(uint64_t offset, uint16_t count, water_splash* out &output_entries[ i ], &firehose_buffer.entries[ current_index ], sizeof(water_splash)); copied_count++; } - pthread_mutex_unlock(&packet_storage_mutex); pthread_mutex_unlock(&firehose_buffer.mutex); return copied_count; -} +}
\ No newline at end of file |
