mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-14 12:59:41 -07:00
symbol server abstraction layer; http layer; fix to 'prefer_disasm' rule when no disassembly tabs are open; small fixes / cleanup
This commit is contained in:
1 parent
1ef94cb759
commit
5c664261a3
38 files changed
+1347
-81
No files matched your search
@@ -0,0 +1,56 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef BASE_RING_H
|
||||
#define BASE_RING_H
|
||||
|
||||
typedef struct Ring Ring;
|
||||
struct Ring
|
||||
{
|
||||
U8 *base;
|
||||
U64 size;
|
||||
U64 write_pos;
|
||||
U64 read_pos;
|
||||
};
|
||||
|
||||
typedef struct GuardedRing GuardedRing;
|
||||
struct GuardedRing
|
||||
{
|
||||
Ring *ring;
|
||||
Mutex mutex;
|
||||
CondVar cv;
|
||||
};
|
||||
|
||||
typedef struct RingGuard RingGuard;
|
||||
struct RingGuard
|
||||
{
|
||||
GuardedRing *r;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Ring Functions
|
||||
|
||||
internal Ring *make_ring(Arena *arena, U64 size);
|
||||
internal B32 ring_try_write(Ring *ring, U64 size, void *ptr);
|
||||
internal B32 ring_try_read(Ring *ring, U64 size, void *ptr);
|
||||
#define ring_try_write_struct(ring, ptr) ring_try_write((ring), sizeof(*(ptr)), (ptr))
|
||||
#define ring_try_read_struct(ring, ptr) ring_try_read((ring), sizeof(*(ptr)), (ptr))
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Guarded Ring Functions
|
||||
|
||||
internal GuardedRing *guarded_ring_alloc(Arena *arena, U64 size);
|
||||
internal void guarded_ring_release(GuardedRing *ring);
|
||||
internal RingGuard guarded_ring_open(GuardedRing *ring);
|
||||
internal void guarded_ring_close(RingGuard *guard);
|
||||
internal B32 guarded_ring_try_write(RingGuard *guard, U64 size, void *ptr);
|
||||
internal B32 guarded_ring_try_read(RingGuard *guard, U64 size, void *ptr);
|
||||
#define guarded_ring_try_write_struct(ring, ptr) guarded_ring_try_write((ring), sizeof(*(ptr)), (ptr))
|
||||
#define guarded_ring_try_read_struct(ring, ptr) guarded_ring_try_read((ring), sizeof(*(ptr)), (ptr))
|
||||
internal B32 guarded_ring_write_or_wait(RingGuard *guard, U64 size, void *ptr, U64 endt_us);
|
||||
internal B32 guarded_ring_read_or_wait(RingGuard *guard, U64 size, void *ptr, U64 endt_us);
|
||||
#define guarded_ring_write_struct_or_wait(ring, ptr, endt_us) guarded_ring_write_or_wait((ring), sizeof(*(ptr)), (ptr), (endt_us))
|
||||
#define guarded_ring_read_struct_or_wait(ring, ptr, endt_us) guarded_ring_read_or_wait((ring), sizeof(*(ptr)), (ptr), (endt_us))
|
||||
#define guarded_ring_write_string_or_wait(ring, string, endt_us) guarded_ring_write_or_wait((ring), (string).size, (string).str, (endt_us))
|
||||
|
||||
#endif // BASE_RING_H
|
||||
Reference in new issue
Block a user