win-pvdrivers

view liblfds.6/src/single_dir_for_windows_kernel/abstraction_aligned_malloc.c @ 1025:aa2e51f67f7c

Fix hibernate under Win8. Change debugprints.
author James Harper <james.harper@bendigoit.com.au>
date Tue Feb 19 15:14:53 2013 +1100 (2013-02-19)
parents 6300617040e0
children
line source
1 #include "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
15 */
17 void *abstraction_aligned_malloc( size_t size, size_t align_in_bytes )
18 {
19 void
20 *rv;
22 rv = _aligned_malloc( size, align_in_bytes );
24 return( rv );
25 }
27 #endif
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)
42 */
44 void *abstraction_aligned_malloc( size_t size, size_t align_in_bytes )
45 {
46 int
47 rv;
49 void
50 *memory;
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
55 if( rv != 0 )
56 memory = NULL;
58 return( memory );
59 }
61 #endif
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
75 */
77 void *abstraction_aligned_malloc( size_t size, size_t align_in_bytes )
78 {
79 void
80 *rv;
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
86 compiler warning
87 */
89 align_in_bytes;
91 rv = ExAllocatePoolWithTag( NonPagedPool, size, 'sdfl' );
93 return( rv );
94 }
96 #endif