ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | LICENSE

Commit: 47ed0e4eb83b38dac3216e2c67f5366228f9a4b6
Parent: bb06bbeb3f69a70b1d7d59da62a9dbefd31f0ece
Author: Randy Palamar
Date:   Tue,  2 Jul 2024 14:26:46 -0600

add w32 pipe code

Diffstat:
Mos_win32.c | 40++++++++++++++++++++++++++++++++++++++++
Mutil.h | 46++++++++++++++++++++++++----------------------
2 files changed, 64 insertions(+), 22 deletions(-)

diff --git a/os_win32.c b/os_win32.c @@ -4,6 +4,17 @@ #include <memoryapi.h> #include <sysinfoapi.h> +/* NOTE: copied from wtypes.h; we don't actually use this type but winbase.h needs it defined */ +typedef void *HWND; +#include <winbase.h> + +#define OS_INVALID_FILE (INVALID_HANDLE_VALUE) +typedef HANDLE os_file; +typedef struct { + os_file file; + char *name; +} os_pipe; + typedef FILETIME os_filetime; typedef struct { @@ -74,3 +85,32 @@ os_get_file_stats(char *fname) .timestamp = fileinfo.ftLastWriteTime, }; } + +/* NOTE: win32 doesn't pollute the filesystem so no need to waste the user's time */ +static void +os_close_named_pipe(os_pipe p) +{ +} + +static os_pipe +os_open_named_pipe(char *name) +{ + HANDLE h = CreateNamedPipeA(name, PIPE_ACCESS_INBOUND, PIPE_TYPE_BYTE, 1, + 0, 1 * MEGABYTE, 0, 0); + return (os_pipe){.file = h, .name = name}; +} + +static b32 +os_poll_pipe(os_pipe p) +{ + DWORD bytes_available = 0; + return PeekNamedPipe(p.file, 0, 1 * MEGABYTE, 0, &bytes_available, 0) && bytes_available; +} + +static size +os_read_pipe_data(os_pipe p, void *buf, size len) +{ + DWORD total_read = 0; + ReadFile(p.file, buf, len, &total_read, 0); + return total_read; +} diff --git a/util.h b/util.h @@ -6,13 +6,24 @@ #include <stdint.h> #ifdef _DEBUG -#define ASSERT(c) do { if (!(c)) asm("int3; nop"); } while (0); -#define DEBUG_EXPORT + #define ASSERT(c) do { if (!(c)) asm("int3; nop"); } while (0); + #define DEBUG_EXPORT #else -#define ASSERT(c) -#define DEBUG_EXPORT static + #define ASSERT(c) + #define DEBUG_EXPORT static #endif +#define MEGABYTE (1024ULL * 1024ULL) +#define GIGABYTE (1024ULL * 1024ULL * 1024ULL) + +#define U32_MAX (0xFFFFFFFFUL) + +#define ARRAY_COUNT(a) (sizeof(a) / sizeof(*a)) +#define ABS(x) ((x) < 0 ? (-x) : (x)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define CLAMP(x, a, b) ((x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)) +#define ISPOWEROF2(a) (((a) & ((a) - 1)) == 0) + typedef uint8_t u8; typedef int16_t i16; typedef int32_t i32; @@ -65,16 +76,18 @@ enum program_flags { }; #include "util.c" + + #if defined(__unix__) -#define GL_GLEXT_PROTOTYPES 1 -#include <GL/glcorearb.h> -#include <GL/glext.h> -#include "os_unix.c" + #define GL_GLEXT_PROTOTYPES 1 + #include <GL/glcorearb.h> + #include <GL/glext.h> + #include "os_unix.c" #elif defined(_WIN32) -#include <glad.h> -#include "os_win32.c" + #include <glad.h> + #include "os_win32.c" #else -#error Unsupported Platform! + #error Unsupported Platform! #endif typedef struct { @@ -120,15 +133,4 @@ typedef struct { u32 partial_transfer_count; } BeamformerCtx; -#define MEGABYTE (1024ULL * 1024ULL) -#define GIGABYTE (1024ULL * 1024ULL * 1024ULL) - -#define U32_MAX (0xFFFFFFFFUL) - -#define ARRAY_COUNT(a) (sizeof(a) / sizeof(*a)) -#define ABS(x) ((x) < 0 ? (-x) : (x)) -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#define CLAMP(x, a, b) ((x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)) -#define ISPOWEROF2(a) (((a) & ((a) - 1)) == 0) - #endif /*_UTIL_H_ */