pthread_attr_t attr;\r
pthread_attr_init( &attr );\r
pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_JOINABLE );\r
+\r
#ifdef SCHED_RR // Undefined with some OSes (eg: NetBSD 1.6.x with GNU Pthread)\r
if ( options && options->flags & RTAUDIO_SCHEDULE_REALTIME ) {\r
- struct sched_param param;\r
+ // We previously attempted to increase the audio callback priority\r
+ // to SCHED_RR here via the attributes. However, while no errors\r
+ // were reported in doing so, it did not work. So, now this is\r
+ // done in the alsaCallbackHandler function.\r
+ stream_.callbackInfo.doRealtime = true;\r
int priority = options->priority;\r
int min = sched_get_priority_min( SCHED_RR );\r
int max = sched_get_priority_max( SCHED_RR );\r
if ( priority < min ) priority = min;\r
else if ( priority > max ) priority = max;\r
- param.sched_priority = priority;\r
- pthread_attr_setschedpolicy( &attr, SCHED_RR );\r
- pthread_attr_setschedparam( &attr, ¶m );\r
+ stream_.callbackInfo.priority = priority;\r
}\r
- else\r
- pthread_attr_setschedpolicy( &attr, SCHED_OTHER );\r
-#else\r
- pthread_attr_setschedpolicy( &attr, SCHED_OTHER );\r
#endif\r
\r
stream_.callbackInfo.isRunning = true;\r
RtApiAlsa *object = (RtApiAlsa *) info->object;\r
bool *isRunning = &info->isRunning;\r
\r
+#ifdef SCHED_RR // Undefined with some OSes (eg: NetBSD 1.6.x with GNU Pthread)\r
+ if ( &info->doRealtime ) {\r
+ pthread_t tID = pthread_self(); // ID of this thread\r
+ sched_param prio = { info->priority }; // scheduling priority of thread\r
+ pthread_setschedparam( tID, SCHED_RR, &prio );\r
+ }\r
+#endif\r
+\r
while ( *isRunning == true ) {\r
pthread_testcancel();\r
object->callbackEvent();\r
void *userData;
void *apiInfo; // void pointer for API specific callback information
bool isRunning;
+ bool doRealtime;
+ int priority;
// Default constructor.
CallbackInfo()
- :object(0), callback(0), userData(0), apiInfo(0), isRunning(false) {}
+ :object(0), callback(0), userData(0), apiInfo(0), isRunning(false), doRealtime(false) {}
};
// **************************************************************** //
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
-timestamp='2004-02-26'
+timestamp='2012-11-19'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
| alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
| alphaev6[78] \
| we32k | ns16k | clipper | i370 | sh | sh[34] \
- | powerpc | powerpcle \
+ | powerpc | powerpc64 | powerpcle \
| 1750a | dsp16xx | pdp10 | pdp11 \
| mips16 | mips64 | mipsel | mips64el \
| mips64orion | mips64orionel | mipstx39 | mipstx39el \
| alphaev6[78]-* \
| we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
| clipper-* | orion-* \
- | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+ | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpc64-* | powerpcle-* \
| sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
| mips16-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-* \
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;