Browse Source

Merge Michael Voigt drops branch after reorganization step.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2880 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
sletz 16 years ago
parent
commit
3e01068967
100 changed files with 494 additions and 1177 deletions
  1. +15
    -1
      ChangeLog
  2. +1
    -1
      common/JackAPI.cpp
  3. +1
    -1
      common/JackActivationCount.h
  4. +1
    -165
      common/JackAtomic.h
  5. +1
    -1
      common/JackAudioAdapter.cpp
  6. +5
    -5
      common/JackAudioAdapterFactory.cpp
  7. +2
    -2
      common/JackAudioAdapterInterface.cpp
  8. +1
    -3
      common/JackAudioDriver.cpp
  9. +1
    -2
      common/JackClient.h
  10. +1
    -1
      common/JackClientInterface.h
  11. +3
    -8
      common/JackCompilerDeps.h
  12. +1
    -1
      common/JackConnectionManager.h
  13. +1
    -1
      common/JackControlAPI.h
  14. +1
    -3
      common/JackDriver.cpp
  15. +1
    -1
      common/JackDriver.h
  16. +1
    -3
      common/JackDriverLoader.cpp
  17. +1
    -1
      common/JackDriverLoader.h
  18. +1
    -1
      common/JackDummyDriver.cpp
  19. +1
    -4
      common/JackEngine.cpp
  20. +1
    -2
      common/JackEngine.h
  21. +8
    -13
      common/JackEngineControl.cpp
  22. +1
    -1
      common/JackError.h
  23. +1
    -1
      common/JackException.h
  24. +1
    -1
      common/JackExternalClient.h
  25. +1
    -1
      common/JackFrameTimer.h
  26. +1
    -3
      common/JackFreewheelDriver.cpp
  27. +1
    -1
      common/JackGlobals.h
  28. +1
    -6
      common/JackGraphManager.cpp
  29. +3
    -1
      common/JackGraphManager.h
  30. +1
    -3
      common/JackInternalClient.cpp
  31. +1
    -1
      common/JackLibAPI.cpp
  32. +1
    -1
      common/JackLibClient.cpp
  33. +1
    -8
      common/JackLibGlobals.h
  34. +1
    -3
      common/JackLoopbackDriver.cpp
  35. +1
    -2
      common/JackMessageBuffer.h
  36. +2
    -5
      common/JackMidiAPI.cpp
  37. +1
    -93
      common/JackMutex.h
  38. +1
    -1
      common/JackNetAdapter.h
  39. +1
    -1
      common/JackNetSocket.h
  40. +1
    -1
      common/JackNetTool.h
  41. +0
    -59
      common/JackPlatformClientChannel.h
  42. +0
    -59
      common/JackPlatformNotifyChannel.h
  43. +25
    -0
      common/JackPlatformPlug.h
  44. +0
    -59
      common/JackPlatformServerChannel.h
  45. +0
    -59
      common/JackPlatformServerNotifyChannel.h
  46. +0
    -64
      common/JackPlatformSynchro.h
  47. +2
    -10
      common/JackPort.h
  48. +1
    -1
      common/JackRequest.h
  49. +1
    -3
      common/JackRestartThreadedDriver.cpp
  50. +1
    -3
      common/JackServer.cpp
  51. +2
    -3
      common/JackServer.h
  52. +2
    -4
      common/JackServerAPI.cpp
  53. +1
    -1
      common/JackServerLaunch.cpp
  54. +2
    -15
      common/JackShmMem.h
  55. +1
    -0
      common/JackSynchro.h
  56. +26
    -0
      common/JackSystemDeps.h
  57. +21
    -18
      common/JackThread.h
  58. +1
    -3
      common/JackThreadedDriver.cpp
  59. +1
    -1
      common/JackThreadedDriver.h
  60. +2
    -78
      common/JackTime.h
  61. +1
    -1
      common/JackTools.h
  62. +1
    -1
      common/JackTransportEngine.h
  63. +1
    -8
      common/JackTypes.h
  64. +1
    -3
      common/JackWaitThreadedDriver.cpp
  65. +2
    -7
      common/driver_interface.h
  66. +1
    -4
      common/jack/control.h
  67. +1
    -7
      common/jack/jack.h
  68. +1
    -289
      common/jack/jslist.h
  69. +62
    -0
      common/jack/systemdeps.h
  70. +1
    -7
      common/jack/thread.h
  71. +8
    -30
      common/jack/types.h
  72. +1
    -1
      common/ringbuffer.c
  73. +1
    -1
      common/shm.h
  74. +23
    -17
      common/wscript
  75. +0
    -0
      dbus/controller.c
  76. +0
    -0
      dbus/controller.h
  77. +0
    -0
      dbus/controller_iface_configure.c
  78. +0
    -0
      dbus/controller_iface_control.c
  79. +0
    -0
      dbus/controller_iface_introspectable.c
  80. +0
    -0
      dbus/controller_iface_patchbay.c
  81. +0
    -0
      dbus/controller_iface_transport.c
  82. +0
    -0
      dbus/controller_internal.h
  83. +0
    -0
      dbus/jackdbus.c
  84. +0
    -0
      dbus/jackdbus.h
  85. +0
    -0
      dbus/list.h
  86. +0
    -0
      dbus/org.jackaudio.service.in
  87. +0
    -0
      dbus/sigsegv.c
  88. +0
    -0
      dbus/sigsegv.h
  89. +6
    -1
      dbus/wscript
  90. +0
    -0
      dbus/xml.c
  91. +0
    -0
      dbus/xml.h
  92. +0
    -0
      dbus/xml_expat.c
  93. +0
    -0
      dbus/xml_libxml.c
  94. +0
    -0
      dbus/xml_nop.c
  95. +0
    -0
      dbus/xml_write_raw.c
  96. +8
    -4
      example-clients/wscript
  97. +77
    -0
      linux/JackAtomic_os.h
  98. +75
    -0
      linux/JackPlatformPlug_os.h
  99. +61
    -0
      linux/JackTime_os.h
  100. +2
    -2
      linux/alsa/JackAlsaAdapter.h

+ 15
- 1
ChangeLog View File

@@ -22,8 +22,13 @@ Florian Faber
Jackdmp changes log
---------------------------

2008-09-04 Stephane Letz <letz@grame.fr>
2008-08-05 Stephane Letz <letz@grame.fr>
* Merge Michael Voigt "drops" branch after reorganization step.

2008-08-04 Stephane Letz <letz@grame.fr>
* Michael Voigt 4th source reorganization patch.
* Correct JackNetDriver initialization.

2008-09-03 Stephane Letz <letz@grame.fr>
@@ -33,8 +38,17 @@ Florian Faber

2008-09-01 Stephane Letz <letz@grame.fr>
* Michael Voigt third source reorganization patch.
* Add new jack_set_port_rename_callback API, jack_port_set_name is now a server request that call port rename callbacks.

2008-08-31 Stephane Letz <letz@grame.fr>
* Michael Voigt second source reorganization patch.

2008-08-28 Stephane Letz <letz@grame.fr>
* Michael Voigt first source reorganization patch.

2008-08-26 Stephane Letz <letz@grame.fr>
* Better parameter handling in JackCoreAudioAdapter.


+ 1
- 1
common/JackAPI.cpp View File

@@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackClientControl.h"
#include "JackGlobals.h"
#include "JackTime.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "JackPortType.h"

#ifdef __APPLE__


+ 1
- 1
common/JackActivationCount.h View File

@@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef __JackActivationCount__
#define __JackActivationCount__

#include "JackPlatformSynchro.h"
#include "JackPlatformPlug.h"
#include "JackTime.h"
#include "JackTypes.h"



+ 1
- 165
common/JackAtomic.h View File

@@ -22,171 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

#include "JackTypes.h"

#if defined(__APPLE__)

