Browse Source

Correct memory locking code on Windows

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1369 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.62
sletz 19 years ago
parent
commit
d0d2efca6f
2 changed files with 10 additions and 16 deletions
  1. +6
    -16
      common/JackShmMem.cpp
  2. +4
    -0
      common/JackShmMem.h

+ 6
- 16
common/JackShmMem.cpp View File

@@ -93,29 +93,19 @@ void JackShmMem::operator delete(void* p, size_t size)

void LockMemoryImp(void* ptr, size_t size)
{
#ifdef WIN32
int res = VirtualLock(ptr, size);
#else
int res = mlock(ptr, size);
#endif
if (res != 0) {
jack_error("Cannot lock down memory area (%s)", strerror(errno));
if (CHECK_MLOCK(ptr, size)) {
JackLog("Succeeded in locking %u byte memory area\n", size);
} else {
JackLog("Succeeded in locking %u byte memory area\n", size);
jack_error("Cannot lock down memory area (%s)", strerror(errno));
}
}

void UnlockMemoryImp(void* ptr, size_t size)
{
#ifdef WIN32
int res = VirtualUnlock(ptr, size);
#else
int res = munlock(ptr, size);
#endif
if (res != 0) {
jack_error("Cannot unlock down memory area (%s)", strerror(errno));
if (CHECK_MUNLOCK(ptr, size)) {
JackLog("Succeeded in unlocking %u byte memory area\n", size);
} else {
JackLog("Succeeded in unlocking %u byte memory area\n", size);
jack_error("Cannot unlock down memory area (%s)", strerror(errno));
}
}



+ 4
- 0
common/JackShmMem.h View File

@@ -30,9 +30,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#ifdef WIN32
#include <windows.h>
#define CHECK_MLOCK(ptr, size) (VirtualLock((ptr), (size)) != 0)
#define CHECK_MUNLOCK(ptr, size) (VirtualUnlock((ptr), (size)) != 0)
#else
#include <sys/types.h>
#include <sys/mman.h>
#define CHECK_MLOCK(ptr, size) (munlock((ptr), (size)) == 0)
#define CHECK_MUNLOCK(ptr, size) (munlock((ptr), (size)) == 0)
#endif
namespace Jack


Loading…
Cancel
Save