This is the mail archive of the
cygwin-cvs@cygwin.com
mailing list for the Cygwin project.
[newlib-cygwin] Cygwin: move transaction helpers into ntdll.h
- From: Corinna Vinschen <corinna at sourceware dot org>
- To: cygwin-cvs at sourceware dot org
- Date: 1 Mar 2018 17:31:35 -0000
- Subject: [newlib-cygwin] Cygwin: move transaction helpers into ntdll.h
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"