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