You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Rebase against dd417540bb3afb3aa5a04a007eea9a7ee347655b.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
From e5418972013afdb97f857e49d0beb06833b3b474 Mon Sep 17 00:00:00 2001
|
||||
From 45b0af272838c1b28dee3dd50c588af888604f59 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Thu, 7 Jun 2018 20:09:59 -0500
|
||||
Subject: [PATCH] server: Create server objects for eventfd-based
|
||||
@ -28,7 +28,7 @@ index b58ce1e3002..5f225fd0591 100644
|
||||
file.c \
|
||||
diff --git a/server/esync.c b/server/esync.c
|
||||
new file mode 100644
|
||||
index 00000000000..b8b257281bf
|
||||
index 00000000000..a571855c70a
|
||||
--- /dev/null
|
||||
+++ b/server/esync.c
|
||||
@@ -0,0 +1,320 @@
|
||||
@ -152,8 +152,8 @@ index 00000000000..b8b257281bf
|
||||
+static const struct object_ops esync_ops =
|
||||
+{
|
||||
+ sizeof(struct esync), /* size */
|
||||
+ &no_type, /* type */
|
||||
+ esync_dump, /* dump */
|
||||
+ no_get_type, /* get_type */
|
||||
+ no_add_queue, /* add_queue */
|
||||
+ NULL, /* remove_queue */
|
||||
+ NULL, /* signaled */
|
||||
@ -403,10 +403,10 @@ index dae08339874..f68888d0fa8 100644
|
||||
set_current_time();
|
||||
init_scheduler();
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index eba14534b9d..63fe88f9dda 100644
|
||||
index abccc0a1275..f41afda0251 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3657,3 +3657,27 @@ struct handle_info
|
||||
@@ -3695,3 +3695,27 @@ struct handle_info
|
||||
@REQ(resume_process)
|
||||
obj_handle_t handle; /* process handle */
|
||||
@END
|
||||
@ -435,5 +435,5 @@ index eba14534b9d..63fe88f9dda 100644
|
||||
+ unsigned int shm_idx;
|
||||
+@END
|
||||
--
|
||||
2.29.2
|
||||
2.20.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 05c4a58d8cc0fbafc760d3a0d4d6c14975e33fe2 Mon Sep 17 00:00:00 2001
|
||||
From d468fdd5f1b4351f357fa75628096c6d759f0331 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <zfigura@codeweavers.com>
|
||||
Date: Mon, 6 Jul 2020 15:11:12 -0500
|
||||
Subject: [PATCH] server: Create eventfd file descriptors for process objects.
|
||||
@ -11,7 +11,7 @@ Subject: [PATCH] server: Create eventfd file descriptors for process objects.
|
||||
4 files changed, 35 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/esync.c b/server/esync.c
|
||||
index cfbbcf55c48..61513333bfd 100644
|
||||
index d61dfdcd956..e18b76bff5b 100644
|
||||
--- a/server/esync.c
|
||||
+++ b/server/esync.c
|
||||
@@ -297,6 +297,24 @@ struct esync *create_esync( struct object *root, const struct unicode_str *name,
|
||||
@ -49,7 +49,7 @@ index 7ca4ca89394..6a0a367124d 100644
|
||||
void esync_init(void);
|
||||
+int esync_create_fd( int initval, int flags );
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 30699fbaeae..febfc0237c6 100644
|
||||
index 310b2716dfa..d2919a2db09 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -49,6 +49,7 @@
|
||||
@ -58,9 +58,9 @@ index 30699fbaeae..febfc0237c6 100644
|
||||
#include "security.h"
|
||||
+#include "esync.h"
|
||||
|
||||
/* process structure */
|
||||
/* process object */
|
||||
|
||||
@@ -68,6 +69,7 @@ static struct security_descriptor *process_get_sd( struct object *obj );
|
||||
@@ -72,6 +73,7 @@ static struct security_descriptor *process_get_sd( struct object *obj );
|
||||
static void process_poll_event( struct fd *fd, int event );
|
||||
static struct list *process_get_kernel_obj_list( struct object *obj );
|
||||
static void process_destroy( struct object *obj );
|
||||
@ -68,7 +68,7 @@ index 30699fbaeae..febfc0237c6 100644
|
||||
static void terminate_process( struct process *process, struct thread *skip, int exit_code );
|
||||
|
||||
static const struct object_ops process_ops =
|
||||
@@ -78,7 +80,7 @@ static const struct object_ops process_ops =
|
||||
@@ -82,7 +84,7 @@ static const struct object_ops process_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
process_signaled, /* signaled */
|
||||
@ -77,7 +77,7 @@ index 30699fbaeae..febfc0237c6 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
@@ -545,6 +547,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
@@ -547,6 +549,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
process->trace_data = 0;
|
||||
process->rawinput_mouse = NULL;
|
||||
process->rawinput_kbd = NULL;
|
||||
@ -85,7 +85,7 @@ index 30699fbaeae..febfc0237c6 100644
|
||||
list_init( &process->kernel_object );
|
||||
list_init( &process->thread_list );
|
||||
list_init( &process->locks );
|
||||
@@ -601,6 +604,9 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
@@ -603,6 +606,9 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
if (!token_assign_label( process->token, security_high_label_sid ))
|
||||
goto error;
|
||||
|
||||
@ -103,7 +103,7 @@ index 30699fbaeae..febfc0237c6 100644
|
||||
}
|
||||
|
||||
/* dump a process on stdout for debugging purposes */
|
||||
@@ -673,6 +680,13 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
|
||||
@@ -666,6 +673,13 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
|
||||
return !process->running_threads;
|
||||
}
|
||||
|
||||
@ -118,10 +118,10 @@ index 30699fbaeae..febfc0237c6 100644
|
||||
{
|
||||
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_READ;
|
||||
diff --git a/server/process.h b/server/process.h
|
||||
index 56092e5b1ac..eec69ddbcaf 100644
|
||||
index caab869c8a0..afa90581b97 100644
|
||||
--- a/server/process.h
|
||||
+++ b/server/process.h
|
||||
@@ -98,6 +98,7 @@ struct process
|
||||
@@ -95,6 +95,7 @@ struct process
|
||||
const struct rawinput_device *rawinput_mouse; /* rawinput mouse device, if any */
|
||||
const struct rawinput_device *rawinput_kbd; /* rawinput keyboard device, if any */
|
||||
struct list kernel_object; /* list of kernel object pointers */
|
||||
@ -130,5 +130,5 @@ index 56092e5b1ac..eec69ddbcaf 100644
|
||||
|
||||
#define CPU_FLAG(cpu) (1 << (cpu))
|
||||
--
|
||||
2.28.0
|
||||
2.20.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 3ff6192702c06e77ef2e6790215ec3a40216052f Mon Sep 17 00:00:00 2001
|
||||
From bc87843880d2a1ef6f092793c09439c729fe7dbb Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Fri, 8 Jun 2018 21:01:24 -0500
|
||||
Subject: [PATCH] server: Create eventfd file descriptors for event objects.
|
||||
@ -13,7 +13,7 @@ This lets system processes shut down.
|
||||
3 files changed, 36 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/server/esync.c b/server/esync.c
|
||||
index 5f6e60ab24c..cb9bfba4463 100644
|
||||
index 2b9307267f9..975e5d2ddd6 100644
|
||||
--- a/server/esync.c
|
||||
+++ b/server/esync.c
|
||||
@@ -331,6 +331,14 @@ void esync_wake_up( struct object *obj )
|
||||
@ -41,7 +41,7 @@ index 1e12560ddd6..fcbfd0989bb 100644
|
||||
void esync_wake_up( struct object *obj );
|
||||
+void esync_clear( int fd );
|
||||
diff --git a/server/event.c b/server/event.c
|
||||
index 06655fc7dd6..a416d214912 100644
|
||||
index 7c57ce54d13..78d90dac5d6 100644
|
||||
--- a/server/event.c
|
||||
+++ b/server/event.c
|
||||
@@ -35,6 +35,7 @@
|
||||
@ -50,9 +50,9 @@ index 06655fc7dd6..a416d214912 100644
|
||||
#include "security.h"
|
||||
+#include "esync.h"
|
||||
|
||||
struct event
|
||||
{
|
||||
@@ -42,15 +43,18 @@ struct event
|
||||
static const WCHAR event_name[] = {'E','v','e','n','t'};
|
||||
|
||||
@@ -49,14 +50,17 @@ struct event
|
||||
struct list kernel_object; /* list of kernel object pointers */
|
||||
int manual_reset; /* is it a manual reset event? */
|
||||
int signaled; /* event has been signaled */
|
||||
@ -60,7 +60,6 @@ index 06655fc7dd6..a416d214912 100644
|
||||
};
|
||||
|
||||
static void event_dump( struct object *obj, int verbose );
|
||||
static struct object_type *event_get_type( struct object *obj );
|
||||
static int event_signaled( struct object *obj, struct wait_queue_entry *entry );
|
||||
static void event_satisfied( struct object *obj, struct wait_queue_entry *entry );
|
||||
+static int event_get_esync_fd( struct object *obj, enum esync_type *type );
|
||||
@ -71,7 +70,7 @@ index 06655fc7dd6..a416d214912 100644
|
||||
|
||||
static const struct object_ops event_ops =
|
||||
{
|
||||
@@ -60,7 +64,7 @@ static const struct object_ops event_ops =
|
||||
@@ -66,7 +70,7 @@ static const struct object_ops event_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
event_signaled, /* signaled */
|
||||
@ -80,7 +79,7 @@ index 06655fc7dd6..a416d214912 100644
|
||||
event_satisfied, /* satisfied */
|
||||
event_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
@@ -74,7 +78,7 @@ static const struct object_ops event_ops =
|
||||
@@ -80,7 +84,7 @@ static const struct object_ops event_ops =
|
||||
no_open_file, /* open_file */
|
||||
event_get_kernel_obj_list, /* get_kernel_obj_list */
|
||||
no_close_handle, /* close_handle */
|
||||
@ -89,7 +88,7 @@ index 06655fc7dd6..a416d214912 100644
|
||||
};
|
||||
|
||||
|
||||
@@ -128,6 +132,9 @@ struct event *create_event( struct object *root, const struct unicode_str *name,
|
||||
@@ -140,6 +144,9 @@ struct event *create_event( struct object *root, const struct unicode_str *name,
|
||||
list_init( &event->kernel_object );
|
||||
event->manual_reset = manual_reset;
|
||||
event->signaled = initial_state;
|
||||
@ -99,7 +98,7 @@ index 06655fc7dd6..a416d214912 100644
|
||||
}
|
||||
}
|
||||
return event;
|
||||
@@ -156,6 +163,9 @@ void set_event( struct event *event )
|
||||
@@ -168,6 +175,9 @@ void set_event( struct event *event )
|
||||
void reset_event( struct event *event )
|
||||
{
|
||||
event->signaled = 0;
|
||||
@ -109,7 +108,7 @@ index 06655fc7dd6..a416d214912 100644
|
||||
}
|
||||
|
||||
static void event_dump( struct object *obj, int verbose )
|
||||
@@ -180,6 +190,13 @@ static int event_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
@@ -185,6 +195,13 @@ static int event_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
return event->signaled;
|
||||
}
|
||||
|
||||
@ -123,7 +122,7 @@ index 06655fc7dd6..a416d214912 100644
|
||||
static void event_satisfied( struct object *obj, struct wait_queue_entry *entry )
|
||||
{
|
||||
struct event *event = (struct event *)obj;
|
||||
@@ -217,6 +234,14 @@ static struct list *event_get_kernel_obj_list( struct object *obj )
|
||||
@@ -222,6 +239,14 @@ static struct list *event_get_kernel_obj_list( struct object *obj )
|
||||
return &event->kernel_object;
|
||||
}
|
||||
|
||||
@ -139,5 +138,5 @@ index 06655fc7dd6..a416d214912 100644
|
||||
unsigned int attr, const struct security_descriptor *sd )
|
||||
{
|
||||
--
|
||||
2.28.0
|
||||
2.20.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 21ef43501fbef2d5ded6890932294b1160ccc810 Mon Sep 17 00:00:00 2001
|
||||
From 949b61856a56c339cbe6f8ec88a34902e200ae8e Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Fri, 8 Jun 2018 21:43:37 -0500
|
||||
Subject: [PATCH] server: Allow (re)setting esync events on the server side.
|
||||
@ -17,7 +17,7 @@ so this is how we do it.
|
||||
3 files changed, 42 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/esync.c b/server/esync.c
|
||||
index cb9bfba4463..ddee22432e5 100644
|
||||
index 975e5d2ddd6..ac59779a454 100644
|
||||
--- a/server/esync.c
|
||||
+++ b/server/esync.c
|
||||
@@ -116,7 +116,7 @@ struct esync
|
||||
@ -28,7 +28,7 @@ index cb9bfba4463..ddee22432e5 100644
|
||||
+const struct object_ops esync_ops =
|
||||
{
|
||||
sizeof(struct esync), /* size */
|
||||
esync_dump, /* dump */
|
||||
&no_type, /* type */
|
||||
@@ -339,6 +339,26 @@ void esync_clear( int fd )
|
||||
read( fd, &value, sizeof(value) );
|
||||
}
|
||||
@ -71,10 +71,10 @@ index fcbfd0989bb..aeb58c5469c 100644
|
||||
+void esync_set_event( struct esync *esync );
|
||||
+void esync_reset_event( struct esync *esync );
|
||||
diff --git a/server/event.c b/server/event.c
|
||||
index a416d214912..b6f989d4d6a 100644
|
||||
index 78d90dac5d6..bc2948c30aa 100644
|
||||
--- a/server/event.c
|
||||
+++ b/server/event.c
|
||||
@@ -142,6 +142,10 @@ struct event *create_event( struct object *root, const struct unicode_str *name,
|
||||
@@ -154,6 +154,10 @@ struct event *create_event( struct object *root, const struct unicode_str *name,
|
||||
|
||||
struct event *get_event_obj( struct process *process, obj_handle_t handle, unsigned int access )
|
||||
{
|
||||
@ -85,7 +85,7 @@ index a416d214912..b6f989d4d6a 100644
|
||||
return (struct event *)get_handle_obj( process, handle, access, &event_ops );
|
||||
}
|
||||
|
||||
@@ -155,6 +159,12 @@ void pulse_event( struct event *event )
|
||||
@@ -167,6 +171,12 @@ void pulse_event( struct event *event )
|
||||
|
||||
void set_event( struct event *event )
|
||||
{
|
||||
@ -98,7 +98,7 @@ index a416d214912..b6f989d4d6a 100644
|
||||
event->signaled = 1;
|
||||
/* wake up all waiters if manual reset, a single one otherwise */
|
||||
wake_up( &event->obj, !event->manual_reset );
|
||||
@@ -162,6 +172,11 @@ void set_event( struct event *event )
|
||||
@@ -174,6 +184,11 @@ void set_event( struct event *event )
|
||||
|
||||
void reset_event( struct event *event )
|
||||
{
|
||||
@ -111,5 +111,5 @@ index a416d214912..b6f989d4d6a 100644
|
||||
|
||||
if (do_esync())
|
||||
--
|
||||
2.28.0
|
||||
2.20.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 88819d39a698afb9024eb37d233cdddf490a0930 Mon Sep 17 00:00:00 2001
|
||||
From 183ec6174f0d6d02b9f94aaf0f0b35874e8b4b09 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Fri, 8 Jun 2018 22:04:29 -0500
|
||||
Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
|
||||
@ -9,18 +9,18 @@ Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 0fddc37856a..48c3eae7413 100644
|
||||
index d3021d3d771..26cbeee68fd 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -172,6 +172,7 @@ static const struct object_ops context_ops =
|
||||
@@ -178,6 +178,7 @@ struct type_descr thread_type =
|
||||
|
||||
static void dump_thread( struct object *obj, int verbose );
|
||||
static struct object_type *thread_get_type( struct object *obj );
|
||||
static int thread_signaled( struct object *obj, struct wait_queue_entry *entry );
|
||||
+static int thread_get_esync_fd( struct object *obj, enum esync_type *type );
|
||||
static unsigned int thread_map_access( struct object *obj, unsigned int access );
|
||||
static void thread_poll_event( struct fd *fd, int event );
|
||||
static struct list *thread_get_kernel_obj_list( struct object *obj );
|
||||
@@ -185,7 +186,7 @@ static const struct object_ops thread_ops =
|
||||
@@ -191,7 +192,7 @@ static const struct object_ops thread_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
thread_signaled, /* signaled */
|
||||
@ -29,7 +29,7 @@ index 0fddc37856a..48c3eae7413 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
@@ -225,6 +226,7 @@ static inline void init_thread_structure( struct thread *thread )
|
||||
@@ -231,6 +232,7 @@ static inline void init_thread_structure( struct thread *thread )
|
||||
thread->context = NULL;
|
||||
thread->teb = 0;
|
||||
thread->entry_point = 0;
|
||||
@ -37,7 +37,7 @@ index 0fddc37856a..48c3eae7413 100644
|
||||
thread->system_regs = 0;
|
||||
thread->queue = NULL;
|
||||
thread->wait = NULL;
|
||||
@@ -360,6 +362,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
|
||||
@@ -366,6 +368,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ index 0fddc37856a..48c3eae7413 100644
|
||||
set_fd_events( thread->request_fd, POLLIN ); /* start listening to events */
|
||||
add_process_thread( thread->process, thread );
|
||||
return thread;
|
||||
@@ -439,6 +444,9 @@ static void destroy_thread( struct object *obj )
|
||||
@@ -445,6 +450,9 @@ static void destroy_thread( struct object *obj )
|
||||
if (thread->exit_poll) remove_timeout_user( thread->exit_poll );
|
||||
if (thread->id) free_ptid( thread->id );
|
||||
if (thread->token) release_object( thread->token );
|
||||
@ -57,7 +57,7 @@ index 0fddc37856a..48c3eae7413 100644
|
||||
}
|
||||
|
||||
/* dump a thread on stdout for debugging purposes */
|
||||
@@ -464,6 +472,13 @@ static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
@@ -463,6 +471,13 @@ static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
return mythread->state == TERMINATED && !mythread->exit_poll;
|
||||
}
|
||||
|
||||
@ -84,5 +84,5 @@ index 077ab0929ba..99904557d44 100644
|
||||
struct msg_queue *queue; /* message queue */
|
||||
struct thread_wait *wait; /* current wait condition if sleeping */
|
||||
--
|
||||
2.29.2
|
||||
2.20.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 9e3d043ea15a1814f2003b7c6ebe6968b51b7740 Mon Sep 17 00:00:00 2001
|
||||
From 8a5b98f58a86731874f7d8c0e387aeab22e15fea Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Fri, 15 Jun 2018 11:01:44 -0500
|
||||
Subject: [PATCH] server: Create eventfd descriptors for timers.
|
||||
@ -8,7 +8,7 @@ Subject: [PATCH] server: Create eventfd descriptors for timers.
|
||||
1 file changed, 18 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/timer.c b/server/timer.c
|
||||
index 319b9d142db..11fcdf3bae7 100644
|
||||
index be4d5943a41..f1abca3de90 100644
|
||||
--- a/server/timer.c
|
||||
+++ b/server/timer.c
|
||||
@@ -36,6 +36,7 @@
|
||||
@ -17,9 +17,9 @@ index 319b9d142db..11fcdf3bae7 100644
|
||||
#include "request.h"
|
||||
+#include "esync.h"
|
||||
|
||||
struct timer
|
||||
{
|
||||
@@ -48,11 +49,13 @@ struct timer
|
||||
static const WCHAR timer_name[] = {'T','i','m','e','r'};
|
||||
|
||||
@@ -55,10 +56,12 @@ struct timer
|
||||
struct thread *thread; /* thread that set the APC function */
|
||||
client_ptr_t callback; /* callback APC function */
|
||||
client_ptr_t arg; /* callback argument */
|
||||
@ -27,13 +27,12 @@ index 319b9d142db..11fcdf3bae7 100644
|
||||
};
|
||||
|
||||
static void timer_dump( struct object *obj, int verbose );
|
||||
static struct object_type *timer_get_type( struct object *obj );
|
||||
static int timer_signaled( struct object *obj, struct wait_queue_entry *entry );
|
||||
+static int timer_get_esync_fd( struct object *obj, enum esync_type *type );
|
||||
static void timer_satisfied( struct object *obj, struct wait_queue_entry *entry );
|
||||
static unsigned int timer_map_access( struct object *obj, unsigned int access );
|
||||
static void timer_destroy( struct object *obj );
|
||||
@@ -65,7 +68,7 @@ static const struct object_ops timer_ops =
|
||||
@@ -71,7 +74,7 @@ static const struct object_ops timer_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
timer_signaled, /* signaled */
|
||||
@ -42,7 +41,7 @@ index 319b9d142db..11fcdf3bae7 100644
|
||||
timer_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
@@ -100,6 +103,10 @@ static struct timer *create_timer( struct object *root, const struct unicode_str
|
||||
@@ -106,6 +109,10 @@ static struct timer *create_timer( struct object *root, const struct unicode_str
|
||||
timer->period = 0;
|
||||
timer->timeout = NULL;
|
||||
timer->thread = NULL;
|
||||
@ -53,7 +52,7 @@ index 319b9d142db..11fcdf3bae7 100644
|
||||
}
|
||||
}
|
||||
return timer;
|
||||
@@ -173,6 +180,9 @@ static int set_timer( struct timer *timer, timeout_t expire, unsigned int period
|
||||
@@ -179,6 +186,9 @@ static int set_timer( struct timer *timer, timeout_t expire, unsigned int period
|
||||
{
|
||||
period = 0; /* period doesn't make any sense for a manual timer */
|
||||
timer->signaled = 0;
|
||||
@ -63,7 +62,7 @@ index 319b9d142db..11fcdf3bae7 100644
|
||||
}
|
||||
timer->when = (expire <= 0) ? expire - monotonic_time : max( expire, current_time );
|
||||
timer->period = period;
|
||||
@@ -207,6 +217,13 @@ static int timer_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
@@ -206,6 +216,13 @@ static int timer_signaled( struct object *obj, struct wait_queue_entry *entry )
|
||||
return timer->signaled;
|
||||
}
|
||||
|
||||
@ -78,5 +77,5 @@ index 319b9d142db..11fcdf3bae7 100644
|
||||
{
|
||||
struct timer *timer = (struct timer *)obj;
|
||||
--
|
||||
2.28.0
|
||||
2.20.1
|
||||
|
||||
|
Reference in New Issue
Block a user