* winbase.h (ilockincr): More changes from the inexplicable world of gcc asm

magic.
(ilockdecr): Ditto.
This commit is contained in:
Christopher Faylor 2004-06-03 21:29:43 +00:00
parent ee94df3ecc
commit 604ca5fa17
5 changed files with 22 additions and 7 deletions

View file

@ -1,3 +1,9 @@
2004-06-03 Christopher Faylor <cgf@alum.bu.edu>
* winbase.h (ilockincr): More changes from the inexplicable world of
gcc asm magic.
(ilockdecr): Ditto.
2004-06-03 Christopher Faylor <me@cgf.cx>
* winbase.h (ilockincr): YA correction to ensure correct operation with

View file

@ -389,6 +389,7 @@ LoadDLLfuncEx (NtSetSecurityObject, 12, ntdll, 1)
LoadDLLfuncEx (NtUnmapViewOfSection, 8, ntdll, 1)
LoadDLLfuncEx (RtlInitUnicodeString, 8, ntdll, 1)
LoadDLLfuncEx (RtlNtStatusToDosError, 4, ntdll, 1)
LoadDLLfuncEx (RtlIsDosDeviceName_U, 4, ntdll, 1)
LoadDLLfuncEx (GetProcessMemoryInfo, 12, psapi, 1)

View file

@ -531,7 +531,9 @@ done:
int
fhandler_base::open (int flags, mode_t mode)
{
if (!wincap.is_winnt ())
UNICODE_STRING upath;
WCHAR wpath[CYG_MAX_PATH + 10];
if (!wincap.is_winnt () || RtlIsDosDeviceName_U(wpath))
return fhandler_base::open_9x (flags, mode);
int res = 0;
@ -542,8 +544,6 @@ fhandler_base::open (int flags, mode_t mode)
ULONG create_options;
SECURITY_ATTRIBUTES sa = sec_none;
security_descriptor sd;
UNICODE_STRING upath;
WCHAR wpath[CYG_MAX_PATH + 10];
OBJECT_ATTRIBUTES attr;
IO_STATUS_BLOCK io;
NTSTATUS status;
@ -555,8 +555,7 @@ fhandler_base::open (int flags, mode_t mode)
goto done;
}
InitializeObjectAttributes (&attr, pc.get_nt_native_path (upath, wpath),
OBJ_CASE_INSENSITIVE | OBJ_INHERIT,
InitializeObjectAttributes (&attr, &upath, OBJ_CASE_INSENSITIVE | OBJ_INHERIT,
sa.lpSecurityDescriptor, NULL);
switch (query_open ())

View file

@ -420,4 +420,5 @@ extern "C"
NTSTATUS NTAPI NtUnmapViewOfSection (HANDLE, PVOID);
VOID NTAPI RtlInitUnicodeString (PUNICODE_STRING, PCWSTR);
ULONG NTAPI RtlNtStatusToDosError (NTSTATUS);
ULONG WINAPI RtlIsDosDeviceName_U (PCWSTR);
}

View file

@ -1,3 +1,11 @@
/* winbase.h
Copyright 2002, 2003, 2004 Red Hat, Inc.
This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */
#include_next "winbase.h"
#ifndef _WINBASE2_H
@ -9,7 +17,7 @@ ilockincr (long *m)
register int __res;
__asm__ __volatile__ ("\n\
movl $1,%0\n\
lock xadd %0,%2\n\
lock xadd %0,%1\n\
inc %0\n\
": "=a" (__res), "=m" (*m): "m" (m): "cc");
return __res;
@ -21,7 +29,7 @@ ilockdecr (long *m)
register int __res;
__asm__ __volatile__ ("\n\
movl $0xffffffff,%0\n\
lock xadd %0,%2\n\
lock xadd %0,%1\n\
dec %0\n\
": "=a" (__res), "=m" (*m): "m" (m): "cc");
return __res;