#if defined(__ppc__) || defined(__ppc64__)

static inline int CAS(register UInt32 value, register UInt32 newvalue, register volatile void* addr)
{
register int result;
asm volatile (
"# CAS \n"
" lwarx r0, 0, %1 \n" // creates a reservation on addr
" cmpw r0, %2 \n" // test value at addr
" bne- 1f \n"
" sync \n" // synchronize instructions
" stwcx. %3, 0, %1 \n" // if the reservation is not altered
// stores the new value at addr
" bne- 1f \n"
" li %0, 1 \n"
" b 2f \n"
"1: \n"
" li %0, 0 \n"
"2: \n"
: "=r" (result)
: "r" (addr), "r" (value), "r" (newvalue)
: "r0"
);
return result;
}

#endif

#if defined(__i386__) || defined(__x86_64__)

#ifdef __SMP__
# define LOCK "lock ; "
#else
# define LOCK ""
#endif

static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr)
{
register char ret;
__asm__ __volatile__ (
"# CAS \n\t"
LOCK "cmpxchg %2, (%1) \n\t"
"sete %0 \n\t"
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
return ret;
}

#endif

#endif

#ifdef __linux__

#ifdef __PPC__

static inline int CAS(register UInt32 value, register UInt32 newvalue, register volatile void* addr)
{
register int result;
register UInt32 tmp;
asm volatile (
"# CAS \n"
" lwarx %4, 0, %1 \n" // creates a reservation on addr
" cmpw %4, %2 \n" // test value at addr
" bne- 1f \n"
" sync \n" // synchronize instructions
" stwcx. %3, 0, %1 \n" // if the reservation is not altered
// stores the new value at addr
" bne- 1f \n"
" li %0, 1 \n"
" b 2f \n"
"1: \n"
" li %0, 0 \n"
"2: \n"
: "=r" (result)
: "r" (addr), "r" (value), "r" (newvalue), "r" (tmp)
);
return result;
}

#endif

#if defined(__i386__) || defined(__x86_64__)

#ifdef __SMP__
# define LOCK "lock ; "
#else
# define LOCK ""
#endif

static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr)
{
register char ret;
__asm__ __volatile__ (
"# CAS \n\t"
LOCK "cmpxchg %2, (%1) \n\t"
"sete %0 \n\t"
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
return ret;
}

#endif

#endif

#ifdef WIN32

#ifndef __MINGW32__
#ifdef __SMP__
# define LOCK lock
#else
# define LOCK
#endif

#define inline __inline

//----------------------------------------------------------------
// CAS functions
//----------------------------------------------------------------
inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void * addr)
{
register char c;
__asm {
push ebx
push esi
mov esi, addr
mov eax, value
mov ebx, newvalue
LOCK cmpxchg dword ptr [esi], ebx
sete c
pop esi
pop ebx
}
return c;
}

#else

#ifdef __SMP__
# define LOCK "lock ; "
#else
# define LOCK ""
#endif

