diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-04-21 12:46:58 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-04-21 12:46:58 +0000 |
commit | abbde487046d0f1a775a85057d51ec4ee074e33d (patch) | |
tree | 6c5a34114129748846159e3b131b0f6514a05b0c /winsup/cygwin/ntdll.h | |
parent | 70fab4ec71b3a206b042b6c027c14ad575876b8c (diff) | |
download | cygnal-abbde487046d0f1a775a85057d51ec4ee074e33d.tar.gz cygnal-abbde487046d0f1a775a85057d51ec4ee074e33d.tar.bz2 cygnal-abbde487046d0f1a775a85057d51ec4ee074e33d.zip |
* Makefile.in (DLL_OFILES): Add kernel32.o.
* autoload.cc (WSACloseEvent): Remove.
(WSACreateEvent): Remove.
* cygheap.cc (cygheap_init): Drop initializing shared_prefix.
* cygheap.h (struct init_cygheap): Drop shared_prefix and
shared_prefix_buf members.
* fhandler_socket.cc (sock_shared_name): New static function.
(search_wsa_event_slot): Convert name buffers to WCHAR. Call
NtCreateMutant/NtOpenMutant to create mutexes in session local
namespace.
(fhandler_socket::init_events): Ditto. Fix debug output.
(fhandler_socket::release_events): Close mutexes using NtClose.
(fhandler_socket::dup): Ditto.
* kernel32.cc: New file, implementing Win32 calls in a Cygwin-specific
way.
* mmap.cc (MapView): Make static.
* ntdll.h: Fix status code sorting.
(STATUS_OBJECT_NAME_EXISTS): Define.
(SEMAPHORE_QUERY_STATE): Define.
(CYG_SHARED_DIR_ACCESS): Define.
(CYG_MUTANT_ACCESS): Define.
(CYG_EVENT_ACCESS): Define.
(CYG_SEMAPHORE_ACCESS): Define.
(enum _PROCESSINFOCLASS): Define ProcessSessionInformation.
(struct _PROCESS_SESSION_INFORMATION): Define.
(NtCreateSemaphore): Declare.
(NtOpenSemaphore): Declare.
* flock.cc: Use CYG_xxx_ACCESS access masks where appropriate.
* posix_ipc.cc (ipc_mutex_init): Use native functions to create mutex.
Create in cygwin-shared subdir.
(ipc_cond_init): Ditto for event.
(ipc_mutex_close): Use NtClose.
(ipc_cond_close): Ditto.
(mq_open): Drop "cyg" prefix from mqh_uname.
* shared.cc (CYG_SHARED_DIR_ACCESS): Drop definition here.
(_cygwin_testing): Declare extern on file level.
(get_shared_parent_dir): Change name of shared directory. Add name
to api_fatal output.
(get_session_parent_dir): New function.
(shared_name): Simplify.
(shared_info::initialize): Call get_session_parent_dir.
* shared_info.h (get_session_parent_dir): Declare.
* smallprint.cc (__small_vswprintf): Fix bug in multibyte string
conversion.
* thread.cc (semaphore::semaphore): Align semaphore name to object
names in posix IPC functions.
* include/cygwin/version.h (CYGWIN_VERSION_SHARED_DATA): Bump.
Diffstat (limited to 'winsup/cygwin/ntdll.h')
-rw-r--r-- | winsup/cygwin/ntdll.h | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index 529a3be89..2d7d6f640 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -8,6 +8,9 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ +#define STATUS_OBJECT_NAME_EXISTS ((NTSTATUS) 0x40000000) +#define STATUS_BUFFER_OVERFLOW ((NTSTATUS) 0x80000005) +#define STATUS_NO_MORE_FILES ((NTSTATUS) 0x80000006) #ifndef STATUS_INVALID_INFO_CLASS /* Some w32api header file defines this so we need to conditionalize this define to avoid warnings. */ @@ -35,13 +38,10 @@ #define STATUS_DIRECTORY_NOT_EMPTY ((NTSTATUS) 0xc0000101) #define STATUS_NOT_ALL_ASSIGNED ((NTSTATUS) 0x00000106) #define STATUS_INVALID_LEVEL ((NTSTATUS) 0xc0000148) -#define STATUS_BUFFER_OVERFLOW ((NTSTATUS) 0x80000005) -#define STATUS_NO_MORE_FILES ((NTSTATUS) 0x80000006) -#define STATUS_DLL_NOT_FOUND ((NTSTATUS) 0xC0000135) -#define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS) 0xC0000139) -#define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS) 0xC0000251) -#define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS) 0xC0000269) - +#define STATUS_DLL_NOT_FOUND ((NTSTATUS) 0xc0000135) +#define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS) 0xc0000139) +#define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS) 0xc0000251) +#define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS) 0xc0000269) #define PDI_MODULES 0x01 #define PDI_HEAPS 0x04 @@ -195,6 +195,28 @@ typedef struct _FILE_ID_BOTH_DIR_INFORMATION #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|0x0f) #define EVENT_QUERY_STATE 1 +#define SEMAPHORE_QUERY_STATE 1 + +/* Specific ACCESS_MASKSs for objects created in Cygwin. */ +#define CYG_SHARED_DIR_ACCESS (DIRECTORY_QUERY \ + | DIRECTORY_TRAVERSE \ + | DIRECTORY_CREATE_SUBDIRECTORY \ + | DIRECTORY_CREATE_OBJECT \ + | READ_CONTROL) + +#define CYG_MUTANT_ACCESS (MUTANT_QUERY_STATE \ + | SYNCHRONIZE \ + | READ_CONTROL) + +#define CYG_EVENT_ACCESS (EVENT_QUERY_STATE \ + | EVENT_MODIFY_STATE \ + | SYNCHRONIZE \ + | READ_CONTROL) + +#define CYG_SEMAPHORE_ACCESS (SEMAPHORE_QUERY_STATE \ + | SEMAPHORE_MODIFY_STATE \ + | SYNCHRONIZE \ + | READ_CONTROL) typedef ULONG KAFFINITY; @@ -440,7 +462,8 @@ typedef enum _PROCESSINFOCLASS ProcessBasicInformation = 0, ProcessQuotaLimits = 1, ProcessVmCounters = 3, - ProcessTimes =4, + ProcessTimes = 4, + ProcessSessionInformation = 24, } PROCESSINFOCLASS; typedef struct _DEBUG_BUFFER @@ -560,6 +583,11 @@ typedef struct _PROCESS_BASIC_INFORMATION ULONG InheritedFromUniqueProcessId; } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; +typedef struct _PROCESS_SESSION_INFORMATION +{ + ULONG SessionId; +} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; + typedef enum _MEMORY_INFORMATION_CLASS { MemoryBasicInformation, @@ -840,6 +868,8 @@ extern "C" BOOLEAN); NTSTATUS NTAPI NtCreateSection (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PLARGE_INTEGER, ULONG, ULONG, HANDLE); + NTSTATUS NTAPI NtCreateSemaphore (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, + LONG, LONG); NTSTATUS NTAPI NtCreateToken (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, TOKEN_TYPE, PLUID, PLARGE_INTEGER, PTOKEN_USER, PTOKEN_GROUPS, PTOKEN_PRIVILEGES, PTOKEN_OWNER, @@ -863,6 +893,7 @@ extern "C" PIO_STATUS_BLOCK, ULONG, ULONG); NTSTATUS NTAPI NtOpenMutant (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES); NTSTATUS NTAPI NtOpenSection (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES); + NTSTATUS NTAPI NtOpenSemaphore (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES); /* WARNING! Don't rely on the timestamp information returned by NtQueryAttributesFile. Only the DOS file attribute info is reliable. */ NTSTATUS NTAPI NtQueryAttributesFile (POBJECT_ATTRIBUTES, |