mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-05 06:59:32 +03:00
add version check for mingw compilation and add FlsAlloc definitions if required
This commit is contained in:
parent
0a3e5bb699
commit
34d3b8c47f
2 changed files with 13 additions and 7 deletions
|
@ -286,6 +286,12 @@ static void _mi_thread_done(mi_heap_t* default_heap);
|
||||||
// use thread local storage keys to detect thread ending
|
// use thread local storage keys to detect thread ending
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <fibersapi.h>
|
#include <fibersapi.h>
|
||||||
|
#if (_WIN32_WINNT < 0x600) // before Windows Vista
|
||||||
|
WINBASEAPI DWORD WINAPI FlsAlloc( _In_opt_ PFLS_CALLBACK_FUNCTION lpCallback );
|
||||||
|
WINBASEAPI PVOID WINAPI FlsGetValue( _In_ DWORD dwFlsIndex );
|
||||||
|
WINBASEAPI BOOL WINAPI FlsSetValue( _In_ DWORD dwFlsIndex, _In_opt_ PVOID lpFlsData );
|
||||||
|
WINBASEAPI BOOL WINAPI FlsFree(_In_ DWORD dwFlsIndex);
|
||||||
|
#endif
|
||||||
static DWORD mi_fls_key = (DWORD)(-1);
|
static DWORD mi_fls_key = (DWORD)(-1);
|
||||||
static void NTAPI mi_fls_done(PVOID value) {
|
static void NTAPI mi_fls_done(PVOID value) {
|
||||||
if (value!=NULL) _mi_thread_done((mi_heap_t*)value);
|
if (value!=NULL) _mi_thread_done((mi_heap_t*)value);
|
||||||
|
|
6
src/os.c
6
src/os.c
|
@ -823,7 +823,7 @@ and possibly associated with a specific NUMA node. (use `numa_node>=0`)
|
||||||
-----------------------------------------------------------------------------*/
|
-----------------------------------------------------------------------------*/
|
||||||
#define MI_HUGE_OS_PAGE_SIZE (GiB)
|
#define MI_HUGE_OS_PAGE_SIZE (GiB)
|
||||||
|
|
||||||
#if defined(WIN32) && (MI_INTPTR_SIZE >= 8)
|
#if defined(_WIN32) && (MI_INTPTR_SIZE >= 8)
|
||||||
static void* mi_os_alloc_huge_os_pagesx(void* addr, size_t size, int numa_node)
|
static void* mi_os_alloc_huge_os_pagesx(void* addr, size_t size, int numa_node)
|
||||||
{
|
{
|
||||||
mi_assert_internal(size%GiB == 0);
|
mi_assert_internal(size%GiB == 0);
|
||||||
|
@ -1016,8 +1016,8 @@ void _mi_os_free_huge_pages(void* p, size_t size, mi_stats_t* stats) {
|
||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
Support NUMA aware allocation
|
Support NUMA aware allocation
|
||||||
-----------------------------------------------------------------------------*/
|
-----------------------------------------------------------------------------*/
|
||||||
#ifdef WIN32
|
#ifdef _WIN32
|
||||||
#ifdef __MINGW32__ // until mingw updates its headers
|
#if (_WIN32_WINNT < 0x601) // before Win7
|
||||||
typedef struct _PROCESSOR_NUMBER { WORD Group; BYTE Number; BYTE Reserved; } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER;
|
typedef struct _PROCESSOR_NUMBER { WORD Group; BYTE Number; BYTE Reserved; } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER;
|
||||||
WINBASEAPI VOID WINAPI GetCurrentProcessorNumberEx(_Out_ PPROCESSOR_NUMBER ProcNumber);
|
WINBASEAPI VOID WINAPI GetCurrentProcessorNumberEx(_Out_ PPROCESSOR_NUMBER ProcNumber);
|
||||||
WINBASEAPI BOOL WINAPI GetNumaProcessorNodeEx(_In_ PPROCESSOR_NUMBER Processor, _Out_ PUSHORT NodeNumber);
|
WINBASEAPI BOOL WINAPI GetNumaProcessorNodeEx(_In_ PPROCESSOR_NUMBER Processor, _Out_ PUSHORT NodeNumber);
|
||||||
|
|
Loading…
Add table
Reference in a new issue