X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fports.c;h=3754a452983fce5f56386c7adc3efc63a9bfcb6d;hb=f9341345b37e0738a140423297c222a7e40eddab;hp=bdeadc1f89688f22b2e3bfba2a869d59c120f6a0;hpb=45529a284d3aeedad92d7149f36dda0f06083b6a;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/ports.c b/libhb/ports.c index bdeadc1f..3754a452 100644 --- a/libhb/ports.c +++ b/libhb/ports.c @@ -1,10 +1,10 @@ /* $Id: ports.c,v 1.15 2005/10/15 18:05:03 titer Exp $ This file is part of the HandBrake source code. - Homepage: . + Homepage: . It may be used under the terms of the GNU General Public License. */ -#include +#include #include #if defined( SYS_BEOS ) @@ -12,6 +12,8 @@ #include #elif defined( SYS_CYGWIN ) #include +#elif defined( SYS_SunOS ) +#include #endif #if USE_PTHREAD @@ -74,7 +76,7 @@ void hb_snooze( int delay ) } #if defined( SYS_BEOS ) snooze( 1000 * delay ); -#elif defined( SYS_DARWIN ) || defined( SYS_LINUX ) || defined( SYS_FREEBSD ) +#elif defined( SYS_DARWIN ) || defined( SYS_LINUX ) || defined( SYS_FREEBSD) || defined( SYS_SunOS ) usleep( 1000 * delay ); #elif defined( SYS_CYGWIN ) Sleep( delay ); @@ -146,6 +148,22 @@ int hb_get_cpu_count() SYSTEM_INFO cpuinfo; GetSystemInfo( &cpuinfo ); cpu_count = cpuinfo.dwNumberOfProcessors; +#elif defined( SYS_SunOS ) + { + processorid_t cpumax; + int i,j=0; + + cpumax = sysconf(_SC_CPUID_MAX); + + for(i = 0; i <= cpumax; i++ ) + { + if(p_online(i, P_STATUS) != -1) + { + j++; + } + } + cpu_count=j; + } #endif cpu_count = MAX( 1, cpu_count ); @@ -194,7 +212,7 @@ void hb_get_tempory_filename( hb_handle_t * h, char name[1024], hb_get_tempory_directory( h, name ); strcat( name, "/" ); - + va_start( args, fmt ); vsnprintf( &name[strlen(name)], 1024 - strlen(name), fmt, args ); va_end( args ); @@ -267,7 +285,7 @@ static void hb_thread_func( void * _t ) t->function( t->arg ); /* Inform that the thread can be joined now */ - hb_log( "thread %d exited (\"%s\")", t->thread, t->name ); + hb_deep_log( 2, "thread %x exited (\"%s\")", t->thread, t->name ); hb_lock( t->lock ); t->exited = 1; hb_unlock( t->lock ); @@ -312,7 +330,7 @@ hb_thread_t * hb_thread_init( char * name, void (* function)(void *), // SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL ); #endif - hb_log( "thread %d started (\"%s\")", t->thread, t->name ); + hb_deep_log( 2, "thread %x started (\"%s\")", t->thread, t->name ); return t; } @@ -329,21 +347,21 @@ void hb_thread_close( hb_thread_t ** _t ) #if defined( SYS_BEOS ) long exit_value; wait_for_thread( t->thread, &exit_value ); - + #elif USE_PTHREAD pthread_join( t->thread, NULL ); //#elif defined( SYS_CYGWIN ) // WaitForSingleObject( t->thread, INFINITE ); #endif - - hb_log( "thread %d joined (\"%s\")", + + hb_deep_log( 2, "thread %x joined (\"%s\")", t->thread, t->name ); hb_lock_close( &t->lock ); free( t->name ); free( t ); - *_t = NULL; + *_t = NULL; } /************************************************************************ @@ -391,7 +409,15 @@ hb_lock_t * hb_lock_init() #if defined( SYS_BEOS ) l->sem = create_sem( 1, "sem" ); #elif USE_PTHREAD - pthread_mutex_init( &l->mutex, NULL ); + pthread_mutexattr_t mta; + + pthread_mutexattr_init(&mta); + +#if defined( SYS_CYGWIN ) + pthread_mutexattr_settype(&mta, PTHREAD_MUTEX_NORMAL); +#endif + + pthread_mutex_init( &l->mutex, &mta ); //#elif defined( SYS_CYGWIN ) // l->mutex = CreateMutex( 0, FALSE, 0 ); #endif @@ -573,7 +599,7 @@ hb_net_t * hb_net_open( char * address, int port ) free( n ); return NULL; } - + return n; }