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;
}