static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr)
{
register char ret;
__asm__ __volatile__ (
"# CAS \n\t"
LOCK "cmpxchg %2, (%1) \n\t"
"sete %0 \n\t"
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
return ret;
}

#endif

#endif
#include "JackAtomic_os.h"

static inline long INC_ATOMIC(volatile SInt32* val)
{


+ 1
- 1
common/JackAudioAdapter.cpp View File

@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackAudioAdapter.h"
#include "JackLibSampleRateResampler.h"
#include "JackError.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "JackTools.h"
#include "jslist.h"
#include <stdio.h>


+ 5
- 5
common/JackAudioAdapterFactory.cpp View File

@@ -23,11 +23,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include <stdlib.h>
#include <assert.h>

#ifdef __cplusplus
extern "C"
{
#endif

#include "driver_interface.h"

#ifdef __linux__
@@ -40,6 +35,11 @@ extern "C"

#ifdef WIN32
#include "JackPortAudioAdapter.h"
#endif

#ifdef __cplusplus
extern "C"
{
#endif

using namespace Jack;


+ 2
- 2
common/JackAudioAdapterInterface.cpp View File

@@ -41,8 +41,8 @@ namespace Jack
char buffer[1024];
FILE* file = fopen("JackAudioAdapter.log", "w");

int MAX = (fCount) % TABLE_MAX - 1;
for (int i = 1; i < MAX; i++)
int max = (fCount) % TABLE_MAX - 1;
for (int i = 1; i < max; i++)
{
fprintf(file, "%d \t %d \t %d \t %f \t %f \t %d \t %d \n",
fTable[i].delta, fTable[i+1].time1 - fTable[i].time1,


+ 1
- 3
common/JackAudioDriver.cpp View File

@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackAudioDriver.h"
#include "JackTime.h"


+ 1
- 2
common/JackClient.h View File

@@ -29,8 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "varargs.h"
#include <list>

#include "JackPlatformSynchro.h"
#include "JackPlatformThread.h"
#include "JackPlatformPlug.h"
#include "JackChannel.h"

namespace Jack


+ 1
- 1
common/JackClientInterface.h View File

@@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef __JackClientInterface__
#define __JackClientInterface__

#include "JackExports.h"
#include "JackCompilerDeps.h"

namespace Jack
{


common/JackExports.h → common/JackCompilerDeps.h View File

@@ -17,14 +17,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __JackExports__
#define __JackExports__
#ifndef __JackCompilerDeps__
#define __JackCompilerDeps__

#ifdef WIN32
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __attribute__ ((visibility("default")))
#endif
#include "JackCompilerDeps_os.h"

#endif


+ 1
- 1
common/JackConnectionManager.h View File

@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackConstants.h"
#include "JackActivationCount.h"
#include "JackError.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"

#include <assert.h>



+ 1
- 1
common/JackControlAPI.h View File

@@ -23,7 +23,7 @@
#define __JackControlAPI__

#include "jslist.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"

#ifdef WIN32
#ifdef __MINGW32__


+ 1
- 3
common/JackDriver.cpp View File

@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackDriver.h"
#include "JackTime.h"


+ 1
- 1
common/JackDriver.h View File

@@ -24,7 +24,7 @@
#include "types.h"
#include "JackClientInterface.h"
#include "JackConstants.h"
#include "JackPlatformSynchro.h"
#include "JackPlatformPlug.h"
#include "JackClientControl.h"
#include <list>



+ 1
- 3
common/JackDriverLoader.cpp View File

@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

/*
#ifndef WIN32


+ 1
- 1
common/JackDriverLoader.h View File

@@ -23,7 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#include "driver_interface.h"
#include "JackControlAPI.h"
#include "JackPlatformSynchro.h"
#include "JackPlatformPlug.h"


#ifdef WIN32


+ 1
- 1
common/JackDummyDriver.cpp View File

@@ -27,7 +27,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackGraphManager.h"
#include "JackDriverLoader.h"
#include "JackThreadedDriver.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include <iostream>
#include <unistd.h>



+ 1
- 4
common/JackEngine.cpp View File

@@ -25,10 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include <fstream>
#include <assert.h>

#ifndef WIN32
#include <sys/types.h>
#include <signal.h>
#endif
#include "JackSystemDeps.h"

#include "JackLockedEngine.h"
#include "JackExternalClient.h"


+ 1
- 2
common/JackEngine.h View File

@@ -24,8 +24,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackGraphManager.h"
#include "JackSynchro.h"
#include "JackTransportEngine.h"
#include "JackPlatformProcessSync.h"
#include "JackPlatformServerNotifyChannel.h"
#include "JackPlatformPlug.h"

namespace Jack
{


+ 8
- 13
common/JackEngineControl.cpp View File

@@ -32,6 +32,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
namespace Jack
{

static inline _jack_time_t JACK_MAX(_jack_time_t a, _jack_time_t b)
{
return (a < b) ? b : a;
}

void JackEngineControl::CycleIncTime(jack_time_t callback_usecs)
{
// Timer
@@ -67,16 +72,6 @@ void JackEngineControl::ReadFrameTime(JackTimer* timer)
fFrameTimer.ReadFrameTime(timer);
}

// Private
#ifdef WIN32
inline jack_time_t MAX(jack_time_t a, jack_time_t b)
{
return (a < b) ? b : a;
}
#else
#define MAX(a,b) std::max((a),(b))
#endif

void JackEngineControl::CalcCPULoad(JackClientInterface** table,
JackGraphManager* manager,
jack_time_t cur_cycle_begin,
@@ -92,7 +87,7 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table,
JackClientInterface* client = table[i];
JackClientTiming* timing = manager->GetClientTiming(i);
if (client && client->GetClientControl()->fActive && timing->fStatus == Finished)
last_cycle_end = MAX(last_cycle_end, timing->fFinishedAt);
last_cycle_end = JACK_MAX(last_cycle_end, timing->fFinishedAt);
}
}

@@ -108,9 +103,9 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table,

jack_time_t max_usecs = 0;
for (int i = 0; i < JACK_ENGINE_ROLLING_COUNT; i++)
max_usecs = MAX(fRollingClientUsecs[i], max_usecs);
max_usecs = JACK_MAX(fRollingClientUsecs[i], max_usecs);
fMaxUsecs = MAX(fMaxUsecs, max_usecs);
fMaxUsecs = JACK_MAX(fMaxUsecs, max_usecs);
fSpareUsecs = jack_time_t((max_usecs < fPeriodUsecs) ? fPeriodUsecs - max_usecs : 0);
fCPULoad = ((1.f - (float(fSpareUsecs) / float(fPeriodUsecs))) * 50.f + (fCPULoad * 0.5f));
}


+ 1
- 1
common/JackError.h View File

@@ -25,7 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#include <string.h>
#include <errno.h>
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "types.h"

#ifdef __cplusplus


+ 1
- 1
common/JackException.h View File

@@ -23,7 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include <stdexcept>
#include <iostream>
#include <string>
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "JackError.h"

namespace Jack


+ 1
- 1
common/JackExternalClient.h View File

@@ -22,7 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#define __JackExternalClient__

#include "JackClientInterface.h"
#include "JackPlatformNotifyChannel.h"
#include "JackPlatformPlug.h"

namespace Jack
{


+ 1
- 1
common/JackFrameTimer.h View File

@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define __JackFrameTimer__

#include "JackAtomicState.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "types.h"

namespace Jack


+ 1
- 3
common/JackFreewheelDriver.cpp View File

@@ -22,9 +22,7 @@
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackFreewheelDriver.h"
#include "JackEngineControl.h"


+ 1
- 1
common/JackGlobals.h View File

@@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef __JackGlobals__
#define __JackGlobals__

#include "JackPlatformThread.h"
#include "JackPlatformPlug.h"

extern jack_tls_key gRealTime;
extern jack_tls_key g_key_log_function;


+ 1
- 6
common/JackGraphManager.cpp View File

@@ -33,11 +33,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
namespace Jack
{

static inline jack_nframes_t MAX(jack_nframes_t a, jack_nframes_t b)
{
return (a < b) ? b : a;
}

static void AssertPort(jack_port_id_t port_index)
{
if (port_index >= PORT_NUM) {
@@ -240,7 +235,7 @@ jack_nframes_t JackGraphManager::ComputeTotalLatencyAux(jack_port_id_t port_inde
jack_nframes_t this_latency = (dst_port->fFlags & JackPortIsTerminal)
? dst_port->GetLatency()
: ComputeTotalLatencyAux(dst_index, port_index, manager, hop_count + 1);
max_latency = MAX(max_latency, this_latency);
max_latency = ((max_latency > this_latency) ? max_latency : this_latency);
}
}



+ 3
- 1
common/JackGraphManager.h View File

@@ -26,7 +26,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackConstants.h"
#include "JackConnectionManager.h"
#include "JackAtomicState.h"
#include "JackPlatformSynchro.h"
#include "JackPlatformPlug.h"
#include "JackSystemDeps.h"


namespace Jack
{


+ 1
- 3
common/JackInternalClient.cpp View File

@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#ifndef WIN32
#ifndef ADDON_DIR


+ 1
- 1
common/JackLibAPI.cpp View File

@@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackLibGlobals.h"
#include "JackGlobals.h"
#include "JackServerLaunch.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "JackTools.h"

using namespace Jack;


+ 1
- 1
common/JackLibClient.cpp View File

@@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackTime.h"
#include "JackLibGlobals.h"
#include "JackGlobals.h"
#include "JackPlatformClientChannel.h"
#include "JackPlatformPlug.h"
#include "JackTools.h"

namespace Jack


+ 1
- 8
common/JackLibGlobals.h View File

@@ -22,12 +22,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

#include "JackShmMem.h"
#include "JackEngineControl.h"
#ifdef __APPLE__
#include "JackMachPort.h"
#include <map>
#endif
#include "JackGlobals.h"
#include "JackPlatformSynchro.h"
#include "JackPlatformPlug.h"
#include "JackGraphManager.h"
#include "JackMessageBuffer.h"
#include "JackTime.h"
@@ -48,9 +44,6 @@ struct JackLibGlobals
JackShmReadWritePtr<JackGraphManager> fGraphManager; /*! Shared memory Port manager */
JackShmReadWritePtr<JackEngineControl> fEngineControl; /*! Shared engine control */ // transport engine has to be writable
JackSynchro fSynchroTable[CLIENT_NUM]; /*! Shared synchro table */
#ifdef __APPLE__
std::map<mach_port_t, JackClient*> fClientTable; /*! Client table */
#endif
static int fClientCount;
static JackLibGlobals* fGlobals;


+ 1
- 3
common/JackLoopbackDriver.cpp View File

@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackLoopbackDriver.h"
#include "JackEngineControl.h"


+ 1
- 2
common/JackMessageBuffer.h View File

@@ -30,10 +30,9 @@
#ifndef __JackMessageBuffer__
#define __JackMessageBuffer__

#include "JackPlatformThread.h"
#include "JackPlatformPlug.h"
#include "JackMutex.h"
#include "JackAtomic.h"
#include "JackPlatformProcessSync.h"

namespace Jack
{


+ 2
- 5
common/JackMidiAPI.cpp View File

@@ -24,13 +24,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

#include "JackError.h"
#include "JackMidiPort.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include <errno.h>
#include <string.h>

#ifdef WIN32
#define ENOBUFS 55
#endif
#include "JackSystemDeps.h"

#ifdef __cplusplus
extern "C"


+ 1
- 93
common/JackMutex.h View File

@@ -22,105 +22,13 @@
#ifndef __JackMutex__
#define __JackMutex__

#ifdef WIN32
#include <windows.h>
#else
#include <pthread.h>
#endif
#include "JackMutex_os.h"

#include <assert.h>
#include "JackError.h"

namespace Jack
{

/*!
\brief Mutex abstraction.
*/

class JackMutex
{

private:

#ifdef WIN32
HANDLE fMutex;
#else
pthread_mutex_t fMutex;
#endif

public:

#ifdef WIN32

JackMutex()
{
// In recursive mode by default
fMutex = (HANDLE)CreateMutex(0, FALSE, 0);
}
~JackMutex()
{
CloseHandle(fMutex);
}

void Lock()
{
DWORD dwWaitResult = WaitForSingleObject(fMutex, INFINITE);
}

bool Trylock()
{
return (WAIT_OBJECT_0 == WaitForSingleObject(fMutex, 0));
}

void Unlock()
{
ReleaseMutex(fMutex);
}

#else

JackMutex()
{
// Use recursive mutex
pthread_mutexattr_t mutex_attr;
int res;
res = pthread_mutexattr_init(&mutex_attr);
assert(res == 0);
res = pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE);
assert(res == 0);
res = pthread_mutex_init(&fMutex, &mutex_attr);
assert(res == 0);
res = pthread_mutexattr_destroy(&mutex_attr);
assert(res == 0);
}
~JackMutex()
{
pthread_mutex_destroy(&fMutex);
}

void Lock()
{
int res = pthread_mutex_lock(&fMutex);
if (res != 0)
jack_error("JackMutex::Lock res = %d", res);
}

bool Trylock()
{
return (pthread_mutex_trylock(&fMutex) == 0);
}

void Unlock()
{
int res = pthread_mutex_unlock(&fMutex);
if (res != 0)
jack_error("JackMutex::Unlock res = %d", res);
}

#endif
};

/*!
\brief Base class for "lockable" objects.
*/


+ 1
- 1
common/JackNetAdapter.h View File

@@ -22,7 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#include <assert.h>
#include "JackAudioAdapterInterface.h"
#include "JackPlatformThread.h"
#include "JackPlatformPlug.h"
#include "JackNetInterface.h"

namespace Jack


+ 1
- 1
common/JackNetSocket.h View File

@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#ifndef __JackNetSocket__
#define __JackNetSocket__

#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "JackError.h"
#include <cstdlib>
#include <cstdio>


+ 1
- 1
common/JackNetTool.h View File

@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackConstants.h"
#include "JackMidiPort.h"
#include "JackTools.h"
#include "JackPlatformNetSocket.h"
#include "JackPlatformPlug.h"
#include "types.h"
#include "transport.h"
#include <cmath>


+ 0
- 59
common/JackPlatformClientChannel.h View File

@@ -1,59 +0,0 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __JackPlatformClientChannel__
#define __JackPlatformClientChannel___

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
// OSX
#if defined(__APPLE__)
#include "JackMachClientChannel.h"
#endif

// WINDOWS
#ifdef WIN32
#include "JackWinNamedPipeClientChannel.h"
#endif

// LINUX
#ifdef __linux__
#include "JackSocketClientChannel.h"
#endif

namespace Jack
{

#ifdef WIN32
typedef JackWinNamedPipeClientChannel JackClientChannel;

#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \
|| defined(SOCKET_RPC_MACH_SEMA)
typedef JackSocketClientChannel JackClientChannel;

#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA)
typedef JackMachClientChannel JackClientChannel;

#endif

} // end of namespace

#endif /* __JackPlatformClientChannel__ */

+ 0
- 59
common/JackPlatformNotifyChannel.h View File

@@ -1,59 +0,0 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __JackPlatformNotifyChannel__
#define __JackPlatformNotifyChannel__

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

// OSX
#if defined(__APPLE__)
#include "JackMachNotifyChannel.h"
#endif

// WINDOWS
#ifdef WIN32
#include "JackWinNamedPipeNotifyChannel.h"
#endif

// LINUX
#ifdef __linux__
#include "JackSocketNotifyChannel.h"
#endif

namespace Jack
{

#ifdef WIN32
typedef JackWinNamedPipeNotifyChannel JackNotifyChannel;

#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \
|| defined(SOCKET_RPC_MACH_SEMA)
typedef JackSocketNotifyChannel JackNotifyChannel;

#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA)
typedef JackMachNotifyChannel JackNotifyChannel;

#endif

} // end of namespace

#endif /* __JackPlatformNotifyChannel__ */

+ 25
- 0
common/JackPlatformPlug.h View File

@@ -0,0 +1,25 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

#ifndef __JackPlatformPlug__
#define __JackPlatformPlug__

#include "JackPlatformPlug_os.h"

#endif

+ 0
- 59
common/JackPlatformServerChannel.h View File

@@ -1,59 +0,0 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __JackPlatformServerChannel__
#define __JackPlatformServerChannel___

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

// OSX
#if defined(__APPLE__)
#include "JackMachServerChannel.h"
#endif

// WINDOWS
#ifdef WIN32
#include "JackWinNamedPipeServerChannel.h"
#endif

// LINUX
#ifdef __linux__
#include "JackSocketServerChannel.h"
#endif

namespace Jack
{

#ifdef WIN32
typedef JackWinNamedPipeServerChannel JackServerChannel;

#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \
|| defined(SOCKET_RPC_MACH_SEMA)
typedef JackSocketServerChannel JackServerChannel;

#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA)
typedef JackMachServerChannel JackServerChannel;

#endif

} // end of namespace

#endif /* __JackPlatformServerChannel__ */

+ 0
- 59
common/JackPlatformServerNotifyChannel.h View File

@@ -1,59 +0,0 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __JackPlatformServerNotifyChannel__
#define __JackPlatformServerNotifyChannel___

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

// OSX
#if defined(__APPLE__)
#include "JackMachServerNotifyChannel.h"
#endif

// WINDOWS
#ifdef WIN32
#include "JackWinNamedPipeServerNotifyChannel.h"
#endif

// LINUX
#ifdef __linux__
#include "JackSocketServerNotifyChannel.h"
#endif

namespace Jack
{

#ifdef WIN32
typedef JackWinNamedPipeServerNotifyChannel JackServerNotifyChannel;

#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \
|| defined(SOCKET_RPC_MACH_SEMA)
typedef JackSocketServerNotifyChannel JackServerNotifyChannel;

#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA)
typedef JackMachServerNotifyChannel JackServerNotifyChannel;

#endif

} // end of namespace

#endif /* __JackPlatformServerNotifyChannel__ */

+ 0
- 64
common/JackPlatformSynchro.h View File

@@ -1,64 +0,0 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __JackPlatformSynchro__
#define __JackPlatformSynchro__

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

// OSX
#if defined(__APPLE__)
#include "JackMachSemaphore.h"
#endif

// WINDOWS
#ifdef WIN32
#include "JackWinSemaphore.h"
#endif

// LINUX
#ifdef __linux__
#include "JackPosixSemaphore.h"
#include "JackFifo.h"
#endif

namespace Jack
{

#ifdef WIN32
typedef JackWinSemaphore JackSynchro;
#endif

#if defined(MACH_RPC_MACH_SEMA) || defined(SOCKET_RPC_MACH_SEMA)
typedef JackMachSemaphore JackSynchro;
#endif

#if defined(SOCKET_RPC_POSIX_SEMA) || defined(MACH_RPC_POSIX_SEMA)
typedef JackPosixSemaphore JackSynchro;
#endif

#if defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) || defined(MACH_RPC_FIFO_SEMA)
typedef JackFifo JackSynchro;
#endif

} // end of namespace

#endif /* __JackPlatformSynchro__ */

+ 2
- 10
common/JackPort.h View File

@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

#include "types.h"
#include "JackConstants.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"

namespace Jack
{
@@ -56,15 +56,7 @@ class EXPORT JackPort
bool fInUse;
jack_port_id_t fTied; // Locally tied source port

#ifdef WIN32
//__declspec(align(16)) float fBuffer[BUFFER_SIZE_MAX];
float fBuffer[BUFFER_SIZE_MAX];
#elif __GNUC__
float fBuffer[BUFFER_SIZE_MAX] __attribute__((aligned(64))); // 16 bytes alignment for vector code, 64 bytes better for cache loads/stores
#else
#warning Buffer will not be aligned on 16 bytes boundaries : vector based code (Altivec of SSE) will fail
float fBuffer[BUFFER_SIZE_MAX];
#endif
MEM_ALIGN(float fBuffer[BUFFER_SIZE_MAX], 64); // 16 bytes alignment for vector code, 64 bytes better for cache loads/stores

bool IsUsed() const;



+ 1
- 1
common/JackRequest.h View File

@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define __JackRequest__

#include "JackConstants.h"
#include "JackPlatformChannelTransaction.h"
#include "JackPlatformPlug.h"
#include "types.h"
#include <string.h>
#include <stdio.h>


+ 1
- 3
common/JackRestartThreadedDriver.cpp View File

@@ -22,9 +22,7 @@
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackRestartThreadedDriver.h"
#include "JackException.h"


+ 1
- 3
common/JackServer.cpp View File

@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackServer.h"
#include "JackTime.h"


+ 2
- 3
common/JackServer.h View File

@@ -21,15 +21,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#ifndef __JackServer__
#define __JackServer__

#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "driver_interface.h"
#include "JackDriverLoader.h"
#include "JackConnectionManager.h"
#include "jslist.h"

#include "JackGlobals.h"
#include "JackPlatformSynchro.h"
#include "JackPlatformServerChannel.h"
#include "JackPlatformPlug.h"


namespace Jack


+ 2
- 4
common/JackServerAPI.cpp View File

@@ -22,9 +22,7 @@ This program is free software; you can redistribute it and/or modify
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackGraphManager.h"
#include "JackInternalClient.h"
@@ -33,7 +31,7 @@ This program is free software; you can redistribute it and/or modify
#include "JackServerGlobals.h"
#include "JackServerLaunch.h"
#include "JackTools.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "JackLockedEngine.h"

#ifdef __cplusplus


+ 1
- 1
common/JackServerLaunch.cpp View File

@@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackChannel.h"
#include "JackLibGlobals.h"
#include "JackServerLaunch.h"
#include "JackPlatformClientChannel.h"
#include "JackPlatformPlug.h"

using namespace Jack;



+ 2
- 15
common/JackShmMem.h View File

@@ -23,26 +23,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#include "shm.h"
#include "JackError.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"

#include <new> // GCC 4.0
#include <errno.h>
#include <stdlib.h>

#ifdef WIN32
#include <windows.h>
#define CHECK_MLOCK(ptr, size) (VirtualLock((ptr), (size)) != 0)
#define CHECK_MUNLOCK(ptr, size) (VirtualUnlock((ptr), (size)) != 0)
#define CHECK_MLOCKALL()(false)
#define CHECK_MUNLOCKALL()(false)
#else
#include <sys/types.h>
#include <sys/mman.h>
#define CHECK_MLOCK(ptr, size) (mlock((ptr), (size)) == 0)
#define CHECK_MUNLOCK(ptr, size) (munlock((ptr), (size)) == 0)
#define CHECK_MLOCKALL() (mlockall(MCL_CURRENT | MCL_FUTURE) == 0)
#define CHECK_MUNLOCKALL() (munlockall() == 0)
#endif
#include "JackShmMem_os.h"

namespace Jack
{


+ 1
- 0
common/JackSynchro.h View File

@@ -94,6 +94,7 @@ class JackSynchro
}

};

}

} // end of namespace


+ 26
- 0
common/JackSystemDeps.h View File

@@ -0,0 +1,26 @@
/*
Copyright (C) 2004-2006 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __JackSystemDeps__
#define __JackSystemDeps__

#include "systemdeps.h"
#include "JackSystemDeps_os.h"

#endif

+ 21
- 18
common/JackThread.h View File

@@ -21,16 +21,8 @@
#ifndef __JackThread__
#define __JackThread__

#include "JackExports.h"

#ifdef WIN32
#include <windows.h>
typedef HANDLE pthread_t;
typedef ULONGLONG UInt64;
#else
#include <pthread.h>
typedef unsigned long long UInt64;
#endif
#include "JackCompilerDeps.h"
#include "JackTypes.h"

namespace Jack
{
@@ -65,7 +57,7 @@ class JackRunnableInterface
namespace detail
{

class EXPORT JackThread
class EXPORT JackThreadInterface
{

public:
@@ -82,7 +74,7 @@ class EXPORT JackThread
public:
JackThread(JackRunnableInterface* runnable, int priority, bool real_time, int cancellation):
JackThreadInterface(JackRunnableInterface* runnable, int priority, bool real_time, int cancellation):
fRunnable(runnable), fPriority(priority), fRealTime(real_time), fStatus(kIdle), fCancellation(cancellation)
{}
@@ -98,18 +90,29 @@ class EXPORT JackThread
void SetParams(UInt64 period, UInt64 computation, UInt64 constraint) // Empty implementation, will only make sense on OSX...
{}
int Start();
int StartSync();
int Kill();
int Stop();
void Terminate();

int AcquireRealTime();
int AcquireRealTime(int priority);
int DropRealTime();

pthread_t GetThreadID();

static int AcquireRealTimeImp(pthread_t thread, int priority);
static int DropRealTimeImp(pthread_t thread);
static int StartImp(pthread_t* thread, int priority, int realtime, void*(*start_routine)(void*), void* arg);
static int StopImp(pthread_t thread);
static int KillImp(pthread_t thread);
};
}

} // end of namespace

#if defined(WIN32)
typedef DWORD jack_tls_key;
#else
typedef pthread_key_t jack_tls_key;
#endif

EXPORT bool jack_tls_allocate_key(jack_tls_key *key_ptr);
EXPORT bool jack_tls_free_key(jack_tls_key key);



+ 1
- 3
common/JackThreadedDriver.cpp View File

@@ -22,9 +22,7 @@
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackThreadedDriver.h"
#include "JackError.h"


+ 1
- 1
common/JackThreadedDriver.h View File

@@ -22,7 +22,7 @@
#define __JackThreadedDriver__

#include "JackDriver.h"
#include "JackPlatformThread.h"
#include "JackPlatformPlug.h"

namespace Jack
{


+ 2
- 78
common/JackTime.h View File

@@ -22,86 +22,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define __JackTime__

#include "types.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include <stdio.h>

#ifdef __cplusplus
extern "C"
{
#endif

#if defined(__APPLE__)

#include <mach/mach_time.h>
#include <unistd.h>

extern EXPORT double __jack_time_ratio;

static inline jack_time_t GetMicroSeconds(void)
{
return (jack_time_t) (mach_absolute_time () * __jack_time_ratio);
}

/* This should only be called ONCE per process. */
void InitTime();

static inline void JackSleep(int usec)
{
usleep(usec);
}

#endif

#ifdef WIN32

extern EXPORT LARGE_INTEGER _jack_freq;

EXPORT jack_time_t GetMicroSeconds(void) ;

void InitTime();

static void JackSleep(int usec)
{
Sleep(usec / 1000);
}

#endif

#ifdef linux

#include <unistd.h>

static inline void JackSleep(long usec)
{
usleep(usec);
}

#ifdef GETCYCLE_TIME
#include "cycles.h"
extern jack_time_t __jack_cpu_mhz;
jack_time_t GetMhz();
void InitTime();
static inline jack_time_t GetMicroSeconds(void)
{
return get_cycles() / __jack_cpu_mhz;
}
#else
#include <time.h>
void InitTime();
static inline jack_time_t GetMicroSeconds(void)
{
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return (jack_time_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
}
#endif

#endif

#ifdef __cplusplus
}
#endif

#include "JackTime_os.h"

#endif



+ 1
- 1
common/JackTools.h View File

@@ -40,7 +40,7 @@
#include "jslist.h"
#include "driver_interface.h"

#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "JackError.h"

namespace Jack


+ 1
- 1
common/JackTransportEngine.h View File

@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define __JackTransportEngine__

#include "JackAtomicArrayState.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "types.h"

namespace Jack


+ 1
- 8
common/JackTypes.h View File

@@ -30,14 +30,7 @@ typedef unsigned long UInt32;
typedef signed long SInt32;
#endif

#ifdef WIN32
#include <windows.h>
typedef ULONGLONG UInt64;
typedef unsigned short uint16_t;
#else
#include <stdint.h>
typedef unsigned long long UInt64;
#endif
#include "JackTypes_os.h"

typedef uint16_t jack_int_t; // Internal type for ports and refnum



+ 1
- 3
common/JackWaitThreadedDriver.cpp View File

@@ -22,9 +22,7 @@
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "JackSystemDeps.h"

#include "JackWaitThreadedDriver.h"
#include "JackGlobals.h"


+ 2
- 7
common/driver_interface.h View File

@@ -27,14 +27,9 @@ extern "C"

#include <limits.h>
#include "jslist.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"

#ifdef WIN32
#include "types.h"
#define PATH_MAX 1024
#else
#include <inttypes.h>
#endif
#include "JackSystemDeps.h"

#define JACK_DRIVER_NAME_MAX 15
#define JACK_DRIVER_PARAM_NAME_MAX 15


+ 1
- 4
common/jack/control.h View File

@@ -30,10 +30,7 @@
#define JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED

#include <jack/jslist.h>

#ifdef WIN32
typedef unsigned long sigset_t;
#endif
#include <jack/systemdeps.h>

/** Parameter types, intentionally similar to jack_driver_param_type_t */
typedef enum


+ 1
- 7
common/jack/jack.h View File

@@ -26,13 +26,7 @@ extern "C"
{
#endif

#ifdef WIN32
#include <windows.h>
typedef HANDLE pthread_t;
#else
#include <pthread.h>
#endif

#include <jack/systemdeps.h>
#include <jack/types.h>
#include <jack/transport.h>



+ 1
- 289
common/jack/jslist.h View File

@@ -27,9 +27,7 @@

#include <stdlib.h>

#ifdef WIN32
#define __inline__ inline
#endif
#include <jack/systemdeps.h>

typedef struct _JSList JSList;

@@ -285,290 +283,4 @@ jack_slist_sort (JSList *list,
}

#endif /* __jack_jslist_h__ */
/*
Based on gslist.c from glib-1.2.9 (LGPL).

Adaption to JACK, Copyright (C) 2002 Kai Vehmanen.
- replaced use of gtypes with normal ANSI C types
- glib's memory allocation routines replaced with
malloc/free calls

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

#ifndef __jack_jslist_h__
#define __jack_jslist_h__

#include <stdlib.h>

#ifdef WIN32
#define __inline__ inline
#endif

typedef struct _JSList JSList;

typedef int (*JCompareFunc) (void* a, void* b);
struct _JSList
{
void *data;
JSList *next;
};

static __inline__
JSList*
jack_slist_alloc (void)
{
JSList *new_list;

new_list = (JSList*)malloc(sizeof(JSList));
new_list->data = NULL;
new_list->next = NULL;

return new_list;
}

static __inline__
JSList*
jack_slist_prepend (JSList* list, void* data)
{
JSList *new_list;

new_list = (JSList*)malloc(sizeof(JSList));
new_list->data = data;
new_list->next = list;

return new_list;
}

#define jack_slist_next(slist) ((slist) ? (((JSList *)(slist))->next) : NULL)
static __inline__
JSList*
jack_slist_last (JSList *list)
{
if (list) {
while (list->next)
list = list->next;
}

return list;
}

static __inline__
JSList*
jack_slist_remove_link (JSList *list,
JSList *link)
{
JSList *tmp;
JSList *prev;

prev = NULL;
tmp = list;

while (tmp) {
if (tmp == link) {
if (prev)
prev->next = tmp->next;
if (list == tmp)
list = list->next;

tmp->next = NULL;
break;
}

prev = tmp;
tmp = tmp->next;
}

return list;
}

static __inline__
void
jack_slist_free (JSList *list)
{
while (list) {
JSList *next = list->next;
free(list);
list = next;
}
}

static __inline__
void
jack_slist_free_1 (JSList *list)
{
if (list) {
free(list);
}
}

static __inline__
JSList*
jack_slist_remove (JSList *list,
void *data)
{
JSList *tmp;
JSList *prev;

prev = NULL;
tmp = list;

while (tmp) {
if (tmp->data == data) {
if (prev)
prev->next = tmp->next;
if (list == tmp)
list = list->next;

tmp->next = NULL;
jack_slist_free (tmp);

break;
}

prev = tmp;
tmp = tmp->next;
}

return list;
}

static __inline__
unsigned int
jack_slist_length (JSList *list)
{
unsigned int length;

length = 0;
while (list) {
length++;
list = list->next;
}

return length;
}

static __inline__
JSList*
jack_slist_find (JSList *list,
void *data)
{
while (list) {
if (list->data == data)
break;
list = list->next;
}

return list;
}

static __inline__
JSList*
jack_slist_copy (JSList *list)
{
JSList *new_list = NULL;

if (list) {
JSList *last;

new_list = jack_slist_alloc ();
new_list->data = list->data;
last = new_list;
list = list->next;
while (list) {
last->next = jack_slist_alloc ();
last = last->next;
last->data = list->data;
list = list->next;
}
}

return new_list;
}

static __inline__
JSList*
jack_slist_append (JSList *list,
void *data)
{
JSList *new_list;
JSList *last;

new_list = jack_slist_alloc ();
new_list->data = data;

if (list) {
last = jack_slist_last (list);
last->next = new_list;

return list;
} else
return new_list;
}

static __inline__
JSList*
jack_slist_sort_merge (JSList *l1,
JSList *l2,
JCompareFunc compare_func)
{
JSList list, *l;

l = &list;

while (l1 && l2) {
if (compare_func(l1->data, l2->data) < 0) {
l = l->next = l1;
l1 = l1->next;
} else {
l = l->next = l2;
l2 = l2->next;
}
}
l->next = l1 ? l1 : l2;

return list.next;
}

static __inline__
JSList*
jack_slist_sort (JSList *list,
JCompareFunc compare_func)
{
JSList *l1, *l2;

if (!list)
return NULL;
if (!list->next)
return list;

l1 = list;
l2 = list->next;

while ((l2 = l2->next) != NULL) {
if ((l2 = l2->next) == NULL)
break;
l1 = l1->next;
}
l2 = l1->next;
l1->next = NULL;

return jack_slist_sort_merge (jack_slist_sort (list, compare_func),
jack_slist_sort (l2, compare_func),
compare_func);
}

#endif /* __jack_jslist_h__ */

+ 62
- 0
common/jack/systemdeps.h View File

@@ -0,0 +1,62 @@
/*
Copyright (C) 2004-2006 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef __jack_systemdeps_h__
#define __jack_systemdeps_h__

#ifdef WIN32

#include <windows.h>

#ifdef __MINGW32__
#include <stdint.h>
#include <sys/types.h>
#else
#define __inline__ inline
#define vsnprintf _vsnprintf
#define snprintf _snprintf

typedef char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef long int32_t;
typedef unsigned long uint32_t;
typedef LONGLONG int64_t;
typedef ULONGLONG uint64_t;

#endif

typedef HANDLE pthread_t;
typedef int64_t _jack_time_t;

#endif // WIN32 */

#if defined(__APPLE__) || defined(__linux__)

#include <inttypes.h>
#include <pthread.h>
#include <sys/types.h>

typedef uint64_t _jack_time_t;

#endif // __APPLE__ || __linux__ */


#endif

+ 1
- 7
common/jack/thread.h View File

@@ -25,13 +25,7 @@ extern "C"
{
#endif

#ifdef WIN32
#include <windows.h>
typedef HANDLE pthread_t;
#else
#include <pthread.h>
#endif

#include <jack/systemdeps.h>

/** @file thread.h
*


+ 8
- 30
common/jack/types.h View File

@@ -21,26 +21,8 @@
#ifndef __jack_types_h__
#define __jack_types_h__

#ifdef WIN32
#include <windows.h>
#ifndef __MINGW32__
#define vsnprintf _vsnprintf
#define snprintf _snprintf
typedef char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef long int32_t;
typedef unsigned long uint32_t;
typedef LONGLONG int64_t;
typedef ULONGLONG uint64_t;
#else
#include <stdint.h>
#endif
#include <jack/systemdeps.h>

#else
#include <inttypes.h>
#endif

typedef int32_t jack_shmsize_t;

@@ -59,11 +41,7 @@ typedef uint32_t jack_nframes_t;
* monotonic clock with units of microseconds.
*/

#ifdef WIN32
typedef int64_t jack_time_t;
#else
typedef uint64_t jack_time_t;
#endif
typedef _jack_time_t jack_time_t;

/**
* Maximum size of @a load_init string passed to an internal client
@@ -475,7 +453,7 @@ typedef enum {
#define EXTENDED_TIME_INFO

typedef struct {
/* these four cannot be set from clients: the server sets them */
jack_unique_t unique_1; /**< unique ID */
jack_time_t usecs; /**< monotonic, free-rolling */
@@ -488,7 +466,7 @@ typedef struct {
int32_t bar; /**< current bar */
int32_t beat; /**< current beat-within-bar */
int32_t tick; /**< current tick-within-beat */
double bar_start_tick;
double bar_start_tick;

float beats_per_bar; /**< time signature "numerator" */
float beat_type; /**< time signature "denominator" */
@@ -499,15 +477,15 @@ typedef struct {
double frame_time; /**< current time in seconds */
double next_time; /**< next sequential frame_time
(unless repositioned) */
/* JackBBTFrameOffset fields: */
jack_nframes_t bbt_offset; /**< frame offset for the BBT fields
(the given bar, beat, and tick
values actually refer to a time
frame_offset frames before the
start of the cycle), should
be assumed to be 0 if
JackBBTFrameOffset is not
start of the cycle), should
be assumed to be 0 if
JackBBTFrameOffset is not
set. If JackBBTFrameOffset is
set and this value is zero, the BBT
time refers to the first frame of this


+ 1
- 1
common/ringbuffer.c View File

@@ -30,7 +30,7 @@
#include <sys/mman.h>
#endif /* USE_MLOCK */
#include "jack/ringbuffer.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"

/* Create a new ringbuffer to hold at least `sz' bytes of data. The
actual buffer size is rounded up to the next power of two. */


+ 1
- 1
common/shm.h View File

@@ -4,7 +4,7 @@
#include <limits.h>
#include <sys/types.h>
#include "types.h"
#include "JackExports.h"
#include "JackCompilerDeps.h"


#define TRUE 1


+ 23
- 17
common/wscript View File

@@ -42,7 +42,11 @@ def create_jack_process_obj(bld, target, sources, uselib = None):
process = bld.create_obj('cpp', 'shlib')
process.env['shlib_PATTERN'] = '%s.so'
process.defines = 'HAVE_CONFIG_H'
process.includes = ['./jack', '.', '..', '../macosx','../windows', '../linux/alsa']
if bld.env()['IS_MACOSX']:
env_includes = ['../macosx', '../posix']
if bld.env()['IS_LINUX']:
env_includes = ['../linux', '../posix', '../linux/alsa']
process.includes = ['.'] + env_includes + ['jack', '..']
process.name = target
process.target = target
process.source = sources
@@ -72,10 +76,8 @@ def build(bld):
'JackMidiPort.cpp',
'JackMidiAPI.cpp',
'JackEngineControl.cpp',
'JackPosixThread.cpp',
'JackShmMem.cpp',
'shm.c',
'JackSocket.cpp',
'JackTime.c',
'JackGlobals.cpp',
'JackDebugClient.cpp',
@@ -83,7 +85,6 @@ def build(bld):
'timestamps.c',
'JackTools.cpp',
'JackMessageBuffer.cpp',
'JackProcessSync.cpp',
]

includes = ['.', './jack', '..']
@@ -91,20 +92,25 @@ def build(bld):

if bld.env()['IS_LINUX']:
common_libsources += [
'JackPosixSemaphore.cpp',
'JackFifo.cpp',
'../posix/JackPosixThread.cpp',
'../posix/JackPosixSemaphore.cpp',
'../posix/JackFifo.cpp',
'../posix/JackProcessSync.cpp',
'../posix/JackSocket.cpp',
]
includes.append('../linux')
includes = ['../linux', '../posix'] + includes
uselib.append('RT')
uselib.append('DL')

if bld.env()['IS_MACOSX']:
common_libsources += [
'../macosx/JackMachSemaphore.cpp',
'../posix/JackProcessSync.cpp',
'../posix/JackPosixThread.cpp',
'../macosx/JackMachThread.cpp',
'../macosx/JackMachSemaphore.cpp',
'../macosx/JackMachPort.cpp',
]
includes += ['../macosx', '../macosx/RPC']
includes = ['../macosx', '../macosx/RPC', '../posix'] + includes

serverlib = bld.create_obj('cpp', 'shlib')
serverlib.features.append('cc')
@@ -124,8 +130,8 @@ def build(bld):
'JackLoopbackDriver.cpp',
'JackServer.cpp',
'JackThreadedDriver.cpp',
'JackRestartThreadedDriver.cpp',
'JackWaitThreadedDriver.cpp',
'JackRestartThreadedDriver.cpp',
'JackWaitThreadedDriver.cpp',
'JackServerAPI.cpp',
'JackDriverLoader.cpp',
'JackServerGlobals.cpp',
@@ -136,10 +142,10 @@ def build(bld):

if bld.env()['IS_LINUX']:
serverlib.source += [
'JackSocketServerChannel.cpp',
'JackSocketNotifyChannel.cpp',
'JackSocketServerNotifyChannel.cpp',
'JackNetUnixSocket.cpp',
'../posix/JackSocketServerChannel.cpp',
'../posix/JackSocketNotifyChannel.cpp',
'../posix/JackSocketServerNotifyChannel.cpp',
'../posix/JackNetUnixSocket.cpp',
]

if bld.env()['IS_MACOSX']:
@@ -149,7 +155,7 @@ def build(bld):
'../macosx/JackMachServerNotifyChannel.cpp',
'../macosx/JackMacEngineRPC.cpp',
'../macosx/RPC/JackRPCClientUser.c',
'JackNetUnixSocket.cpp',
'../posix/JackNetUnixSocket.cpp',
]

serverlib.vnum = bld.env()['JACK_API_VERSION']
@@ -178,7 +184,7 @@ def build(bld):

if bld.env()['IS_LINUX']:
clientlib.source += [
'JackSocketClientChannel.cpp',
'../posix/JackSocketClientChannel.cpp',
]

if bld.env()['IS_MACOSX']:


linux/dbus/controller.c → dbus/controller.c View File


linux/dbus/controller.h → dbus/controller.h View File


linux/dbus/controller_iface_configure.c → dbus/controller_iface_configure.c View File


linux/dbus/controller_iface_control.c → dbus/controller_iface_control.c View File


linux/dbus/controller_iface_introspectable.c → dbus/controller_iface_introspectable.c View File


linux/dbus/controller_iface_patchbay.c → dbus/controller_iface_patchbay.c View File


linux/dbus/controller_iface_transport.c → dbus/controller_iface_transport.c View File


linux/dbus/controller_internal.h → dbus/controller_internal.h View File


linux/dbus/jackdbus.c → dbus/jackdbus.c View File


linux/dbus/jackdbus.h → dbus/jackdbus.h View File


linux/dbus/list.h → dbus/list.h View File


linux/dbus/org.jackaudio.service.in → dbus/org.jackaudio.service.in View File


linux/dbus/sigsegv.c → dbus/sigsegv.c View File


linux/dbus/sigsegv.h → dbus/sigsegv.h View File


linux/dbus/wscript → dbus/wscript View File

@@ -64,7 +64,12 @@ def build(bld):
return

obj = bld.create_obj('cc', 'program')
obj.includes = ['.', '../../', '../../common', '../../common/jack']
if bld.env()['IS_LINUX']:
sysdeps_dbus_include = ['../linux', '../posix']
if bld.env()['IS_MACOSX']:
sysdeps_dbus_include = ['../macosx', '../posix']

obj.includes = sysdeps_dbus_include + ['.', '../', '../common', '../common/jack']
obj.source = [
'jackdbus.c',
'controller.c',

linux/dbus/xml.c → dbus/xml.c View File


linux/dbus/xml.h → dbus/xml.h View File


linux/dbus/xml_expat.c → dbus/xml_expat.c View File


linux/dbus/xml_libxml.c → dbus/xml_libxml.c View File


linux/dbus/xml_nop.c → dbus/xml_nop.c View File


linux/dbus/xml_write_raw.c → dbus/xml_write_raw.c View File


+ 8
- 4
example-clients/wscript View File

@@ -56,10 +56,14 @@ def configure(conf):
conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.is_defined('HAVE_SNDFILE')

def build(bld):
if bld.env()['IS_LINUX']:
os_incdir = ['../linux', '../posix']
if bld.env()['IS_MACOSX']:
os_incdir = ['../macosx', '../posix']
for example_program, example_program_source in example_programs.items():
prog = bld.create_obj('cpp', 'program')
prog.features.append('cc')
prog.includes = ['../common/jack', '../common']
prog.includes = os_incdir + ['../common/jack', '../common']
prog.source = example_program_source
if bld.env()['IS_MACOSX']:
prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
@@ -76,7 +80,7 @@ def build(bld):
#if bld.env()['BUILD_EXAMPLE_CLIENT_TRANSPORT']
if bld.env()['BUILD_EXAMPLE_CLIENT_TRANSPORT'] == True and bld.env()['IS_LINUX'] == True:
prog = bld.create_obj('cc', 'program')
prog.includes = ['../common/jack', '../common']
prog.includes = os_incdir + ['../common/jack', '../common']
prog.source = 'transport.c'
if bld.env()['IS_MACOSX']:
prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
@@ -91,7 +95,7 @@ def build(bld):

if bld.env()['BUILD_EXAMPLE_CLIENT_REC'] == True:
prog = bld.create_obj('cc', 'program')
prog.includes = ['../common/jack', '../common']
prog.includes = os_incdir + ['../common/jack', '../common']
prog.source = 'capture_client.c'
if bld.env()['IS_MACOSX']:
prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
@@ -107,7 +111,7 @@ def build(bld):
for example_lib, example_lib_source in example_libs.items():
lib = bld.create_obj('cc', 'shlib')
lib.env['shlib_PATTERN'] = '%s.so'
lib.includes = ['../common/jack', '../common']
lib.includes = os_incdir + ['../common/jack', '../common']
lib.target = example_lib
lib.source = example_lib_source
if bld.env()['IS_MACOSX']:


+ 77
- 0
linux/JackAtomic_os.h View File

@@ -0,0 +1,77 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

#ifndef __JackAtomic_linux__
#define __JackAtomic_linux__

#include "JackTypes.h"

#ifdef __PPC__

static inline int CAS(register UInt32 value, register UInt32 newvalue, register volatile void* addr)
{
register int result;
register UInt32 tmp;
asm volatile (
"# CAS \n"
" lwarx %4, 0, %1 \n" // creates a reservation on addr
" cmpw %4, %2 \n" // test value at addr
" bne- 1f \n"
" sync \n" // synchronize instructions
" stwcx. %3, 0, %1 \n" // if the reservation is not altered
// stores the new value at addr
" bne- 1f \n"
" li %0, 1 \n"
" b 2f \n"
"1: \n"
" li %0, 0 \n"
"2: \n"
: "=r" (result)
: "r" (addr), "r" (value), "r" (newvalue), "r" (tmp)
);
return result;
}

#endif

#if defined(__i386__) || defined(__x86_64__)

#ifdef __SMP__
# define LOCK "lock ; "
#else
# define LOCK ""
#endif

static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr)
{
register char ret;
__asm__ __volatile__ (
"# CAS \n\t"
LOCK "cmpxchg %2, (%1) \n\t"
"sete %0 \n\t"
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
return ret;
}

#endif

#endif


+ 75
- 0
linux/JackPlatformPlug_os.h View File

@@ -0,0 +1,75 @@
/*
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

#ifndef __JackPlatformPlug_linux__
#define __JackPlatformPlug_linux__

namespace Jack
{
struct JackRequest;
struct JackResult;
class JackPosixThread;
class JackFifo;

class JackSocketServerChannel;
class JackSocketClientChannel;
class JackSocketServerNotifyChannel;
class JackSocketNotifyChannel;
class JackClientSocket;
class JackNetUnixSocket;
}

/* __JackPlatformThread__ */
#include "JackPosixThread.h"
namespace Jack { typedef JackPosixThread JackThread; }

/* __JackPlatformSynchro__ client activation */
#include "JackFifo.h"
namespace Jack { typedef JackFifo JackSynchro; }

/* __JackPlatformChannelTransaction__ */
#include "JackSocket.h"
namespace Jack { typedef JackClientSocket JackChannelTransaction; }

#include "JackProcessSync.h"
/* __JackPlatformProcessSync__ */
/* Only on windows a special JackProcessSync is used. It is directly defined by including JackProcessSync.h here */

/* __JackPlatformServerChannel__ */
#include "JackSocketServerChannel.h"
namespace Jack { typedef JackSocketServerChannel JackServerChannel; }

/* __JackPlatformClientChannel__ */
#include "JackSocketClientChannel.h"
namespace Jack { typedef JackSocketClientChannel JackClientChannel; }

/* __JackPlatformServerNotifyChannel__ */
#include "JackSocketServerNotifyChannel.h"
namespace Jack { typedef JackSocketServerNotifyChannel JackServerNotifyChannel; }

/* __JackPlatformNotifyChannel__ */
#include "JackSocketNotifyChannel.h"
namespace Jack { typedef JackSocketNotifyChannel JackNotifyChannel; }

/* __JackPlatformNetSocket__ */
#include "JackNetUnixSocket.h"
namespace Jack { typedef JackNetUnixSocket JackNetSocket; }

#endif

+ 61
- 0
linux/JackTime_os.h View File

@@ -0,0 +1,61 @@
/*
Copyright (C) 2001-2003 Paul Davis
Copyright (C) 2004-2008 Grame

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

#ifndef __JackTime_linux__
#define __JackTime_linux__

#ifdef __cplusplus
extern "C"
{
#endif

#include <unistd.h>

static inline void JackSleep(long usec)
{
usleep(usec);
}

#ifdef GETCYCLE_TIME
#include "cycles.h"
extern jack_time_t __jack_cpu_mhz;
jack_time_t GetMhz();
void InitTime();
static inline jack_time_t GetMicroSeconds(void)
{
return get_cycles() / __jack_cpu_mhz;
}
#else
#include <time.h>
void InitTime();
static inline jack_time_t GetMicroSeconds(void)
{
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return (jack_time_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
}
#endif

#ifdef __cplusplus
}
#endif

#endif


+ 2
- 2
linux/alsa/JackAlsaAdapter.h View File

@@ -25,7 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include <assert.h>
#include <alsa/asoundlib.h>
#include "JackAudioAdapterInterface.h"
#include "JackPlatformThread.h"
#include "JackPlatformPlug.h"
#include "JackError.h"
#include "jack.h"
#include "jslist.h"
@@ -603,7 +603,7 @@ extern "C"
{
#endif

#include "JackExports.h"
#include "JackCompilerDeps.h"
#include "driver_interface.h"

EXPORT jack_driver_desc_t* jack_get_descriptor();


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save