DxStd.cpp 1.64 KB
#include "DxStd.h"
#include <stdlib.h>

void InitializeCriticalSection( CRITICAL_SECTION * cri )
{
	*cri = ( CRITICAL_SECTION )malloc( sizeof( pthread_mutex_t ) );
	if ( *cri )
	{
		pthread_mutex_init( ( pthread_mutex_t * )( *cri ), 0 );
	}
	
	return;
}


void DeleteCriticalSection( CRITICAL_SECTION * cri )
{
	if ( NULL == *cri )
	{
		return;
	}
	pthread_mutex_destroy( ( pthread_mutex_t * )( *cri ) );
	free( *cri );
	*cri = NULL;
	
	return;
}


void EnterCriticalSection( CRITICAL_SECTION * cri )
{
	if ( NULL == *cri )
	{
		return;
	}
	pthread_mutex_lock( ( pthread_mutex_t * )( *cri ) );
	
	return;
}


void LeaveCriticalSection( CRITICAL_SECTION * cri )
{
	if ( NULL == *cri )
	{
		return;
	}
	pthread_mutex_unlock( ( pthread_mutex_t * )( *cri ) );
	
	return;	
}


HANDLE CreateThread( void *, void *, dx_thread_proc proc, void * params, void *, DWORD * ret )
{
	pthread_t thread = 0;
	
	pthread_create( &thread, 0, proc, params );
	
	return thread;
}


void WaitForSingleObject( HANDLE thread, int tm )
{
	pthread_join( thread, NULL );

	return;
}


void Sleep( unsigned int ms )
{
	usleep( ms * 1000 );
}


unsigned int GetTickCount()
{
	unsigned int tm = 0;
	struct timeval tv = {0};

	gettimeofday( &tv, 0 );
	tm = tv.tv_sec * 1000 + tv.tv_usec / 1000;
	
	return tm;
}

int memicmp( const char * src, const char * dst, unsigned int len )
{
	unsigned int index = 0;

	if ( NULL == src || NULL == dst || 0 == len )
	{
		return -1;
	}

	while ( index < len )
	{
		if ( ( src[index] & 0xDF ) != ( dst[index] & 0xDF ) )
		{
			return -1;
		}
		index++;
	}

	return 0;
}