/* $Id: ports.c,v 1.15 2005/10/15 18:05:03 titer Exp $
This file is part of the HandBrake source code.
- Homepage: <http://handbrake.m0k.org/>.
+ Homepage: <http://handbrake.fr/>.
It may be used under the terms of the GNU General Public License. */
-#include <time.h>
+#include <time.h>
#include <sys/time.h>
#if defined( SYS_BEOS )
#include <signal.h>
#elif defined( SYS_CYGWIN )
#include <windows.h>
+#elif defined( SYS_SunOS )
+#include <sys/processor.h>
#endif
#if USE_PTHREAD
}
#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 );
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 );
hb_get_tempory_directory( h, name );
strcat( name, "/" );
-
+
va_start( args, fmt );
vsnprintf( &name[strlen(name)], 1024 - strlen(name), fmt, args );
va_end( args );
t->function( t->arg );
/* Inform that the thread can be joined now */
- hb_log( "thread %d exited (\"%s\")", t->thread, t->name );
+ hb_log( "thread %x exited (\"%s\")", t->thread, t->name );
hb_lock( t->lock );
t->exited = 1;
hb_unlock( t->lock );
// SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL );
#endif
- hb_log( "thread %d started (\"%s\")", t->thread, t->name );
+ hb_log( "thread %x started (\"%s\")", t->thread, t->name );
return 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_log( "thread %x joined (\"%s\")",
t->thread, t->name );
hb_lock_close( &t->lock );
free( t->name );
free( t );
- *_t = NULL;
+ *_t = NULL;
}
/************************************************************************
free( n );
return NULL;
}
-
+
return n;
}