1 #include "lfds600_abstraction_internal.h"
7 /****************************************************************************/
8 #if (defined _WIN32 && defined _MSC_VER && !defined WIN_KERNEL_BUILD)
10 /* TRD : any Windows (user-mode) on any CPU with the Microsoft C compiler
12 _WIN32 indicates 64-bit or 32-bit Windows
13 _MSC_VER indicates Microsoft C compiler
14 !WIN_KERNEL_BUILD indicates Windows user-mode
17 void *lfds600_abstraction_aligned_malloc( size_t size, size_t align_in_bytes )
22 rv = _aligned_malloc( size, align_in_bytes );
33 /****************************************************************************/
34 #if (_XOPEN_SOURCE >= 600)
36 /* TRD : any OS on any CPU with any compiler with POSIX 6.00 or better
38 _XOPEN_SOURCE is actually set by the user, not by the compiler
39 it is the way the user signals to the compiler what
40 level of POSIX should be available
41 (it assumes of course the compiler has support for the given level of POSIX requested)
44 void *lfds600_abstraction_aligned_malloc( size_t size, size_t align_in_bytes )
52 rv = posix_memalign( &memory, align_in_bytes, size );
54 // TRD : posix_memalign returns 0 on success, docs do not say *memory == NULL on fail
67 /****************************************************************************/
68 #if (defined _WIN32 && defined _MSC_VER && defined WIN_KERNEL_BUILD)
70 /* TRD : any Windows (kernel) on any CPU with the Microsoft C compiler
72 _WIN32 indicates 64-bit or 32-bit Windows
73 _MSC_VER indicates Microsoft C compiler
74 WIN_KERNEL_BUILD indicates Windows kernel
77 void *lfds600_abstraction_aligned_malloc( size_t size, size_t align_in_bytes )
82 /* TRD : ExAllocatePoolWithTag() allocates memory aligned on 8 bytes on 32-bit CPUs
83 and on 16 bytes on 64-bit CPUs, which is what we want
85 as such, align_in_bytes is not needed; we must refer to it to avoid the
91 rv = ExAllocatePoolWithTag( NonPagedPool, size, 'sdfl' );