[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-patches
Subject: [7/8] server: Implement waiting for job objects.
From: Andrew Cook <ariscop () gmail ! com>
Date: 2015-02-28 5:58:48
Message-ID: 1427756281.24235.6.camel () andrews-laptop
[Download RAW message or body]
From: Sebastian Lackner <sebastian@fds-team.de>
---
dlls/kernel32/tests/process.c | 2 --
server/process.c | 7 ++++++-
2 files changed, 6 insertions(+), 3 deletions(-)
["0007-server-Implement-waiting-for-job-objects.patch" (text/x-patch)]
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 10abd30..b31a13f 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -2454,7 +2454,6 @@ static void test_WaitForJobObject(void)
ok(ret, "TerminateJobObject error %u\n", GetLastError());
dwret = WaitForSingleObject(job, 500);
- todo_wine
ok(dwret == WAIT_OBJECT_0 || broken(dwret == WAIT_TIMEOUT),
"WaitForSingleObject returned %u\n", dwret);
@@ -2463,7 +2462,6 @@ static void test_WaitForJobObject(void)
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
CloseHandle(job);
- todo_wine
win_skip("TerminateJobObject doesn't signal job, skipping tests\n");
return;
}
diff --git a/server/process.c b/server/process.c
index 053ff84..0f316e5 100644
--- a/server/process.c
+++ b/server/process.c
@@ -150,6 +150,7 @@ struct job
int num_processes; /* count of running processes */
int limit_flags; /* limit flags */
int terminating; /* job is terminating */
+ int signaled; /* job is signaled */
struct completion *completion_port;
apc_param_t completion_key;
};
@@ -192,6 +193,7 @@ static struct job *create_job_object( struct directory *root, const struct unico
job->num_processes = 0;
job->limit_flags = 0;
job->terminating = 0;
+ job->signaled = 0;
job->completion_port = NULL;
job->completion_key = 0;
}
@@ -289,6 +291,8 @@ static void terminate_job( struct job *job, int exit_code )
}
job->terminating = 0;
+ job->signaled = 1;
+ wake_up( &job->obj, 0 );
}
static int job_close_handle( struct object *obj, struct process *process, obj_handle_t handle )
@@ -326,7 +330,8 @@ static void job_dump( struct object *obj, int verbose )
static int job_signaled( struct object *obj, struct wait_queue_entry *entry )
{
- return 0;
+ struct job *job = (struct job *)obj;
+ return job->signaled;
}
struct ptid_entry
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic