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
61d21ce7
Commit
61d21ce7
authored
Aug 23, 2004
by
Francois Gouget
Committed by
Alexandre Julliard
Aug 23, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update RTL_BITMAP and RTL_BITMAP_RUN to match the 2000 DDK.
Only test the Rtl{Initialize,SetAll,ClearAll}Bits macros if they are defined.
parent
560462a2
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
95 additions
and
118 deletions
+95
-118
scanf.h
dlls/msvcrt/scanf.h
+1
-1
rtlbitmap.c
dlls/ntdll/rtlbitmap.c
+40
-25
rtlbitmap.c
dlls/ntdll/tests/rtlbitmap.c
+48
-67
thread.c
dlls/ntdll/thread.c
+1
-1
winternl.h
include/winternl.h
+5
-24
No files found.
dlls/msvcrt/scanf.h
View file @
61d21ce7
...
...
@@ -429,7 +429,7 @@ _FUNCTION_ {
_CHAR_
*
str
=
suppress
?
NULL
:
va_arg
(
ap
,
_CHAR_
*
);
_CHAR_
*
sptr
=
str
;
RTL_BITMAP
bitMask
;
LPBYTE
Mask
;
ULONG
*
Mask
;
int
invert
=
0
;
/* Set if we are NOT to find the chars */
/* Init our bitmap */
...
...
dlls/ntdll/rtlbitmap.c
View file @
61d21ce7
...
...
@@ -75,12 +75,11 @@ static const signed char NTDLL_mostSignificant[16] = {
* lpBuff must be aligned on a ULONG suitable boundary, to a multiple of 32 bytes
* in size (irrespective of ulSize given).
*/
#undef RtlInitializeBitMap
VOID
WINAPI
RtlInitializeBitMap
(
PRTL_BITMAP
lpBits
,
LPBYTE
lpBuff
,
ULONG
ulSize
)
VOID
WINAPI
RtlInitializeBitMap
(
PRTL_BITMAP
lpBits
,
PULONG
lpBuff
,
ULONG
ulSize
)
{
TRACE
(
"(%p,%p,%ld)
\n
"
,
lpBits
,
lpBuff
,
ulSize
);
lpBits
->
SizeOfBitMap
=
ulSize
;
lpBits
->
B
itMapB
uffer
=
lpBuff
;
lpBits
->
Buffer
=
lpBuff
;
}
/*************************************************************************
...
...
@@ -94,11 +93,10 @@ VOID WINAPI RtlInitializeBitMap(PRTL_BITMAP lpBits, LPBYTE lpBuff, ULONG ulSize)
* RETURNS
* Nothing.
*/
#undef RtlSetAllBits
VOID
WINAPI
RtlSetAllBits
(
PRTL_BITMAP
lpBits
)
{
TRACE
(
"(%p)
\n
"
,
lpBits
);
memset
(
lpBits
->
B
itMapB
uffer
,
0xff
,
((
lpBits
->
SizeOfBitMap
+
31
)
&
~
31
)
>>
3
);
memset
(
lpBits
->
Buffer
,
0xff
,
((
lpBits
->
SizeOfBitMap
+
31
)
&
~
31
)
>>
3
);
}
/*************************************************************************
...
...
@@ -112,11 +110,10 @@ VOID WINAPI RtlSetAllBits(PRTL_BITMAP lpBits)
* RETURNS
* Nothing.
*/
#undef RtlClearAllBits
VOID
WINAPI
RtlClearAllBits
(
PRTL_BITMAP
lpBits
)
{
TRACE
(
"(%p)
\n
"
,
lpBits
);
memset
(
lpBits
->
B
itMapB
uffer
,
0
,
((
lpBits
->
SizeOfBitMap
+
31
)
&
~
31
)
>>
3
);
memset
(
lpBits
->
Buffer
,
0
,
((
lpBits
->
SizeOfBitMap
+
31
)
&
~
31
)
>>
3
);
}
/*************************************************************************
...
...
@@ -143,7 +140,10 @@ VOID WINAPI RtlSetBits(PRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount)
ulCount
>
lpBits
->
SizeOfBitMap
-
ulStart
)
return
;
lpOut
=
lpBits
->
BitMapBuffer
+
(
ulStart
>>
3u
);
/* FIXME: It might be more efficient/cleaner to manipulate four bytes
* at a time. But beware of the pointer arithmetics...
*/
lpOut
=
((
BYTE
*
)
lpBits
->
Buffer
)
+
(
ulStart
>>
3u
);
/* Set bits in first byte, if ulStart isn't a byte boundary */
if
(
ulStart
&
7
)
...
...
@@ -200,7 +200,10 @@ VOID WINAPI RtlClearBits(PRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount)
ulCount
>
lpBits
->
SizeOfBitMap
-
ulStart
)
return
;
lpOut
=
lpBits
->
BitMapBuffer
+
(
ulStart
>>
3u
);
/* FIXME: It might be more efficient/cleaner to manipulate four bytes
* at a time. But beware of the pointer arithmetics...
*/
lpOut
=
((
BYTE
*
)
lpBits
->
Buffer
)
+
(
ulStart
>>
3u
);
/* Clear bits in first byte, if ulStart isn't a byte boundary */
if
(
ulStart
&
7
)
...
...
@@ -260,7 +263,10 @@ BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount)
ulCount
>
lpBits
->
SizeOfBitMap
-
ulStart
)
return
FALSE
;
lpOut
=
lpBits
->
BitMapBuffer
+
(
ulStart
>>
3u
);
/* FIXME: It might be more efficient/cleaner to manipulate four bytes
* at a time. But beware of the pointer arithmetics...
*/
lpOut
=
((
BYTE
*
)
lpBits
->
Buffer
)
+
(
ulStart
>>
3u
);
/* Check bits in first byte, if ulStart isn't a byte boundary */
if
(
ulStart
&
7
)
...
...
@@ -330,7 +336,10 @@ BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount
ulCount
>
lpBits
->
SizeOfBitMap
-
ulStart
)
return
FALSE
;
lpOut
=
lpBits
->
BitMapBuffer
+
(
ulStart
>>
3u
);
/* FIXME: It might be more efficient/cleaner to manipulate four bytes
* at a time. But beware of the pointer arithmetics...
*/
lpOut
=
((
BYTE
*
)
lpBits
->
Buffer
)
+
(
ulStart
>>
3u
);
/* Check bits in first byte, if ulStart isn't a byte boundary */
if
(
ulStart
&
7
)
...
...
@@ -534,7 +543,7 @@ ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP lpBits)
if
(
lpBits
)
{
LPBYTE
lpOut
=
lpBits
->
BitMap
Buffer
;
LPBYTE
lpOut
=
(
BYTE
*
)
lpBits
->
Buffer
;
ULONG
ulCount
,
ulRemainder
;
BYTE
bMasked
;
...
...
@@ -654,7 +663,7 @@ CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG ulLong)
*/
static
int
NTDLL_RunSortFn
(
const
void
*
lhs
,
const
void
*
rhs
)
{
if
(((
const
RTL_BITMAP_RUN
*
)
lhs
)
->
SizeOfRun
>
((
const
RTL_BITMAP_RUN
*
)
rhs
)
->
SizeOfRun
)
if
(((
const
RTL_BITMAP_RUN
*
)
lhs
)
->
NumberOfBits
>
((
const
RTL_BITMAP_RUN
*
)
rhs
)
->
NumberOfBits
)
return
-
1
;
return
1
;
}
...
...
@@ -669,7 +678,10 @@ static ULONG NTDLL_FindSetRun(PCRTL_BITMAP lpBits, ULONG ulStart, PULONG lpSize)
LPBYTE
lpOut
;
ULONG
ulFoundAt
=
0
,
ulCount
=
0
;
lpOut
=
lpBits
->
BitMapBuffer
+
(
ulStart
>>
3u
);
/* FIXME: It might be more efficient/cleaner to manipulate four bytes
* at a time. But beware of the pointer arithmetics...
*/
lpOut
=
((
BYTE
*
)
lpBits
->
Buffer
)
+
(
ulStart
>>
3u
);
while
(
1
)
{
...
...
@@ -757,7 +769,10 @@ static ULONG NTDLL_FindClearRun(PCRTL_BITMAP lpBits, ULONG ulStart, PULONG lpSiz
LPBYTE
lpOut
;
ULONG
ulFoundAt
=
0
,
ulCount
=
0
;
lpOut
=
lpBits
->
BitMapBuffer
+
(
ulStart
>>
3u
);
/* FIXME: It might be more efficient/cleaner to manipulate four bytes
* at a time. But beware of the pointer arithmetics...
*/
lpOut
=
((
BYTE
*
)
lpBits
->
Buffer
)
+
(
ulStart
>>
3u
);
while
(
1
)
{
...
...
@@ -963,21 +978,21 @@ static ULONG WINAPI NTDLL_FindRuns(PCRTL_BITMAP lpBits, PRTL_BITMAP_RUN lpSeries
qsort
(
lpSeries
,
ulRuns
,
sizeof
(
RTL_BITMAP_RUN
),
NTDLL_RunSortFn
);
/* Replace last run if this one is bigger */
if
(
ulSize
>
lpSeries
[
ulRuns
-
1
].
SizeOfRun
)
if
(
ulSize
>
lpSeries
[
ulRuns
-
1
].
NumberOfBits
)
{
lpSeries
[
ulRuns
-
1
].
Start
OfRun
=
ulNextPos
;
lpSeries
[
ulRuns
-
1
].
SizeOfRun
=
ulSize
;
lpSeries
[
ulRuns
-
1
].
Start
ingIndex
=
ulNextPos
;
lpSeries
[
ulRuns
-
1
].
NumberOfBits
=
ulSize
;
/* We need to re-sort the array, _if_ we didn't leave it sorted */
if
(
ulRuns
>
1
&&
ulSize
>
lpSeries
[
ulRuns
-
2
].
SizeOfRun
)
if
(
ulRuns
>
1
&&
ulSize
>
lpSeries
[
ulRuns
-
2
].
NumberOfBits
)
bNeedSort
=
TRUE
;
}
}
else
{
/* Append to found runs */
lpSeries
[
ulRuns
].
Start
OfRun
=
ulNextPos
;
lpSeries
[
ulRuns
].
SizeOfRun
=
ulSize
;
lpSeries
[
ulRuns
].
Start
ingIndex
=
ulNextPos
;
lpSeries
[
ulRuns
].
NumberOfBits
=
ulSize
;
ulRuns
++
;
if
(
!
bLongest
&&
ulRuns
==
ulCount
)
...
...
@@ -1053,8 +1068,8 @@ ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP lpBits, PULONG pulStart)
if
(
RtlFindSetRuns
(
lpBits
,
&
br
,
1
,
TRUE
)
==
1
)
{
if
(
pulStart
)
*
pulStart
=
br
.
Start
OfRun
;
return
br
.
SizeOfRun
;
*
pulStart
=
br
.
Start
ingIndex
;
return
br
.
NumberOfBits
;
}
return
0
;
}
...
...
@@ -1080,8 +1095,8 @@ ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP lpBits, PULONG pulStart)
if
(
RtlFindClearRuns
(
lpBits
,
&
br
,
1
,
TRUE
)
==
1
)
{
if
(
pulStart
)
*
pulStart
=
br
.
Start
OfRun
;
return
br
.
SizeOfRun
;
*
pulStart
=
br
.
Start
ingIndex
;
return
br
.
NumberOfBits
;
}
return
0
;
}
dlls/ntdll/tests/rtlbitmap.c
View file @
61d21ce7
...
...
@@ -75,7 +75,7 @@ static void InitFunctionPtrs()
static
void
test_RtlInitializeBitMap
(
void
)
{
bm
.
SizeOfBitMap
=
0
;
bm
.
B
itMapB
uffer
=
0
;
bm
.
Buffer
=
0
;
memset
(
buff
,
0
,
sizeof
(
buff
));
buff
[
0
]
=
77
;
/* Check buffer is not written to during init */
...
...
@@ -83,13 +83,7 @@ static void test_RtlInitializeBitMap(void)
pRtlInitializeBitMap
(
&
bm
,
buff
,
800
);
ok
(
bm
.
SizeOfBitMap
==
800
,
"size uninitialised
\n
"
);
ok
(
bm
.
BitMapBuffer
==
buff
,
"buffer uninitialised
\n
"
);
ok
(
buff
[
0
]
==
77
&&
buff
[
79
]
==
77
,
"wrote to buffer
\n
"
);
/* Test inlined version */
RtlInitializeBitMap
(
&
bm
,
buff
,
800
);
ok
(
bm
.
SizeOfBitMap
==
800
,
"size uninitialised
\n
"
);
ok
(
bm
.
BitMapBuffer
==
buff
,
"buffer uninitialised
\n
"
);
ok
(
bm
.
Buffer
==
(
PULONG
)
buff
,
"buffer uninitialised
\n
"
);
ok
(
buff
[
0
]
==
77
&&
buff
[
79
]
==
77
,
"wrote to buffer
\n
"
);
}
...
...
@@ -105,13 +99,6 @@ static void test_RtlSetAllBits(void)
ok
(
buff
[
0
]
==
0xff
&&
buff
[
1
]
==
0xff
&&
buff
[
2
]
==
0xff
&&
buff
[
3
]
==
0xff
,
"didn't round up size
\n
"
);
ok
(
buff
[
4
]
==
0
,
"set more than rounded size
\n
"
);
/* Test inlined version */
memset
(
buff
,
0
,
sizeof
(
buff
));
RtlSetAllBits
(
&
bm
);
ok
(
buff
[
0
]
==
0xff
&&
buff
[
1
]
==
0xff
&&
buff
[
2
]
==
0xff
&&
buff
[
3
]
==
0xff
,
"didn't round up size
\n
"
);
ok
(
buff
[
4
]
==
0
,
"set more than rounded size
\n
"
);
}
static
void
test_RtlClearAllBits
()
...
...
@@ -125,12 +112,6 @@ static void test_RtlClearAllBits()
pRtlClearAllBits
(
&
bm
);
ok
(
!
buff
[
0
]
&&
!
buff
[
1
]
&&
!
buff
[
2
]
&&
!
buff
[
3
],
"didn't round up size
\n
"
);
ok
(
buff
[
4
]
==
0xff
,
"cleared more than rounded size
\n
"
);
/* Test inlined version */
memset
(
buff
,
0xff
,
sizeof
(
buff
));
RtlClearAllBits
(
&
bm
);
ok
(
!
buff
[
0
]
&&
!
buff
[
1
]
&&
!
buff
[
2
]
&&
!
buff
[
3
]
,
"didn't round up size
\n
"
);
ok
(
buff
[
4
]
==
0xff
,
"cleared more than rounded size
\n
"
);
}
static
void
test_RtlSetBits
()
...
...
@@ -498,8 +479,8 @@ static void test_RtlFindSetRuns()
memset
(
buff
,
0xff
,
sizeof
(
buff
));
ulCount
=
pRtlFindSetRuns
(
&
bm
,
runs
,
16
,
TRUE
);
ok
(
ulCount
==
1
,
"didn't find set bits
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
==
0
,
"bad start
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
==
sizeof
(
buff
)
*
8
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
0
,
"bad start
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
==
sizeof
(
buff
)
*
8
,
"bad size
\n
"
);
/* Set up 3 runs */
memset
(
runs
,
0
,
sizeof
(
runs
));
...
...
@@ -510,35 +491,35 @@ static void test_RtlFindSetRuns()
/* Get first 2 */
ulCount
=
pRtlFindSetRuns
(
&
bm
,
runs
,
2
,
FALSE
);
ok
(
runs
[
0
].
Start
OfRun
==
7
||
runs
[
0
].
StartOfRun
==
101
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
==
7
||
runs
[
1
].
StartOfRun
==
101
,
"bad find
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
+
runs
[
1
].
SizeOfRun
==
19
+
3
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
!=
runs
[
1
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
OfRun
==
0
,
"found extra run
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
7
||
runs
[
0
].
StartingIndex
==
101
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
==
7
||
runs
[
1
].
StartingIndex
==
101
,
"bad find
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
+
runs
[
1
].
NumberOfBits
==
19
+
3
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
!=
runs
[
1
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
ingIndex
==
0
,
"found extra run
\n
"
);
/* Get longest 3 */
memset
(
runs
,
0
,
sizeof
(
runs
));
ulCount
=
pRtlFindSetRuns
(
&
bm
,
runs
,
2
,
TRUE
);
ok
(
runs
[
0
].
Start
OfRun
==
7
||
runs
[
0
].
StartOfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
==
7
||
runs
[
1
].
StartOfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
+
runs
[
1
].
SizeOfRun
==
33
+
19
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
!=
runs
[
1
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
OfRun
==
0
,
"found extra run
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
7
||
runs
[
0
].
StartingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
==
7
||
runs
[
1
].
StartingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
+
runs
[
1
].
NumberOfBits
==
33
+
19
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
!=
runs
[
1
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
ingIndex
==
0
,
"found extra run
\n
"
);
/* Get all 3 */
memset
(
runs
,
0
,
sizeof
(
runs
));
ulCount
=
pRtlFindSetRuns
(
&
bm
,
runs
,
3
,
TRUE
);
ok
(
runs
[
0
].
Start
OfRun
==
7
||
runs
[
0
].
StartOfRun
==
101
||
runs
[
0
].
Start
OfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
==
7
||
runs
[
1
].
StartOfRun
==
101
||
runs
[
1
].
Start
OfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
2
].
Start
OfRun
==
7
||
runs
[
2
].
StartOfRun
==
101
||
runs
[
2
].
Start
OfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
+
runs
[
1
].
SizeOfRun
+
runs
[
2
].
SizeOfRun
==
19
+
3
+
33
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
!=
runs
[
1
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
!=
runs
[
2
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
3
].
Start
OfRun
==
0
,
"found extra run
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
7
||
runs
[
0
].
StartingIndex
==
101
||
runs
[
0
].
Start
ingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
==
7
||
runs
[
1
].
StartingIndex
==
101
||
runs
[
1
].
Start
ingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
2
].
Start
ingIndex
==
7
||
runs
[
2
].
StartingIndex
==
101
||
runs
[
2
].
Start
ingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
+
runs
[
1
].
NumberOfBits
+
runs
[
2
].
NumberOfBits
==
19
+
3
+
33
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
!=
runs
[
1
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
!=
runs
[
2
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
3
].
Start
ingIndex
==
0
,
"found extra run
\n
"
);
if
(
pRtlFindLongestRunSet
)
{
...
...
@@ -572,8 +553,8 @@ static void test_RtlFindClearRuns()
memset
(
buff
,
0
,
sizeof
(
buff
));
ulCount
=
pRtlFindClearRuns
(
&
bm
,
runs
,
16
,
TRUE
);
ok
(
ulCount
==
1
,
"didn't find clear bits
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
==
0
,
"bad start
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
==
sizeof
(
buff
)
*
8
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
0
,
"bad start
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
==
sizeof
(
buff
)
*
8
,
"bad size
\n
"
);
/* Set up 3 runs */
memset
(
runs
,
0
,
sizeof
(
runs
));
...
...
@@ -584,35 +565,35 @@ static void test_RtlFindClearRuns()
/* Get first 2 */
ulCount
=
pRtlFindClearRuns
(
&
bm
,
runs
,
2
,
FALSE
);
ok
(
runs
[
0
].
Start
OfRun
==
7
||
runs
[
0
].
StartOfRun
==
101
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
==
7
||
runs
[
1
].
StartOfRun
==
101
,
"bad find
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
+
runs
[
1
].
SizeOfRun
==
19
+
3
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
!=
runs
[
1
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
OfRun
==
0
,
"found extra run
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
7
||
runs
[
0
].
StartingIndex
==
101
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
==
7
||
runs
[
1
].
StartingIndex
==
101
,
"bad find
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
+
runs
[
1
].
NumberOfBits
==
19
+
3
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
!=
runs
[
1
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
ingIndex
==
0
,
"found extra run
\n
"
);
/* Get longest 3 */
memset
(
runs
,
0
,
sizeof
(
runs
));
ulCount
=
pRtlFindClearRuns
(
&
bm
,
runs
,
2
,
TRUE
);
ok
(
runs
[
0
].
Start
OfRun
==
7
||
runs
[
0
].
StartOfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
==
7
||
runs
[
1
].
StartOfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
+
runs
[
1
].
SizeOfRun
==
33
+
19
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
!=
runs
[
1
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
OfRun
==
0
,
"found extra run
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
7
||
runs
[
0
].
StartingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
==
7
||
runs
[
1
].
StartingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
+
runs
[
1
].
NumberOfBits
==
33
+
19
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
!=
runs
[
1
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
2
].
Start
ingIndex
==
0
,
"found extra run
\n
"
);
/* Get all 3 */
memset
(
runs
,
0
,
sizeof
(
runs
));
ulCount
=
pRtlFindClearRuns
(
&
bm
,
runs
,
3
,
TRUE
);
ok
(
runs
[
0
].
Start
OfRun
==
7
||
runs
[
0
].
StartOfRun
==
101
||
runs
[
0
].
Start
OfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
==
7
||
runs
[
1
].
StartOfRun
==
101
||
runs
[
1
].
Start
OfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
2
].
Start
OfRun
==
7
||
runs
[
2
].
StartOfRun
==
101
||
runs
[
2
].
Start
OfRun
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
SizeOfRun
+
runs
[
1
].
SizeOfRun
+
runs
[
2
].
SizeOfRun
==
19
+
3
+
33
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
OfRun
!=
runs
[
1
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
1
].
Start
OfRun
!=
runs
[
2
].
StartOfRun
,
"found run twice
\n
"
);
ok
(
runs
[
3
].
Start
OfRun
==
0
,
"found extra run
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
==
7
||
runs
[
0
].
StartingIndex
==
101
||
runs
[
0
].
Start
ingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
==
7
||
runs
[
1
].
StartingIndex
==
101
||
runs
[
1
].
Start
ingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
2
].
Start
ingIndex
==
7
||
runs
[
2
].
StartingIndex
==
101
||
runs
[
2
].
Start
ingIndex
==
1877
,
"bad find
\n
"
);
ok
(
runs
[
0
].
NumberOfBits
+
runs
[
1
].
NumberOfBits
+
runs
[
2
].
NumberOfBits
==
19
+
3
+
33
,
"bad size
\n
"
);
ok
(
runs
[
0
].
Start
ingIndex
!=
runs
[
1
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
1
].
Start
ingIndex
!=
runs
[
2
].
StartingIndex
,
"found run twice
\n
"
);
ok
(
runs
[
3
].
Start
ingIndex
==
0
,
"found extra run
\n
"
);
if
(
pRtlFindLongestRunClear
)
{
...
...
dlls/ntdll/thread.c
View file @
61d21ce7
...
...
@@ -110,7 +110,7 @@ void thread_init(void)
peb
.
ProcessParameters
=
&
params
;
peb
.
TlsBitmap
=
&
tls_bitmap
;
peb
.
LdrData
=
&
ldr
;
RtlInitializeBitMap
(
&
tls_bitmap
,
(
BYTE
*
)
peb
.
TlsBitmapBits
,
sizeof
(
peb
.
TlsBitmapBits
)
*
8
);
RtlInitializeBitMap
(
&
tls_bitmap
,
peb
.
TlsBitmapBits
,
sizeof
(
peb
.
TlsBitmapBits
)
*
8
);
InitializeListHead
(
&
ldr
.
InLoadOrderModuleList
);
InitializeListHead
(
&
ldr
.
InMemoryOrderModuleList
);
InitializeListHead
(
&
ldr
.
InInitializationOrderModuleList
);
...
...
include/winternl.h
View file @
61d21ce7
...
...
@@ -83,14 +83,14 @@ typedef struct RTL_DRIVE_LETTER_CURDIR
typedef
struct
tagRTL_BITMAP
{
ULONG
SizeOfBitMap
;
/* Number of bits in the bitmap */
LPBYTE
BitMap
Buffer
;
/* Bitmap data, assumed sized to a DWORD boundary */
PULONG
Buffer
;
/* Bitmap data, assumed sized to a DWORD boundary */
}
RTL_BITMAP
,
*
PRTL_BITMAP
;
typedef
const
RTL_BITMAP
*
PCRTL_BITMAP
;
typedef
struct
tagRTL_BITMAP_RUN
{
ULONG
Start
OfRun
;
/* Bit position at which run starts - FIXME: Name?
*/
ULONG
SizeOfRun
;
/* Size of the run in bits - FIXME: Name?
*/
ULONG
Start
ingIndex
;
/* Bit position at which run starts
*/
ULONG
NumberOfBits
;
/* Size of the run in bits
*/
}
RTL_BITMAP_RUN
,
*
PRTL_BITMAP_RUN
;
typedef
const
RTL_BITMAP_RUN
*
PCRTL_BITMAP_RUN
;
...
...
@@ -1462,7 +1462,7 @@ void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
NTSTATUS
WINAPI
RtlInitUnicodeStringEx
(
PUNICODE_STRING
,
PCWSTR
);
NTSTATUS
WINAPI
RtlInitializeCriticalSection
(
RTL_CRITICAL_SECTION
*
);
NTSTATUS
WINAPI
RtlInitializeCriticalSectionAndSpinCount
(
RTL_CRITICAL_SECTION
*
,
DWORD
);
void
WINAPI
RtlInitializeBitMap
(
PRTL_BITMAP
,
LPBYTE
,
ULONG
);
void
WINAPI
RtlInitializeBitMap
(
PRTL_BITMAP
,
PULONG
,
ULONG
);
void
WINAPI
RtlInitializeResource
(
LPRTL_RWLOCK
);
BOOL
WINAPI
RtlInitializeSid
(
PSID
,
PSID_IDENTIFIER_AUTHORITY
,
BYTE
);
...
...
@@ -1618,30 +1618,11 @@ extern NTSTATUS wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STR
inline
static
BOOLEAN
RtlCheckBit
(
PCRTL_BITMAP
lpBits
,
ULONG
ulBit
)
{
if
(
lpBits
&&
ulBit
<
lpBits
->
SizeOfBitMap
&&
lpBits
->
B
itMapBuffer
[
ulBit
>>
3
]
&
(
1
<<
(
ulBit
&
7
)))
lpBits
->
B
uffer
[
ulBit
>>
5
]
&
(
1
<<
(
ulBit
&
31
)))
return
TRUE
;
return
FALSE
;
}
#define RtlClearAllBits(p) \
do { \
PRTL_BITMAP _p = (p); \
memset(_p->BitMapBuffer,0,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \
} while (0)
#define RtlInitializeBitMap(p,b,s) \
do { \
PRTL_BITMAP _p = (p); \
_p->SizeOfBitMap = (s); \
_p->BitMapBuffer = (b); \
} while (0)
#define RtlSetAllBits(p) \
do { \
PRTL_BITMAP _p = (p); \
memset(_p->BitMapBuffer,0xff,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \
} while (0)
/* These are implemented as __fastcall, so we can't let Winelib apps link with them */
inline
static
USHORT
RtlUshortByteSwap
(
USHORT
s
)
{
...
...
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