Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
a1c42293
Commit
a1c42293
authored
Sep 03, 2021
by
Zebediah Figura
Committed by
Alexandre Julliard
Sep 09, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Don't wake up always-blocking asyncs.
Signed-off-by:
Zebediah Figura
<
zfigura@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
386c4bcf
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
12 additions
and
12 deletions
+12
-12
ntoskrnl.c
dlls/ntoskrnl.exe/tests/ntoskrnl.c
+6
-6
async.c
server/async.c
+2
-2
device.c
server/device.c
+1
-1
file.h
server/file.h
+1
-1
sock.c
server/sock.c
+2
-2
No files found.
dlls/ntoskrnl.exe/tests/ntoskrnl.c
View file @
a1c42293
...
...
@@ -1169,15 +1169,15 @@ static void test_blocking_irp(void)
memset
(
&
io
,
0xcc
,
sizeof
(
io
));
status
=
NtQueryVolumeInformationFile
(
file
,
&
io
,
buffer
,
sizeof
(
buffer
),
FileFsSizeInformation
);
todo_wine
ok
(
!
status
,
"got %#x
\n
"
,
status
);
todo_wine
ok
(
!
io
.
Status
,
"got iosb status %#x
\n
"
,
io
.
Status
);
todo_wine
ok
(
!
io
.
Information
,
"got information %#Ix
\n
"
,
io
.
Information
);
ok
(
!
status
,
"got %#x
\n
"
,
status
);
ok
(
!
io
.
Status
,
"got iosb status %#x
\n
"
,
io
.
Status
);
ok
(
!
io
.
Information
,
"got information %#Ix
\n
"
,
io
.
Information
);
memset
(
&
io
,
0xcc
,
sizeof
(
io
));
status
=
NtQueryVolumeInformationFile
(
file
,
&
io
,
buffer
,
sizeof
(
buffer
),
FileFsFullSizeInformation
);
todo_wine
ok
(
status
==
STATUS_DEVICE_NOT_READY
,
"got %#x
\n
"
,
status
);
todo_wine
ok
(
io
.
Status
==
STATUS_DEVICE_NOT_READY
,
"got iosb status %#x
\n
"
,
io
.
Status
);
todo_wine
ok
(
!
io
.
Information
,
"got information %#Ix
\n
"
,
io
.
Information
);
ok
(
status
==
STATUS_DEVICE_NOT_READY
,
"got %#x
\n
"
,
status
);
ok
(
io
.
Status
==
STATUS_DEVICE_NOT_READY
,
"got iosb status %#x
\n
"
,
io
.
Status
);
ok
(
!
io
.
Information
,
"got information %#Ix
\n
"
,
io
.
Information
);
CloseHandle
(
file
);
}
...
...
server/async.c
View file @
a1c42293
...
...
@@ -285,13 +285,13 @@ struct async *create_async( struct fd *fd, struct thread *thread, const async_da
return
async
;
}
void
set_async_pending
(
struct
async
*
async
,
int
signal
)
void
set_async_pending
(
struct
async
*
async
)
{
if
(
!
async
->
terminated
)
{
async
->
pending
=
1
;
async
->
unknown_status
=
0
;
if
(
signal
&&
!
async
->
signaled
)
if
(
!
async
->
blocking
&&
!
async
->
signaled
)
{
async
->
signaled
=
1
;
wake_up
(
&
async
->
obj
,
0
);
...
...
server/device.c
View file @
a1c42293
...
...
@@ -961,7 +961,7 @@ DECL_HANDLER(get_next_device_request)
* so we need to do it now */
cancel_irp_call
(
irp
);
else
if
(
irp
->
async
)
set_async_pending
(
irp
->
async
,
irp
->
file
&&
is_fd_overlapped
(
irp
->
file
->
fd
)
);
set_async_pending
(
irp
->
async
);
free_irp_params
(
irp
);
release_object
(
irp
);
...
...
server/file.h
View file @
a1c42293
...
...
@@ -229,7 +229,7 @@ extern void async_set_timeout( struct async *async, timeout_t timeout, unsigned
extern
void
async_set_result
(
struct
object
*
obj
,
unsigned
int
status
,
apc_param_t
total
);
extern
void
async_set_completion_callback
(
struct
async
*
async
,
async_completion_callback
func
,
void
*
private
);
extern
void
async_set_unknown_status
(
struct
async
*
async
);
extern
void
set_async_pending
(
struct
async
*
async
,
int
signal
);
extern
void
set_async_pending
(
struct
async
*
async
);
extern
int
async_waiting
(
struct
async_queue
*
queue
);
extern
void
async_terminate
(
struct
async
*
async
,
unsigned
int
status
);
extern
void
async_request_complete
(
struct
async
*
async
,
unsigned
int
status
,
data_size_t
result
,
...
...
server/sock.c
View file @
a1c42293
...
...
@@ -2399,7 +2399,7 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async )
obj_handle_t
event_handle
;
int
mask
;
set_async_pending
(
async
,
0
);
set_async_pending
(
async
);
if
(
is_machine_64bit
(
current
->
process
->
machine
))
{
...
...
@@ -2530,7 +2530,7 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async )
#endif
}
set_async_pending
(
async
,
0
);
set_async_pending
(
async
);
if
(
bind
(
unix_fd
,
&
bind_addr
.
addr
,
unix_len
)
<
0
)
{
...
...
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