ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
buffer.h
Go to the documentation of this file.
1#pragma once
3
5#include <stdbool.h>
6#include <stddef.h>
7#include <stdint.h>
8
25
26#define BUFFER_DEFAULT_ALIGNMENT 64u
27#define BUFFER_PROCESS_LIMIT ((size_t)512 * 1024 * 1024)
28#define BUFFER_CONTROL_RESERVE ((size_t)8 * 1024 * 1024)
29#define BUFFER_DOMAIN_LIMIT (BUFFER_PROCESS_LIMIT - BUFFER_CONTROL_RESERVE)
30
39
55
65void buffer_domain_log_stats(buffer_domain_t *domain, const char *name);
66size_t buffer_process_reserved(void);
67
73
75asciichat_error_t buffer_acquire(buffer_domain_t *domain, size_t size, size_t alignment, void **out);
77void *buffer_alloc(buffer_domain_t *domain, size_t size);
79size_t buffer_capacity(const void *data);
80size_t buffer_size(const void *data);
82asciichat_error_t buffer_set_size(void *data, size_t size);
84const void *buffer_share(const void *data);
87bool buffer_is_unique(const void *data);
89void buffer_unref(const void *data);
91#define buffer_release(data) \
92 do { \
93 __typeof__(&(data)) buffer_slot__ = &(data); \
94 buffer_unref(*buffer_slot__); \
95 *buffer_slot__ = NULL; \
96 } while (0)
97
102typedef struct {
103 void *data;
104 size_t length;
106
109
111void buffer_system_init(void);
112void buffer_system_cleanup(void);
Synchronized per-thread pending error stacks and value snapshots. SET_ERRNO pushes,...
size_t buffer_capacity(const void *data)
Definition buffer.c:280
bool buffer_is_unique(const void *data)
Definition buffer.c:317
void buffer_domain_log_stats(buffer_domain_t *domain, const char *name)
Definition buffer.c:392
asciichat_error_t buffer_workspace_reserve(buffer_workspace_t *workspace, buffer_domain_t *domain, size_t capacity)
Definition buffer.c:356
void buffer_domain_stats(buffer_domain_t *domain, buffer_stats_t *out)
Definition buffer.c:381
void buffer_system_cleanup(void)
Definition buffer.c:428
asciichat_error_t buffer_set_size(void *data, size_t size)
Definition buffer.c:287
void * buffer_alloc(buffer_domain_t *domain, size_t size)
Definition buffer.c:274
struct buffer_domain buffer_domain_t
Definition buffer.h:24
void buffer_budget_release(buffer_budget_t *budget)
Definition buffer.c:88
buffer_domain_t * buffer_default_domain(void)
Definition buffer.c:423
size_t buffer_process_reserved(void)
Definition buffer.c:75
void buffer_domain_trim(buffer_domain_t *domain)
Definition buffer.c:170
void buffer_unref(const void *data)
Definition buffer.c:321
void buffer_workspace_destroy(buffer_workspace_t *workspace)
Definition buffer.c:374
void buffer_domain_close(buffer_domain_t **domain)
Definition buffer.c:156
buffer_domain_t * buffer_control_domain(void)
Definition buffer.c:436
asciichat_error_t buffer_domain_create(const buffer_domain_config_t *config, buffer_domain_t **out)
Definition buffer.c:125
void buffer_system_init(void)
Definition buffer.c:400
const void * buffer_share(const void *data)
Definition buffer.c:304
asciichat_error_t buffer_budget_reserve(buffer_budget_t *budget, size_t bytes)
Definition buffer.c:79
asciichat_error_t buffer_acquire(buffer_domain_t *domain, size_t size, size_t alignment, void **out)
Definition buffer.c:178
int buffer_size
Size of circular buffer.
Definition grep.c:68
unsigned long long uint64_t
Definition common.h:63
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
static bool size_t gotel_query_t * out
Definition queries.h:8
Owns the temporary storage used by buffer budget. The data pointers and size or cursor fields describ...
Definition budget.h:8
The useful part of buffer header is in next, domain, allocation, data: together they describe what is...
Definition buffer.c:52
size_t live_bytes
Definition buffer.h:42
uint64_t hits
Definition buffer.h:47
size_t outstanding
Definition buffer.h:46
size_t reserved_bytes
Definition buffer.h:41
size_t peak_bytes
Definition buffer.h:45
size_t requested_bytes
Definition buffer.h:43
size_t cached_bytes
Definition buffer.h:44
uint64_t failures
Definition buffer.h:49
uint64_t allocations
Definition buffer.h:48
Owns the temporary storage used by buffer workspace. The data pointers and size or cursor fields desc...
Definition buffer.h:102