X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=src%2Fvg%2Fvg_platform.h;h=c81d3474600e048f2117c73c406471ef0ba678ba;hb=3dd767bb10e6fee9cbffeb185d1a9685810c17b5;hp=e5deae28a1a39626b7c1d0eae8ebe64103b9d826;hpb=367883958336d1c04c8a304af6119b21f0f2f15a;p=vg.git diff --git a/src/vg/vg_platform.h b/src/vg/vg_platform.h index e5deae2..c81d347 100644 --- a/src/vg/vg_platform.h +++ b/src/vg/vg_platform.h @@ -1,7 +1,7 @@ #ifndef VG_PLATFORM_H #define VG_PLATFORM_H -#include "vg.h" +//#include "vg.h" #include "vg_stdint.h" /* Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved */ @@ -29,6 +29,10 @@ struct vg_achievement const char *name; }; +#ifndef VG_STATIC +#define VG_STATIC static +#endif + #define vg_static_assert _Static_assert #define vg_list_size( A ) (sizeof(A)/sizeof(A[0])) #define VG_MUST_USE_RESULT __attribute__((warn_unused_result)) @@ -53,7 +57,7 @@ struct vg_achievement typedef u64 vg_timespec; #else - #include + #include #include #define VG_DEPRECATED __attribute__((deprecated)) @@ -65,41 +69,14 @@ struct vg_achievement #endif -#include - -static void vg_fatal_exit_loop( const char *error ); -static void *vg_alloc( size_t size ) -{ - void *ptr = malloc( size ); - - if( !ptr ) - vg_fatal_exit_loop( "Out of memory" ); - - return ptr; -} - -static void *vg_realloc( void *orig, size_t size ) -{ - void *ptr = realloc( orig, size ); - - if( !ptr ) - vg_fatal_exit_loop( "Out of memory" ); - - return ptr; -} - -/* seems to be a GCC bug when inlining this, its low priority anyway */ -__attribute__ ((noinline)) -static void vg_free( void *ptr ) -{ - free( ptr ); -} - -static void vg_required( void *ptr, const char *path ) +VG_STATIC void vg_strncpy( const char *src, char *dst, u32 len ) { - if( !ptr ) + for( u32 i=0; i #include @@ -124,24 +103,24 @@ void free( void *ptr ); #include #include -static int vg_thread_run( void *pfunc, void *data ); -static void vg_thread_exit(void); -static void vg_set_thread_name( const char *name ); -static int vg_semaphore_init( vg_semaphore *sem, u32 value ); -static int vg_semaphore_trywait( vg_semaphore *sem ); -static int vg_semaphore_wait( vg_semaphore *sem ); -static int vg_semaphore_post( vg_semaphore *sem ); -static void vg_semaphore_free( vg_semaphore *sem ); -static int vg_mutex_init( vg_mutex *mutex ); -static int vg_mutex_lock( vg_mutex *mutex ); -static int vg_mutex_unlock( vg_mutex *mutex ); -static void vg_mutex_free( vg_mutex *mutex ); -static void vg_sleep_ms( long msec ); -static double vg_time_diff( vg_timespec start, vg_timespec end ); +VG_STATIC int vg_thread_run( void *pfunc, void *data ); +VG_STATIC void vg_thread_exit(void); +VG_STATIC void vg_set_thread_name( const char *name ); +VG_STATIC int vg_semaphore_init( vg_semaphore *sem, u32 value ); +VG_STATIC int vg_semaphore_trywait( vg_semaphore *sem ); +VG_STATIC int vg_semaphore_wait( vg_semaphore *sem ); +VG_STATIC int vg_semaphore_post( vg_semaphore *sem ); +VG_STATIC void vg_semaphore_free( vg_semaphore *sem ); +VG_STATIC int vg_mutex_init( vg_mutex *mutex ); +VG_STATIC int vg_mutex_lock( vg_mutex *mutex ); +VG_STATIC int vg_mutex_unlock( vg_mutex *mutex ); +VG_STATIC void vg_mutex_free( vg_mutex *mutex ); +VG_STATIC void vg_sleep_ms( long msec ); +VG_STATIC double vg_time_diff( vg_timespec start, vg_timespec end ); #ifdef _WIN32_NO -static int vg_thread_run( void *pfunc, void *data ) +VG_STATIC int vg_thread_run( void *pfunc, void *data ) { HANDLE hThread = CreateThread ( @@ -168,31 +147,31 @@ static int vg_thread_run( void *pfunc, void *data ) } } -static void vg_thread_exit(void) +VG_STATIC void vg_thread_exit(void) { ExitThread(0); } -static void vg_set_thread_name( const char *name ) +VG_STATIC void vg_set_thread_name( const char *name ) { /* I believe this is a meaningless concept in windows */ } -static int vg_semaphore_init( vg_semaphore *sem, u32 value ); -static int vg_semaphore_trywait( vg_semaphore *sem ); -static int vg_semaphore_wait( vg_semaphore *sem ); -static int vg_semaphore_post( vg_semaphore *sem ); -static void vg_semaphore_free( vg_semaphore *sem ); -static int vg_mutex_init( vg_mutex *mutex ); -static int vg_mutex_lock( vg_mutex *mutex ); -static int vg_mutex_unlock( vg_mutex *mutex ); -static void vg_mutex_free( vg_mutex *mutex ); -static void vg_sleep_ms( long msec ); -static double vg_time_diff( vg_timespec start, vg_timespec end ); +VG_STATIC int vg_semaphore_init( vg_semaphore *sem, u32 value ); +VG_STATIC int vg_semaphore_trywait( vg_semaphore *sem ); +VG_STATIC int vg_semaphore_wait( vg_semaphore *sem ); +VG_STATIC int vg_semaphore_post( vg_semaphore *sem ); +VG_STATIC void vg_semaphore_free( vg_semaphore *sem ); +VG_STATIC int vg_mutex_init( vg_mutex *mutex ); +VG_STATIC int vg_mutex_lock( vg_mutex *mutex ); +VG_STATIC int vg_mutex_unlock( vg_mutex *mutex ); +VG_STATIC void vg_mutex_free( vg_mutex *mutex ); +VG_STATIC void vg_sleep_ms( long msec ); +VG_STATIC double vg_time_diff( vg_timespec start, vg_timespec end ); #else -static int vg_thread_run( void *pfunc, void *data ) +VG_STATIC int vg_thread_run( void *pfunc, void *data ) { pthread_t hThread; if( pthread_create( &hThread, NULL, pfunc, data ) ) @@ -207,12 +186,12 @@ static int vg_thread_run( void *pfunc, void *data ) } -static void vg_thread_exit(void) +VG_STATIC void vg_thread_exit(void) { pthread_exit(NULL); } -static void vg_set_thread_name( const char *name ) +VG_STATIC void vg_set_thread_name( const char *name ) { /* not defined but links?? */ #if 0 @@ -220,38 +199,38 @@ static void vg_set_thread_name( const char *name ) #endif } -static int vg_semaphore_init( vg_semaphore *sem, u32 value ) +VG_STATIC int vg_semaphore_init( vg_semaphore *sem, u32 value ) { return !sem_init( sem, 0, value ); } -static int vg_semaphore_trywait( vg_semaphore *sem ) +VG_STATIC int vg_semaphore_trywait( vg_semaphore *sem ) { return !sem_trywait( sem ); } -static int vg_semaphore_wait( vg_semaphore *sem ) +VG_STATIC int vg_semaphore_wait( vg_semaphore *sem ) { return !sem_wait( sem ); } -static int vg_semaphore_post( vg_semaphore *sem ) +VG_STATIC int vg_semaphore_post( vg_semaphore *sem ) { return !sem_post( sem ); } -static void vg_semaphore_free( vg_semaphore *sem ) +VG_STATIC void vg_semaphore_free( vg_semaphore *sem ) { sem_destroy( sem ); } -static int vg_mutex_init( vg_mutex *mutex ) +VG_STATIC int vg_mutex_init( vg_mutex *mutex ) { memset( mutex, 0, sizeof(vg_mutex) ); return 1; } -static int vg_mutex_lock( vg_mutex *mutex ) +VG_STATIC int vg_mutex_lock( vg_mutex *mutex ) { if( !pthread_mutex_lock( mutex ) ) return 1; @@ -259,7 +238,7 @@ static int vg_mutex_lock( vg_mutex *mutex ) return 0; } -static int vg_mutex_unlock( vg_mutex *mutex ) +VG_STATIC int vg_mutex_unlock( vg_mutex *mutex ) { if( !pthread_mutex_unlock( mutex ) ) return 1; @@ -267,12 +246,12 @@ static int vg_mutex_unlock( vg_mutex *mutex ) return 0; } -static void vg_mutex_free( vg_mutex *mutex ) +VG_STATIC void vg_mutex_free( vg_mutex *mutex ) { } -static void vg_sleep_ms( long msec ) +VG_STATIC void vg_sleep_ms( long msec ) { struct timespec ts; @@ -282,7 +261,7 @@ static void vg_sleep_ms( long msec ) } /* diff two timespecs in MS */ -static double vg_time_diff( struct timespec start, struct timespec end ) +VG_STATIC double vg_time_diff( struct timespec start, struct timespec end ) { double elapsed = 1000.0*end.tv_sec + 1e-6*end.tv_nsec - (1000.0*start.tv_sec + 1e-6*start.tv_nsec); @@ -295,22 +274,4 @@ static double vg_time_diff( struct timespec start, struct timespec end ) #define VG_MIN( A, B ) ((A)<(B)?(A):(B)) #define VG_MAX( A, B ) ((A)>(B)?(A):(B)) -static void *buffer_reserve( void *buffer, u32 count, u32 *cap, u32 amount, - size_t emsize ) -{ - if( count+amount > *cap ) - { - *cap = VG_MAX( (*cap)*2, (*cap)+amount ); - return vg_realloc( buffer, (*cap) * emsize ); - } - - return buffer; -} - -static void *buffer_fix( void *buffer, u32 count, u32 *cap, size_t emsize ) -{ - *cap = count; - return vg_realloc( buffer, (*cap) * emsize ); -} - #endif