[newlib-cygwin] Cygwin: move transaction helpers into ntdll.h

Corinna Vinschen corinna@sourceware.org
Thu Mar 1 17:31:00 GMT 2018


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

commit 65267a9a340f2a36884eea3034128781323520d3
Author: Corinna Vinschen <corinna@vinschen.de>
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 <corinna@vinschen.de

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"



More information about the Cygwin-cvs mailing list