main_generic.c (1487B)
1 /* See LICENSE for license details. */ 2 #include "beamformer.h" 3 4 #if defined(__unix__) 5 #include "os_unix.c" 6 7 #define OS_DEBUG_LIB_NAME "./beamformer.so" 8 #define OS_DEBUG_LIB_TEMP_NAME "./beamformer_temp.so" 9 10 #define OS_CUDA_LIB_NAME "./external/cuda_toolkit.so" 11 #define OS_CUDA_LIB_TEMP_NAME "./external/cuda_toolkit_temp.so" 12 13 #define OS_PIPE_NAME "/tmp/beamformer_data_fifo" 14 #define OS_SMEM_NAME "/ogl_beamformer_parameters" 15 16 #elif defined(_WIN32) 17 #include "os_win32.c" 18 19 #define OS_DEBUG_LIB_NAME "beamformer.dll" 20 #define OS_DEBUG_LIB_TEMP_NAME "beamformer_temp.dll" 21 22 #define OS_CUDA_LIB_NAME "external\\cuda_toolkit.dll" 23 #define OS_CUDA_LIB_TEMP_NAME "external\\cuda_toolkit_temp.dll" 24 25 #define OS_PIPE_NAME "\\\\.\\pipe\\beamformer_data_fifo" 26 #define OS_SMEM_NAME "Local\\ogl_beamformer_parameters" 27 #else 28 #error Unsupported Platform! 29 #endif 30 31 #include "static.c" 32 33 int 34 main(void) 35 { 36 BeamformerCtx ctx = {0}; 37 Arena temp_memory = os_alloc_arena((Arena){0}, 16 * MEGABYTE); 38 ctx.error_stream = stream_alloc(&temp_memory, 1 * MEGABYTE); 39 40 #define X(name) ctx.platform.name = os_ ## name; 41 PLATFORM_FNS 42 #undef X 43 44 setup_beamformer(&ctx, temp_memory); 45 46 while(!(ctx.flags & SHOULD_EXIT)) { 47 do_program_step(&ctx, temp_memory); 48 } 49 50 /* NOTE: make sure this will get cleaned up after external 51 * programs release their references */ 52 os_remove_shared_memory(OS_SMEM_NAME); 53 54 /* NOTE: garbage code needed for Linux */ 55 os_close_named_pipe(ctx.data_pipe); 56 }