1 /*
2  Copyright (C) 2004-2008 Grame
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU Lesser General Public License as published by
6  the Free Software Foundation; either version 2.1 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  GNU Lesser General Public License for more details.
13 
14  You should have received a copy of the GNU Lesser General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 
18  */
19 
20 #ifndef __JackShmMem_WIN32__
21 #define __JackShmMem_WIN32__
22 
23 #ifdef __MINGW32__
24 #include <winsock2.h>
25 #endif
26 #include <windows.h>
27 
CHECK_MLOCK(void * ptr,size_t size)28 inline bool CHECK_MLOCK(void* ptr, size_t size)
29 {
30     if (!VirtualLock((ptr), (size))) {
31         SIZE_T minWSS, maxWSS;
32         HANDLE hProc = GetCurrentProcess();
33         if (GetProcessWorkingSetSize(hProc, &minWSS, &maxWSS)) {
34             const size_t increase = size + (10 * 4096);
35             maxWSS += increase;
36             minWSS += increase;
37             if (!SetProcessWorkingSetSize(hProc, minWSS, maxWSS)) {
38                 jack_error("SetProcessWorkingSetSize error = %d", GetLastError());
39                 return false;
40             } else if (!VirtualLock((ptr), (size))) {
41                 jack_error("VirtualLock error = %d", GetLastError());
42                 return false;
43             } else {
44                 return true;
45             }
46         } else {
47             return false;
48         }
49     } else {
50         return true;
51     }
52 }
53 
54 #define CHECK_MUNLOCK(ptr, size) (VirtualUnlock((ptr), (size)) != 0)
55 #define CHECK_MLOCKALL()(false)
56 #define CHECK_MUNLOCKALL()(false)
57 
58 #endif
59 
60