Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
e9410791
Commit
e9410791
authored
Feb 16, 2021
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll: Reimplement local atom tables in user space.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
e8309758
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
22 additions
and
6 deletions
+22
-6
atom.c
dlls/ntdll/atom.c
+0
-0
atom.c
dlls/ntdll/tests/atom.c
+2
-0
winternl.h
include/winternl.h
+20
-6
No files found.
dlls/ntdll/atom.c
View file @
e9410791
This diff is collapsed.
Click to expand it.
dlls/ntdll/tests/atom.c
View file @
e9410791
...
...
@@ -153,6 +153,8 @@ static void test_NtAtom(void)
ok
(
!
res
,
"We're unable to create an atom table with a valid table size retval: %x
\n
"
,
res
);
if
(
!
res
)
{
ok
(
*
(
DWORD
*
)
AtomTable
==
0x6d6f7441
,
"wrong signature %x
\n
"
,
*
(
DWORD
*
)
AtomTable
);
res
=
pRtlAddAtomToAtomTable
(
AtomTable
,
testAtom1
,
&
Atom1
);
ok
(
!
res
,
"We were unable to add a simple atom to the atom table, retval: %x
\n
"
,
res
);
...
...
include/winternl.h
View file @
e9410791
...
...
@@ -2154,12 +2154,6 @@ typedef struct _PORT_MESSAGE_HEADER {
typedef
unsigned
short
RTL_ATOM
,
*
PRTL_ATOM
;
/* Wine doesn't implement atom table as NT does:
* - in NT, atom tables are user space tables, which ntdll directly accesses
* - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE
*/
typedef
struct
atom_table
*
RTL_ATOM_TABLE
,
**
PRTL_ATOM_TABLE
;
typedef
enum
_ATOM_INFORMATION_CLASS
{
AtomBasicInformation
=
0
,
AtomTableInformation
=
1
,
...
...
@@ -2190,6 +2184,26 @@ typedef struct _RTL_HANDLE_TABLE
PVOID
MaxHandle
;
/* 0x1c */
}
RTL_HANDLE_TABLE
;
typedef
struct
_RTL_ATOM_TABLE_ENTRY
{
struct
_RTL_ATOM_TABLE_ENTRY
*
HashLink
;
WORD
HandleIndex
;
WORD
Atom
;
WORD
ReferenceCount
;
UCHAR
Flags
;
UCHAR
NameLength
;
WCHAR
Name
[
1
];
}
RTL_ATOM_TABLE_ENTRY
,
*
PRTL_ATOM_TABLE_ENTRY
;
typedef
struct
_RTL_ATOM_TABLE
{
ULONG
Signature
;
RTL_CRITICAL_SECTION
CriticalSection
;
RTL_HANDLE_TABLE
HandleTable
;
ULONG
NumberOfBuckets
;
RTL_ATOM_TABLE_ENTRY
*
Buckets
[
1
];
}
*
RTL_ATOM_TABLE
,
**
PRTL_ATOM_TABLE
;
/***********************************************************************
* Defines
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment