Rebase against 18883a76762afab3e18e1279a9666240e19d4d03.

This commit is contained in:
Zebediah Figura
2019-04-08 17:01:18 -05:00
parent be0910e9a9
commit 52a77f6b00
16 changed files with 163 additions and 385 deletions

View File

@@ -1,4 +1,4 @@
From 2be2e3e30d2052362f31e95d1368b67250c0dbac Mon Sep 17 00:00:00 2001
From dec47516b5df791ff46909db03fe9752385a97d7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 12 Nov 2018 18:10:32 +0200
Subject: [PATCH] server: Do not signal violently terminated threads until they
@@ -27,10 +27,10 @@ Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
2 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/server/thread.c b/server/thread.c
index 7162fc3..372882f 100644
index b1d324f7d..044d73ca9 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -199,6 +199,7 @@ static inline void init_thread_structure( struct thread *thread )
@@ -203,6 +203,7 @@ static inline void init_thread_structure( struct thread *thread )
thread->suspend = 0;
thread->desktop_users = 0;
thread->token = NULL;
@@ -38,7 +38,7 @@ index 7162fc3..372882f 100644
thread->creation_time = current_time;
thread->exit_time = 0;
@@ -347,6 +348,7 @@ static void destroy_thread( struct object *obj )
@@ -358,6 +359,7 @@ static void destroy_thread( struct object *obj )
list_remove( &thread->entry );
cleanup_thread( thread );
release_object( thread->process );
@@ -46,7 +46,7 @@ index 7162fc3..372882f 100644
if (thread->id) free_ptid( thread->id );
if (thread->token) release_object( thread->token );
}
@@ -364,7 +366,7 @@ static void dump_thread( struct object *obj, int verbose )
@@ -382,7 +384,7 @@ static struct object_type *thread_get_type( struct object *obj )
static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
{
struct thread *mythread = (struct thread *)obj;
@@ -55,7 +55,7 @@ index 7162fc3..372882f 100644
}
static unsigned int thread_map_access( struct object *obj, unsigned int access )
@@ -1125,6 +1127,26 @@ int thread_get_inflight_fd( struct thread *thread, int client )
@@ -1143,6 +1145,26 @@ int thread_get_inflight_fd( struct thread *thread, int client )
return -1;
}
@@ -82,7 +82,7 @@ index 7162fc3..372882f 100644
/* kill a thread on the spot */
void kill_thread( struct thread *thread, int violent_death )
{
@@ -1145,8 +1167,12 @@ void kill_thread( struct thread *thread, int violent_death )
@@ -1163,8 +1185,12 @@ void kill_thread( struct thread *thread, int violent_death )
kill_console_processes( thread, 0 );
debug_exit_thread( thread );
abandon_mutexes( thread );
@@ -98,17 +98,17 @@ index 7162fc3..372882f 100644
remove_process_thread( thread->process, thread );
release_object( thread );
diff --git a/server/thread.h b/server/thread.h
index e4332df..1b01c68 100644
index bafc08ed4..4e7f794c0 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -89,6 +89,7 @@ struct thread
timeout_t creation_time; /* Thread creation time */
@@ -90,6 +90,7 @@ struct thread
timeout_t exit_time; /* Thread exit time */
struct token *token; /* security token associated with this thread */
struct list kernel_object; /* list of kernel object pointers */
+ struct timeout_user *exit_poll; /* poll if the thread/process has exited already */
};
struct thread_snapshot
--
1.9.1
2.21.0