Move windows headers to port.c (#1302)
* [MSVC-MingW] Move windows headers to port.c
This prevents the inclusion of windows.h. into all header files using
FreeRTOS.h and thus defining several macros conflicting with common
definitions.
* [MSVC-MingW] Include correct header for compiler intrinsics
---------
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
diff --git a/portable/MSVC-MingW/port.c b/portable/MSVC-MingW/port.c
index 9ce0c1b..74dd777 100644
--- a/portable/MSVC-MingW/port.c
+++ b/portable/MSVC-MingW/port.c
@@ -33,6 +33,14 @@
#include "FreeRTOS.h"
#include "task.h"
+#ifdef WIN32_LEAN_AND_MEAN
+ #include <winsock2.h>
+#else
+ #include <winsock.h>
+#endif
+
+#include <timeapi.h>
+
#ifdef __GNUC__
#include "mmsystem.h"
#else
diff --git a/portable/MSVC-MingW/portmacro.h b/portable/MSVC-MingW/portmacro.h
index eb94758..37bfb25 100644
--- a/portable/MSVC-MingW/portmacro.h
+++ b/portable/MSVC-MingW/portmacro.h
@@ -29,17 +29,6 @@
#ifndef PORTMACRO_H
#define PORTMACRO_H
-#ifdef WIN32_LEAN_AND_MEAN
- #include <winsock2.h>
-#else
- #include <winsock.h>
-#endif
-
-#include <windows.h>
-#include <timeapi.h>
-#include <mmsystem.h>
-#include <winbase.h>
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -156,22 +145,25 @@
: "cc" )
#else /* __GNUC__ */
+ #include <intrin.h>
/* BitScanReverse returns the bit position of the most significant '1'
* in the word. */
#if defined( __x86_64__ ) || defined( _M_X64 )
+ #pragma intrinsic(_BitScanReverse64)
#define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) \
do \
{ \
- DWORD ulTopPriority; \
+ unsigned long ulTopPriority; \
_BitScanReverse64( &ulTopPriority, ( uxReadyPriorities ) ); \
uxTopPriority = ulTopPriority; \
} while( 0 )
#else /* #if defined( __x86_64__ ) || defined( _M_X64 ) */
+ #pragma intrinsic(_BitScanReverse)
- #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) _BitScanReverse( ( DWORD * ) &( uxTopPriority ), ( uxReadyPriorities ) )
+ #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) _BitScanReverse( ( unsigned long * ) &( uxTopPriority ), ( uxReadyPriorities ) )
#endif /* #if defined( __x86_64__ ) || defined( _M_X64 ) */