- Turns out MSVC wasn't compiling one file because it had the same name as another...
authorAlex Ionescu <aionescu@gmail.com>
Mon, 29 Jan 2007 05:13:13 +0000 (05:13 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Mon, 29 Jan 2007 05:13:13 +0000 (05:13 +0000)
- The structures for vista symlink support are not in winnt.h, they are only in the ntifs.h. Removed them from our winnt.h, and temporarily added them to the .c file itself.
- Implemented intrinsic interlocked functions instead of using the depcreated interlck lib.
- Fixed a bug in the MemoryBarrier intrinsic.
- Included intrin.h by default when using the NDK now, since native apps need Interlocked() functions and ntdll doesn't provide them, and they can't link to kernel32, and libintrlck is deprecated/sucks.
- Fixed stub of BaseCheckAppcompatCache.

svn path=/trunk/; revision=25659

19 files changed:
reactos/dll/win32/kernel32/file/create.c
reactos/dll/win32/kernel32/file/file.c
reactos/dll/win32/kernel32/k32.h
reactos/dll/win32/kernel32/kernel32.rbuild
reactos/dll/win32/kernel32/misc/console.c
reactos/dll/win32/kernel32/misc/dllmain.c
reactos/dll/win32/kernel32/misc/recovery.c
reactos/dll/win32/kernel32/misc/stubs.c
reactos/dll/win32/kernel32/process/procsup.c [moved from reactos/dll/win32/kernel32/process/create.c with 100% similarity]
reactos/dll/win32/kernel32/synch/condvar.c
reactos/dll/win32/kernel32/synch/event.c
reactos/dll/win32/kernel32/synch/mutex.c
reactos/dll/win32/kernel32/synch/sem.c
reactos/dll/win32/kernel32/synch/timer.c
reactos/dll/win32/kernel32/synch/wait.c
reactos/include/ndk/ntndk.h
reactos/include/psdk/intrin.h
reactos/include/psdk/winbase.h
reactos/include/psdk/winnt.h

index 47c3f42..e7e6776 100644 (file)
 
 /* INCLUDES *****************************************************************/
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
 #include "../include/debug.h"
 
 
+#define SYMLINK_FLAG_RELATIVE   1
+
+typedef struct _REPARSE_DATA_BUFFER {
+    ULONG  ReparseTag;
+    USHORT ReparseDataLength;
+    USHORT Reserved;
+    union {
+        struct {
+            USHORT SubstituteNameOffset;
+            USHORT SubstituteNameLength;
+            USHORT PrintNameOffset;
+            USHORT PrintNameLength;
+            ULONG Flags;
+            WCHAR PathBuffer[1];
+        } SymbolicLinkReparseBuffer;
+        struct {
+            USHORT SubstituteNameOffset;
+            USHORT SubstituteNameLength;
+            USHORT PrintNameOffset;
+            USHORT PrintNameLength;
+            WCHAR PathBuffer[1];
+        } MountPointReparseBuffer;
+        struct {
+            UCHAR  DataBuffer[1];
+        } GenericReparseBuffer;
+    };
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+
+#define REPARSE_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
+
 /* FUNCTIONS ****************************************************************/
 
 /*
@@ -391,13 +417,13 @@ CreateSymbolicLinkW(IN LPCWSTR lpSymlinkFileName,
     ULONG dwCreateOptions;
     DWORD dwErr;
 
-    if(!lpSymlinkFileName || !lpTargetFileName || (dwFlags | SYMLINK_FLAG_DIRECTORY) != SYMLINK_FLAG_DIRECTORY)
+    if(!lpSymlinkFileName || !lpTargetFileName || (dwFlags | SYMBOLIC_LINK_FLAG_DIRECTORY) != SYMBOLIC_LINK_FLAG_DIRECTORY)
     {
         SetLastError(ERROR_INVALID_PARAMETER);
         return FALSE;
     }
 
-    if(dwFlags & SYMLINK_FLAG_DIRECTORY)
+    if(dwFlags & SYMBOLIC_LINK_FLAG_DIRECTORY)
         dwCreateOptions = FILE_DIRECTORY_FILE;
     else
         dwCreateOptions = FILE_NON_DIRECTORY_FILE;
@@ -468,8 +494,8 @@ CreateSymbolicLinkW(IN LPCWSTR lpSymlinkFileName,
 
     pBufTail = (PBYTE)(pReparseData->SymbolicLinkReparseBuffer.PathBuffer);
 
-    pReparseData->ReparseTag = IO_REPARSE_TAG_SYMLINK;
-    pReparseData->ReparseDataLength = cbReparseData - REPARSE_DATA_BUFFER_HEADER_SIZE;
+    pReparseData->ReparseTag = (ULONG)IO_REPARSE_TAG_SYMLINK;
+    pReparseData->ReparseDataLength = (USHORT)cbReparseData - REPARSE_DATA_BUFFER_HEADER_SIZE;
     pReparseData->Reserved = 0;
 
     pReparseData->SymbolicLinkReparseBuffer.SubstituteNameOffset = 0;
@@ -478,7 +504,7 @@ CreateSymbolicLinkW(IN LPCWSTR lpSymlinkFileName,
     RtlCopyMemory(pBufTail, TargetFileName.Buffer, TargetFileName.Length);
 
     pReparseData->SymbolicLinkReparseBuffer.PrintNameOffset = pReparseData->SymbolicLinkReparseBuffer.SubstituteNameLength;
-    pReparseData->SymbolicLinkReparseBuffer.PrintNameLength = cbPrintName;
+    pReparseData->SymbolicLinkReparseBuffer.PrintNameLength = (USHORT)cbPrintName;
     pBufTail += pReparseData->SymbolicLinkReparseBuffer.PrintNameOffset;
     RtlCopyMemory(pBufTail, lpTargetFileName, cbPrintName);
 
@@ -574,13 +600,13 @@ Cleanup:
  * @implemented
  */
 BOOLEAN
-STDCALL
+NTAPI
 CreateSymbolicLinkA(IN LPCSTR lpSymlinkFileName,
                     IN LPCSTR lpTargetFileName,
                     IN DWORD dwFlags)
 {
     PWCHAR SymlinkW, TargetW;
-    BOOL Ret;
+    BOOLEAN Ret;
 
     if(!lpSymlinkFileName || !lpTargetFileName)
     {
index 6bfeb14..b5e8b72 100644 (file)
 
 /* INCLUDES *****************************************************************/
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index 6922bf9..6121ac6 100755 (executable)
@@ -12,7 +12,6 @@
 /* INCLUDES ******************************************************************/
 
 /* PSDK/NDK Headers */
-#define DBG 1
 #define WIN32_NO_STATUS
 #define _KERNEL32_
 #include <windows.h>
index aa75cab..fb4ee6e 100644 (file)
@@ -80,7 +80,7 @@
        </directory>
        <directory name="process">
                <file>cmdline.c</file>
-               <file>create.c</file>
+               <file>procsup.c</file>
                <file>job.c</file>
                <file>proc.c</file>
                <file>session.c</file>
        <define name="WINVER">0x0500</define>
        <library>kernel32_base</library>
        <library>pseh</library>
-       <library>intrlck</library>
        <library>ntdll</library>
        <linkerflag>-lgcc</linkerflag>
        <linkerflag>-nostartfiles</linkerflag>
index 783585e..22b9215 100644 (file)
 
 /* INCLUDES ******************************************************************/
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index e3ce2f4..e91c44f 100644 (file)
@@ -323,9 +323,10 @@ DllMain(HANDLE hDll,
             if (hDll == (HANDLE)0x7c800000)
             {
                 PULONG Eip;
-                Eip = (PULONG)*(PULONG)NtCurrentTeb()->Tib.ExceptionList +
-                       0x9 +
-                       FIELD_OFFSET(CONTEXT, Eip) / sizeof(ULONG);
+                __debugbreak();
+                Eip = (PULONG)*(PULONG)*(PULONG)NtCurrentTeb()->Tib.ExceptionList +
+                    0x9 +
+                    FIELD_OFFSET(CONTEXT, Eip) / sizeof(ULONG);
                 *Eip = (ULONG)BaseProcessStartThunk;
             }
         }
@@ -466,4 +467,43 @@ DllMain(HANDLE hDll,
     return TRUE;
 }
 
+LONG
+WINAPI
+InterlockedIncrement(IN OUT LONG volatile *lpAddend)
+{
+    return _InterlockedIncrement(lpAddend);
+}
+
+LONG
+WINAPI
+InterlockedDecrement(IN OUT LONG volatile *lpAddend)
+{
+    return _InterlockedDecrement(lpAddend);
+}
+
+LONG
+WINAPI
+InterlockedExchange(IN OUT LONG volatile *Target,
+                    IN LONG Value)
+{
+    return _InterlockedExchange(Target, Value);
+}
+
+LONG
+WINAPI
+InterlockedExchangeAdd(IN OUT LONG volatile *Addend,
+                       IN LONG Value)
+{
+    return _InterlockedExchangeAdd(Addend, Value);
+}
+
+LONG
+WINAPI
+InterlockedCompareExchange(IN OUT LONG volatile *Destination,
+                           IN LONG Exchange,
+                           IN LONG Comperand)
+{
+    return _InterlockedCompareExchange(Destination, Exchange, Comperand);
+}
+
 /* EOF */
index 105c340..eb5500d 100644 (file)
  *                  10/28/2005 Created stubs (w3)
  */
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index dd70dcd..8a6c29c 100644 (file)
@@ -45,10 +45,16 @@ BaseFlushAppcompatCache(VOID)
 /*
  * @unimplemented
  */
-VOID STDCALL
-BaseCheckAppcompatCache(ULONG Unknown1, ULONG Unknown2, ULONG Unknown3, ULONG Unknown4)
+BOOL
+WINAPI
+BaseCheckAppcompatCache(ULONG Unknown1,
+                        ULONG Unknown2,
+                        ULONG Unknown3,
+                        PULONG Unknown4)
 {
     STUB;
+    if (Unknown4) *Unknown4 = 0;
+    return TRUE;
 }
 
 /*
index f5de7c0..62bb676 100644 (file)
@@ -4,10 +4,6 @@
  * PROGRAMMER:      Thomas Weidenmueller <w3seek@reactos.com>
  */
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index 43c1ca9..b629d08 100644 (file)
@@ -8,10 +8,6 @@
 
 /* INCLUDES *****************************************************************/
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index a7bd3db..ec4e8c8 100644 (file)
@@ -8,10 +8,6 @@
 
 /* INCLUDES *****************************************************************/
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index 57b9423..89cf614 100644 (file)
@@ -8,10 +8,6 @@
 
 /* INCLUDES *****************************************************************/
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index 4170eea..f4610a3 100644 (file)
@@ -8,10 +8,6 @@
 
 /* INCLUDES *****************************************************************/
 
-/* File contains Vista Semantics */
-//#undef _WIN32_WINNT
-//#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index 4293951..af61473 100644 (file)
@@ -8,10 +8,6 @@
 
 /* INCLUDES *****************************************************************/
 
-/* File contains Vista Semantics */
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-
 #include <k32.h>
 
 #define NDEBUG
index 30bc239..0547f9f 100644 (file)
@@ -38,6 +38,7 @@ Author:
 #include <excpt.h>          // C Standard Header
 #include <stdarg.h>         // C Standard Header
 #include <umtypes.h>        // General Definitions
+#include <intrin.h>         // Use Inlined Intrinsics
 
 //
 // Type Headers
@@ -81,6 +82,9 @@ Author:
 #include <sefuncs.h>        // Security Subsystem Functions
 #include <umfuncs.h>        // User-Mode NT Library Functions
 
+//
+// Assembly Support
+//
 #include <asm.h>            // Assembly Offsets
 
 #ifdef _MSC_VER
index b3eb159..7955ac4 100644 (file)
@@ -82,7 +82,7 @@
 #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40100
 #define _ReadWriteBarrier() __sync_synchronize()
 #else
-static __inline__ __attribute__((always_inline)) _MemoryBarrier(void)
+static void __inline__ __attribute__((always_inline)) _MemoryBarrier(void)
 {
        __asm__ __volatile__("" : : : "memory");
 }
index 8562a97..ebdca87 100644 (file)
@@ -504,7 +504,7 @@ extern "C" {
 #define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE 0x00000008
 #define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS 0x00000010
 #if (_WIN32_WINNT >= 0x0600)
-#define SYMLINK_FLAG_DIRECTORY 0x1
+#define SYMBOLIC_LINK_FLAG_DIRECTORY 0x1
 #endif
 #endif /* (_WIN32_WINNT >= 0x0501) */
 #if (_WIN32_WINNT >= 0x0500)
@@ -1683,20 +1683,20 @@ VOID WINAPI InitializeSRWLock(PSRWLOCK);
 #endif
 #ifndef __INTERLOCKED_DECLARED
 #define __INTERLOCKED_DECLARED
-LONG WINAPI InterlockedCompareExchange(LPLONG,LONG,LONG);
+LONG WINAPI InterlockedCompareExchange(IN OUT LONG volatile *,LONG,LONG);
 /* PVOID WINAPI InterlockedCompareExchangePointer(PVOID*,PVOID,PVOID); */
 #define InterlockedCompareExchangePointer(d,e,c) \
     (PVOID)InterlockedCompareExchange((LPLONG)(d),(LONG)(e),(LONG)(c))
-LONG WINAPI InterlockedDecrement(LPLONG);
-LONG WINAPI InterlockedExchange(LPLONG,LONG);
+LONG WINAPI InterlockedDecrement(IN OUT LONG volatile *);
+LONG WINAPI InterlockedExchange(IN OUT LONG volatile *,LONG);
 /* PVOID WINAPI InterlockedExchangePointer(PVOID*,PVOID); */
 #define InterlockedExchangePointer(t,v) \
     (PVOID)InterlockedExchange((LPLONG)(t),(LONG)(v))
-LONG WINAPI InterlockedExchangeAdd(LPLONG,LONG);
+LONG WINAPI InterlockedExchangeAdd(IN OUT LONG volatile *,LONG);
 #if (_WIN32_WINNT >= 0x0501)
 PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER);
 #endif
-LONG WINAPI InterlockedIncrement(LPLONG);
+LONG WINAPI InterlockedIncrement(IN OUT LONG volatile *);
 #if (_WIN32_WINNT >= 0x0501)
 PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER);
 PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY);
index faaa0ab..885a176 100644 (file)
@@ -1598,7 +1598,6 @@ typedef VOID (NTAPI *WORKERCALLBACKFUNC)(PVOID);
 #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
 #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
 #define TLS_MINIMUM_AVAILABLE 64
-#define REPARSE_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
 #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
 #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 16384
 #define IO_REPARSE_TAG_RESERVED_ZERO 0
@@ -3306,31 +3305,6 @@ typedef struct _NT_TIB {
        PVOID ArbitraryUserPointer;
        struct _NT_TIB *Self;
 } NT_TIB,*PNT_TIB;
-typedef struct _REPARSE_DATA_BUFFER {
-       DWORD  ReparseTag;
-       WORD   ReparseDataLength;
-       WORD   Reserved;
-       _ANONYMOUS_UNION union {
-               struct {
-                       WORD   SubstituteNameOffset;
-                       WORD   SubstituteNameLength;
-                       WORD   PrintNameOffset;
-                       WORD   PrintNameLength;
-                       ULONG  Flags;
-                       WCHAR PathBuffer[1];
-               } SymbolicLinkReparseBuffer;
-               struct {
-                       WORD   SubstituteNameOffset;
-                       WORD   SubstituteNameLength;
-                       WORD   PrintNameOffset;
-                       WORD   PrintNameLength;
-                       WCHAR PathBuffer[1];
-               } MountPointReparseBuffer;
-               struct {
-                       BYTE   DataBuffer[1];
-               } GenericReparseBuffer;
-       } DUMMYUNIONNAME;
-} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
 typedef struct _REPARSE_GUID_DATA_BUFFER {
        DWORD  ReparseTag;
        WORD   ReparseDataLength;