server: Use an explicit struct instead of a typedef for user APCs.

This commit is contained in:
Alexandre Julliard 2024-11-15 16:23:07 +01:00
parent 4c0103e58c
commit 305ec347dc
6 changed files with 14 additions and 14 deletions

View file

@ -354,7 +354,7 @@ static int wait_select_reply( void *cookie )
/*********************************************************************** /***********************************************************************
* invoke_user_apc * invoke_user_apc
*/ */
static NTSTATUS invoke_user_apc( CONTEXT *context, const user_apc_t *apc, NTSTATUS status ) static NTSTATUS invoke_user_apc( CONTEXT *context, const struct user_apc *apc, NTSTATUS status )
{ {
return call_user_apc_dispatcher( context, apc->args[0], apc->args[1], apc->args[2], return call_user_apc_dispatcher( context, apc->args[0], apc->args[1], apc->args[2],
wine_server_get_ptr( apc->func ), status ); wine_server_get_ptr( apc->func ), status );
@ -688,7 +688,7 @@ static void invoke_system_apc( const union apc_call *call, union apc_result *res
* server_select * server_select
*/ */
unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT flags, unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT flags,
timeout_t abs_timeout, context_t *context, user_apc_t *user_apc ) timeout_t abs_timeout, context_t *context, struct user_apc *user_apc )
{ {
unsigned int ret; unsigned int ret;
int cookie; int cookie;
@ -768,7 +768,7 @@ unsigned int server_wait( const select_op_t *select_op, data_size_t size, UINT f
{ {
timeout_t abs_timeout = timeout ? timeout->QuadPart : TIMEOUT_INFINITE; timeout_t abs_timeout = timeout ? timeout->QuadPart : TIMEOUT_INFINITE;
unsigned int ret; unsigned int ret;
user_apc_t apc; struct user_apc apc;
if (abs_timeout < 0) if (abs_timeout < 0)
{ {
@ -794,7 +794,7 @@ unsigned int server_wait( const select_op_t *select_op, data_size_t size, UINT f
*/ */
NTSTATUS WINAPI NtContinue( CONTEXT *context, BOOLEAN alertable ) NTSTATUS WINAPI NtContinue( CONTEXT *context, BOOLEAN alertable )
{ {
user_apc_t apc; struct user_apc apc;
NTSTATUS status; NTSTATUS status;
if (alertable) if (alertable)
@ -811,7 +811,7 @@ NTSTATUS WINAPI NtContinue( CONTEXT *context, BOOLEAN alertable )
*/ */
NTSTATUS WINAPI NtTestAlert(void) NTSTATUS WINAPI NtTestAlert(void)
{ {
user_apc_t apc; struct user_apc apc;
NTSTATUS status; NTSTATUS status;
status = server_select( NULL, 0, SELECT_INTERRUPTIBLE | SELECT_ALERTABLE, 0, NULL, &apc ); status = server_select( NULL, 0, SELECT_INTERRUPTIBLE | SELECT_ALERTABLE, 0, NULL, &apc );

View file

@ -209,7 +209,7 @@ extern unsigned int server_call_unlocked( void *req_ptr );
extern void server_enter_uninterrupted_section( pthread_mutex_t *mutex, sigset_t *sigset ); extern void server_enter_uninterrupted_section( pthread_mutex_t *mutex, sigset_t *sigset );
extern void server_leave_uninterrupted_section( pthread_mutex_t *mutex, sigset_t *sigset ); extern void server_leave_uninterrupted_section( pthread_mutex_t *mutex, sigset_t *sigset );
extern unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT flags, extern unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT flags,
timeout_t abs_timeout, context_t *context, user_apc_t *user_apc ); timeout_t abs_timeout, context_t *context, struct user_apc *user_apc );
extern unsigned int server_wait( const select_op_t *select_op, data_size_t size, UINT flags, extern unsigned int server_wait( const select_op_t *select_op, data_size_t size, UINT flags,
const LARGE_INTEGER *timeout ); const LARGE_INTEGER *timeout );
extern unsigned int server_queue_process_apc( HANDLE process, const union apc_call *call, extern unsigned int server_queue_process_apc( HANDLE process, const union apc_call *call,

View file

@ -488,18 +488,18 @@ enum apc_type
APC_DUP_HANDLE APC_DUP_HANDLE
}; };
typedef struct struct user_apc
{ {
enum apc_type type; enum apc_type type;
int __pad; int __pad;
client_ptr_t func; client_ptr_t func;
apc_param_t args[3]; apc_param_t args[3];
} user_apc_t; };
union apc_call union apc_call
{ {
enum apc_type type; enum apc_type type;
user_apc_t user; struct user_apc user;
struct struct
{ {
enum apc_type type; enum apc_type type;

View file

@ -504,18 +504,18 @@ enum apc_type
APC_DUP_HANDLE APC_DUP_HANDLE
}; };
typedef struct struct user_apc
{ {
enum apc_type type; /* APC_USER */ enum apc_type type; /* APC_USER */
int __pad; int __pad;
client_ptr_t func; /* void (__stdcall *func)(ULONG_PTR,ULONG_PTR,ULONG_PTR); */ client_ptr_t func; /* void (__stdcall *func)(ULONG_PTR,ULONG_PTR,ULONG_PTR); */
apc_param_t args[3]; /* arguments for user function */ apc_param_t args[3]; /* arguments for user function */
} user_apc_t; };
union apc_call union apc_call
{ {
enum apc_type type; enum apc_type type;
user_apc_t user; struct user_apc user;
struct struct
{ {
enum apc_type type; /* APC_ASYNC_IO */ enum apc_type type; /* APC_ASYNC_IO */

View file

@ -635,6 +635,7 @@ C_ASSERT( sizeof(struct object_type_info) == 44 );
C_ASSERT( sizeof(struct process_info) == 40 ); C_ASSERT( sizeof(struct process_info) == 40 );
C_ASSERT( sizeof(struct rawinput_device) == 12 ); C_ASSERT( sizeof(struct rawinput_device) == 12 );
C_ASSERT( sizeof(struct thread_info) == 40 ); C_ASSERT( sizeof(struct thread_info) == 40 );
C_ASSERT( sizeof(struct user_apc) == 40 );
C_ASSERT( sizeof(tcp_connection) == 60 ); C_ASSERT( sizeof(tcp_connection) == 60 );
C_ASSERT( sizeof(thread_id_t) == 4 ); C_ASSERT( sizeof(thread_id_t) == 4 );
C_ASSERT( sizeof(timeout_t) == 8 ); C_ASSERT( sizeof(timeout_t) == 8 );
@ -645,7 +646,6 @@ C_ASSERT( sizeof(unsigned __int64) == 8 );
C_ASSERT( sizeof(unsigned char) == 1 ); C_ASSERT( sizeof(unsigned char) == 1 );
C_ASSERT( sizeof(unsigned int) == 4 ); C_ASSERT( sizeof(unsigned int) == 4 );
C_ASSERT( sizeof(unsigned short) == 2 ); C_ASSERT( sizeof(unsigned short) == 2 );
C_ASSERT( sizeof(user_apc_t) == 40 );
C_ASSERT( sizeof(user_handle_t) == 4 ); C_ASSERT( sizeof(user_handle_t) == 4 );
C_ASSERT( offsetof(struct new_process_request, token) == 12 ); C_ASSERT( offsetof(struct new_process_request, token) == 12 );
C_ASSERT( offsetof(struct new_process_request, debug) == 16 ); C_ASSERT( offsetof(struct new_process_request, debug) == 16 );

View file

@ -55,7 +55,6 @@ my %formats =
"startup_info_t" => [ 96, 4 ], "startup_info_t" => [ 96, 4 ],
"tcp_connection" => [ 60, 4 ], "tcp_connection" => [ 60, 4 ],
"udp_endpoint" => [ 32, 4 ], "udp_endpoint" => [ 32, 4 ],
"user_apc_t" => [ 40, 8 ],
"union apc_call" => [ 64, 8 ], "union apc_call" => [ 64, 8 ],
"union apc_result" => [ 40, 8 ], "union apc_result" => [ 40, 8 ],
"struct filesystem_event" => [ 12, 4 ], "struct filesystem_event" => [ 12, 4 ],
@ -67,6 +66,7 @@ my %formats =
"struct process_info" => [ 40, 8 ], "struct process_info" => [ 40, 8 ],
"struct rawinput_device" => [ 12, 4 ], "struct rawinput_device" => [ 12, 4 ],
"struct thread_info" => [ 40, 8 ], "struct thread_info" => [ 40, 8 ],
"struct user_apc" => [ 40, 8 ],
); );
my $file_header = my $file_header =