https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=65267a9a340f2a36884eea3034128781323520d3

commit 65267a9a340f2a36884eea3034128781323520d3
Author: Corinna Vinschen <[email protected]>
Date:   Thu Mar 1 16:51:12 2018 +0100

    Cygwin: move transaction helpers into ntdll.h
    
    We'll need them elsewhere in future.
    
    Signed-off-by: Corinna Vinschen <[email protected]

Diff:
---
 winsup/cygwin/ntdll.h     | 35 +++++++++++++++++++++++++++++++++++
 winsup/cygwin/syscalls.cc | 36 ------------------------------------
 2 files changed, 35 insertions(+), 36 deletions(-)

diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h
index 58d6342..0112349 100644
--- a/winsup/cygwin/ntdll.h
+++ b/winsup/cygwin/ntdll.h
@@ -14,6 +14,10 @@
 /* custom status code: */
 #define STATUS_ILLEGAL_DLL_PSEUDO_RELOCATION ((NTSTATUS) 0xe0000269)
 
+/* Simplify checking for a transactional error code. */
+#define NT_TRANSACTIONAL_ERROR(s)      \
+               (((ULONG)(s) >= (ULONG)STATUS_TRANSACTIONAL_CONFLICT) \
+                && ((ULONG)(s) <= (ULONG)STATUS_TRANSACTION_NOT_ENLISTED))
 
 #define NtCurrentProcess() ((HANDLE) (LONG_PTR) -1)
 #define NtCurrentThread()  ((HANDLE) (LONG_PTR) -2)
@@ -1601,5 +1605,36 @@ extern "C"
           && ebi.SignalState != 0;
 
   }
+
+  static inline void
+  start_transaction (HANDLE &old_trans, HANDLE &trans)
+  {
+    NTSTATUS status = NtCreateTransaction (&trans,
+                                 SYNCHRONIZE | TRANSACTION_ALL_ACCESS,
+                                 NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
+    if (NT_SUCCESS (status))
+      {
+       old_trans = RtlGetCurrentTransaction ();
+       RtlSetCurrentTransaction (trans);
+      }
+    else
+      {
+       debug_printf ("NtCreateTransaction failed, %y", status);
+       old_trans = trans = NULL;
+      }
+  }
+
+  static inline NTSTATUS
+  stop_transaction (NTSTATUS status, HANDLE old_trans, HANDLE &trans)
+  {
+    RtlSetCurrentTransaction (old_trans);
+    if (NT_SUCCESS (status))
+      status = NtCommitTransaction (trans, TRUE);
+    else
+      status = NtRollbackTransaction (trans, TRUE);
+    NtClose (trans);
+    trans = NULL;
+    return status;
+  }
 }
 #endif
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 9bae6dc..6d10855 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -182,42 +182,6 @@ dup3 (int oldfd, int newfd, int flags)
   return res;
 }
 
-/* Define macro to simplify checking for a transactional error code. */
-#define NT_TRANSACTIONAL_ERROR(s)      \
-               (((ULONG)(s) >= (ULONG)STATUS_TRANSACTIONAL_CONFLICT) \
-                && ((ULONG)(s) <= (ULONG)STATUS_TRANSACTION_NOT_ENLISTED))
-
-static inline void
-start_transaction (HANDLE &old_trans, HANDLE &trans)
-{
-  NTSTATUS status = NtCreateTransaction (&trans,
-                               SYNCHRONIZE | TRANSACTION_ALL_ACCESS,
-                               NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
-  if (NT_SUCCESS (status))
-    {
-      old_trans = RtlGetCurrentTransaction ();
-      RtlSetCurrentTransaction (trans);
-    }
-  else
-    {
-      debug_printf ("NtCreateTransaction failed, %y", status);
-      old_trans = trans = NULL;
-    }
-}
-
-static inline NTSTATUS
-stop_transaction (NTSTATUS status, HANDLE old_trans, HANDLE &trans)
-{
-  RtlSetCurrentTransaction (old_trans);
-  if (NT_SUCCESS (status))
-    status = NtCommitTransaction (trans, TRUE);
-  else
-    status = NtRollbackTransaction (trans, TRUE);
-  NtClose (trans);
-  trans = NULL;
-  return status;
-}
-
 static const char desktop_ini[] =
   "[.ShellClassInfo]\r\n"
   "CLSID={645FF040-5081-101B-9F08-00AA002F954E}\r\n"

Reply via email to