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
0b4c9cb5
Commit
0b4c9cb5
authored
Aug 23, 2013
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Aug 23, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Store full-sized completion information on the server side.
parent
aa3a43f7
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
26 additions
and
28 deletions
+26
-28
file.c
dlls/ntdll/tests/file.c
+0
-5
server_protocol.h
include/wine/server_protocol.h
+7
-4
async.c
server/async.c
+2
-2
completion.c
server/completion.c
+2
-2
file.h
server/file.h
+2
-2
protocol.def
server/protocol.def
+3
-3
request.h
server/request.h
+7
-7
trace.c
server/trace.c
+3
-3
No files found.
dlls/ntdll/tests/file.c
View file @
0b4c9cb5
...
@@ -1001,11 +1001,6 @@ static void test_iocp_setcompletion(HANDLE h)
...
@@ -1001,11 +1001,6 @@ static void test_iocp_setcompletion(HANDLE h)
if
(
get_msg
(
h
))
if
(
get_msg
(
h
))
{
{
ok
(
completionKey
==
CKEY_FIRST
,
"Invalid completion key: %lx
\n
"
,
completionKey
);
ok
(
completionKey
==
CKEY_FIRST
,
"Invalid completion key: %lx
\n
"
,
completionKey
);
/* FIXME: Remove once Wine is fixed */
if
(
sizeof
(
size
)
>
4
)
todo_wine
ok
(
ioSb
.
Information
==
size
,
"Invalid ioSb.Information: %lu
\n
"
,
ioSb
.
Information
);
else
ok
(
ioSb
.
Information
==
size
,
"Invalid ioSb.Information: %lu
\n
"
,
ioSb
.
Information
);
ok
(
ioSb
.
Information
==
size
,
"Invalid ioSb.Information: %lu
\n
"
,
ioSb
.
Information
);
ok
(
U
(
ioSb
).
Status
==
STATUS_INVALID_DEVICE_REQUEST
,
"Invalid ioSb.Status: %x
\n
"
,
U
(
ioSb
).
Status
);
ok
(
U
(
ioSb
).
Status
==
STATUS_INVALID_DEVICE_REQUEST
,
"Invalid ioSb.Status: %x
\n
"
,
U
(
ioSb
).
Status
);
ok
(
completionValue
==
CVALUE_FIRST
,
"Invalid completion value: %lx
\n
"
,
completionValue
);
ok
(
completionValue
==
CVALUE_FIRST
,
"Invalid completion value: %lx
\n
"
,
completionValue
);
...
...
include/wine/server_protocol.h
View file @
0b4c9cb5
...
@@ -4786,8 +4786,9 @@ struct add_completion_request
...
@@ -4786,8 +4786,9 @@ struct add_completion_request
obj_handle_t
handle
;
obj_handle_t
handle
;
apc_param_t
ckey
;
apc_param_t
ckey
;
apc_param_t
cvalue
;
apc_param_t
cvalue
;
unsigned
int
information
;
apc_param_t
information
;
unsigned
int
status
;
unsigned
int
status
;
char
__pad_44
[
4
];
};
};
struct
add_completion_reply
struct
add_completion_reply
{
{
...
@@ -4806,8 +4807,9 @@ struct remove_completion_reply
...
@@ -4806,8 +4807,9 @@ struct remove_completion_reply
struct
reply_header
__header
;
struct
reply_header
__header
;
apc_param_t
ckey
;
apc_param_t
ckey
;
apc_param_t
cvalue
;
apc_param_t
cvalue
;
unsigned
int
information
;
apc_param_t
information
;
unsigned
int
status
;
unsigned
int
status
;
char
__pad_36
[
4
];
};
};
...
@@ -4846,8 +4848,9 @@ struct add_fd_completion_request
...
@@ -4846,8 +4848,9 @@ struct add_fd_completion_request
struct
request_header
__header
;
struct
request_header
__header
;
obj_handle_t
handle
;
obj_handle_t
handle
;
apc_param_t
cvalue
;
apc_param_t
cvalue
;
apc_param_t
information
;
unsigned
int
status
;
unsigned
int
status
;
unsigned
int
information
;
char
__pad_36
[
4
]
;
};
};
struct
add_fd_completion_reply
struct
add_fd_completion_reply
{
{
...
@@ -5754,6 +5757,6 @@ union generic_reply
...
@@ -5754,6 +5757,6 @@ union generic_reply
struct
set_suspend_context_reply
set_suspend_context_reply
;
struct
set_suspend_context_reply
set_suspend_context_reply
;
};
};
#define SERVER_PROTOCOL_VERSION 44
1
#define SERVER_PROTOCOL_VERSION 44
2
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/async.c
View file @
0b4c9cb5
...
@@ -241,7 +241,7 @@ void async_set_timeout( struct async *async, timeout_t timeout, unsigned int sta
...
@@ -241,7 +241,7 @@ void async_set_timeout( struct async *async, timeout_t timeout, unsigned int sta
}
}
static
void
add_async_completion
(
struct
async_queue
*
queue
,
apc_param_t
cvalue
,
unsigned
int
status
,
static
void
add_async_completion
(
struct
async_queue
*
queue
,
apc_param_t
cvalue
,
unsigned
int
status
,
unsigned
in
t
information
)
apc_param_
t
information
)
{
{
if
(
status
==
STATUS_MORE_PROCESSING_REQUIRED
)
if
(
status
==
STATUS_MORE_PROCESSING_REQUIRED
)
return
;
/* The async callback has successfully finished but no completion should be reported */
return
;
/* The async callback has successfully finished but no completion should be reported */
...
@@ -262,7 +262,7 @@ static void add_async_completion( struct async_queue *queue, apc_param_t cvalue,
...
@@ -262,7 +262,7 @@ static void add_async_completion( struct async_queue *queue, apc_param_t cvalue,
}
}
/* store the result of the client-side async callback */
/* store the result of the client-side async callback */
void
async_set_result
(
struct
object
*
obj
,
unsigned
int
status
,
unsigned
in
t
total
,
client_ptr_t
apc
)
void
async_set_result
(
struct
object
*
obj
,
unsigned
int
status
,
apc_param_
t
total
,
client_ptr_t
apc
)
{
{
struct
async
*
async
=
(
struct
async
*
)
obj
;
struct
async
*
async
=
(
struct
async
*
)
obj
;
...
...
server/completion.c
View file @
0b4c9cb5
...
@@ -82,7 +82,7 @@ struct comp_msg
...
@@ -82,7 +82,7 @@ struct comp_msg
struct
list
queue_entry
;
struct
list
queue_entry
;
apc_param_t
ckey
;
apc_param_t
ckey
;
apc_param_t
cvalue
;
apc_param_t
cvalue
;
unsigned
int
information
;
apc_param_t
information
;
unsigned
int
status
;
unsigned
int
status
;
};
};
...
@@ -152,7 +152,7 @@ struct completion *get_completion_obj( struct process *process, obj_handle_t han
...
@@ -152,7 +152,7 @@ struct completion *get_completion_obj( struct process *process, obj_handle_t han
}
}
void
add_completion
(
struct
completion
*
completion
,
apc_param_t
ckey
,
apc_param_t
cvalue
,
void
add_completion
(
struct
completion
*
completion
,
apc_param_t
ckey
,
apc_param_t
cvalue
,
unsigned
int
status
,
unsigned
in
t
information
)
unsigned
int
status
,
apc_param_
t
information
)
{
{
struct
comp_msg
*
msg
=
mem_alloc
(
sizeof
(
*
msg
)
);
struct
comp_msg
*
msg
=
mem_alloc
(
sizeof
(
*
msg
)
);
...
...
server/file.h
View file @
0b4c9cb5
...
@@ -143,7 +143,7 @@ extern struct dir *get_dir_obj( struct process *process, obj_handle_t handle, un
...
@@ -143,7 +143,7 @@ extern struct dir *get_dir_obj( struct process *process, obj_handle_t handle, un
extern
struct
completion
*
get_completion_obj
(
struct
process
*
process
,
obj_handle_t
handle
,
unsigned
int
access
);
extern
struct
completion
*
get_completion_obj
(
struct
process
*
process
,
obj_handle_t
handle
,
unsigned
int
access
);
extern
void
add_completion
(
struct
completion
*
completion
,
apc_param_t
ckey
,
apc_param_t
cvalue
,
extern
void
add_completion
(
struct
completion
*
completion
,
apc_param_t
ckey
,
apc_param_t
cvalue
,
unsigned
int
status
,
unsigned
in
t
information
);
unsigned
int
status
,
apc_param_
t
information
);
/* serial port functions */
/* serial port functions */
...
@@ -157,7 +157,7 @@ extern struct async *create_async( struct thread *thread, struct async_queue *qu
...
@@ -157,7 +157,7 @@ extern struct async *create_async( struct thread *thread, struct async_queue *qu
const
async_data_t
*
data
);
const
async_data_t
*
data
);
extern
void
async_set_timeout
(
struct
async
*
async
,
timeout_t
timeout
,
unsigned
int
status
);
extern
void
async_set_timeout
(
struct
async
*
async
,
timeout_t
timeout
,
unsigned
int
status
);
extern
void
async_set_result
(
struct
object
*
obj
,
unsigned
int
status
,
extern
void
async_set_result
(
struct
object
*
obj
,
unsigned
int
status
,
unsigned
in
t
total
,
client_ptr_t
apc
);
apc_param_
t
total
,
client_ptr_t
apc
);
extern
int
async_queued
(
struct
async_queue
*
queue
);
extern
int
async_queued
(
struct
async_queue
*
queue
);
extern
int
async_waiting
(
struct
async_queue
*
queue
);
extern
int
async_waiting
(
struct
async_queue
*
queue
);
extern
void
async_terminate
(
struct
async
*
async
,
unsigned
int
status
);
extern
void
async_terminate
(
struct
async
*
async
,
unsigned
int
status
);
...
...
server/protocol.def
View file @
0b4c9cb5
...
@@ -3326,7 +3326,7 @@ enum coords_relative
...
@@ -3326,7 +3326,7 @@ enum coords_relative
obj_handle_t handle; /* port handle */
obj_handle_t handle; /* port handle */
apc_param_t ckey; /* completion key */
apc_param_t ckey; /* completion key */
apc_param_t cvalue; /* completion value */
apc_param_t cvalue; /* completion value */
unsigned int
information; /* IO_STATUS_BLOCK Information */
apc_param_t
information; /* IO_STATUS_BLOCK Information */
unsigned int status; /* completion result */
unsigned int status; /* completion result */
@END
@END
...
@@ -3337,7 +3337,7 @@ enum coords_relative
...
@@ -3337,7 +3337,7 @@ enum coords_relative
@REPLY
@REPLY
apc_param_t ckey; /* completion key */
apc_param_t ckey; /* completion key */
apc_param_t cvalue; /* completion value */
apc_param_t cvalue; /* completion value */
unsigned int
information; /* IO_STATUS_BLOCK Information */
apc_param_t
information; /* IO_STATUS_BLOCK Information */
unsigned int status; /* completion result */
unsigned int status; /* completion result */
@END
@END
...
@@ -3362,8 +3362,8 @@ enum coords_relative
...
@@ -3362,8 +3362,8 @@ enum coords_relative
@REQ(add_fd_completion)
@REQ(add_fd_completion)
obj_handle_t handle; /* async' object */
obj_handle_t handle; /* async' object */
apc_param_t cvalue; /* completion value */
apc_param_t cvalue; /* completion value */
apc_param_t information; /* IO_STATUS_BLOCK Information */
unsigned int status; /* completion status */
unsigned int status; /* completion status */
unsigned int information; /* IO_STATUS_BLOCK Information */
@END
@END
...
...
server/request.h
View file @
0b4c9cb5
...
@@ -2108,15 +2108,15 @@ C_ASSERT( FIELD_OFFSET(struct add_completion_request, handle) == 12 );
...
@@ -2108,15 +2108,15 @@ C_ASSERT( FIELD_OFFSET(struct add_completion_request, handle) == 12 );
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
ckey
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
ckey
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
cvalue
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
cvalue
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
information
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
information
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
status
)
==
36
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_completion_request
,
status
)
==
40
);
C_ASSERT
(
sizeof
(
struct
add_completion_request
)
==
4
0
);
C_ASSERT
(
sizeof
(
struct
add_completion_request
)
==
4
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_request
,
handle
)
==
12
);
C_ASSERT
(
sizeof
(
struct
remove_completion_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
remove_completion_request
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
ckey
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
ckey
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
cvalue
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
cvalue
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
information
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
information
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
status
)
==
28
);
C_ASSERT
(
FIELD_OFFSET
(
struct
remove_completion_reply
,
status
)
==
32
);
C_ASSERT
(
sizeof
(
struct
remove_completion_reply
)
==
32
);
C_ASSERT
(
sizeof
(
struct
remove_completion_reply
)
==
40
);
C_ASSERT
(
FIELD_OFFSET
(
struct
query_completion_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
query_completion_request
,
handle
)
==
12
);
C_ASSERT
(
sizeof
(
struct
query_completion_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
query_completion_request
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
query_completion_reply
,
depth
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
query_completion_reply
,
depth
)
==
8
);
...
@@ -2127,9 +2127,9 @@ C_ASSERT( FIELD_OFFSET(struct set_completion_info_request, chandle) == 24 );
...
@@ -2127,9 +2127,9 @@ C_ASSERT( FIELD_OFFSET(struct set_completion_info_request, chandle) == 24 );
C_ASSERT
(
sizeof
(
struct
set_completion_info_request
)
==
32
);
C_ASSERT
(
sizeof
(
struct
set_completion_info_request
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
cvalue
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
cvalue
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
status
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
information
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
information
)
==
28
);
C_ASSERT
(
FIELD_OFFSET
(
struct
add_fd_completion_request
,
status
)
==
32
);
C_ASSERT
(
sizeof
(
struct
add_fd_completion_request
)
==
32
);
C_ASSERT
(
sizeof
(
struct
add_fd_completion_request
)
==
40
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_window_layered_info_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_window_layered_info_request
,
handle
)
==
12
);
C_ASSERT
(
sizeof
(
struct
get_window_layered_info_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
get_window_layered_info_request
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_window_layered_info_reply
,
color_key
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_window_layered_info_reply
,
color_key
)
==
8
);
...
...
server/trace.c
View file @
0b4c9cb5
...
@@ -3886,7 +3886,7 @@ static void dump_add_completion_request( const struct add_completion_request *re
...
@@ -3886,7 +3886,7 @@ static void dump_add_completion_request( const struct add_completion_request *re
fprintf
(
stderr
,
" handle=%04x"
,
req
->
handle
);
fprintf
(
stderr
,
" handle=%04x"
,
req
->
handle
);
dump_uint64
(
", ckey="
,
&
req
->
ckey
);
dump_uint64
(
", ckey="
,
&
req
->
ckey
);
dump_uint64
(
", cvalue="
,
&
req
->
cvalue
);
dump_uint64
(
", cvalue="
,
&
req
->
cvalue
);
fprintf
(
stderr
,
", information=%08x"
,
req
->
information
);
dump_uint64
(
", information="
,
&
req
->
information
);
fprintf
(
stderr
,
", status=%08x"
,
req
->
status
);
fprintf
(
stderr
,
", status=%08x"
,
req
->
status
);
}
}
...
@@ -3899,7 +3899,7 @@ static void dump_remove_completion_reply( const struct remove_completion_reply *
...
@@ -3899,7 +3899,7 @@ static void dump_remove_completion_reply( const struct remove_completion_reply *
{
{
dump_uint64
(
" ckey="
,
&
req
->
ckey
);
dump_uint64
(
" ckey="
,
&
req
->
ckey
);
dump_uint64
(
", cvalue="
,
&
req
->
cvalue
);
dump_uint64
(
", cvalue="
,
&
req
->
cvalue
);
fprintf
(
stderr
,
", information=%08x"
,
req
->
information
);
dump_uint64
(
", information="
,
&
req
->
information
);
fprintf
(
stderr
,
", status=%08x"
,
req
->
status
);
fprintf
(
stderr
,
", status=%08x"
,
req
->
status
);
}
}
...
@@ -3924,8 +3924,8 @@ static void dump_add_fd_completion_request( const struct add_fd_completion_reque
...
@@ -3924,8 +3924,8 @@ static void dump_add_fd_completion_request( const struct add_fd_completion_reque
{
{
fprintf
(
stderr
,
" handle=%04x"
,
req
->
handle
);
fprintf
(
stderr
,
" handle=%04x"
,
req
->
handle
);
dump_uint64
(
", cvalue="
,
&
req
->
cvalue
);
dump_uint64
(
", cvalue="
,
&
req
->
cvalue
);
dump_uint64
(
", information="
,
&
req
->
information
);
fprintf
(
stderr
,
", status=%08x"
,
req
->
status
);
fprintf
(
stderr
,
", status=%08x"
,
req
->
status
);
fprintf
(
stderr
,
", information=%08x"
,
req
->
information
);
}
}
static
void
dump_get_window_layered_info_request
(
const
struct
get_window_layered_info_request
*
req
)
static
void
dump_get_window_layered_info_request
(
const
struct
get_window_layered_info_request
*
req
)
...
...
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