Module: wine Branch: master Commit: f534fbd3e3c83df49c7c6b8e608a99f2af65adc0 URL: https://source.winehq.org/git/wine.git/?a=commit;h=f534fbd3e3c83df49c7c6b8e6...
Author: Derek Lesho dereklesho52@gmail.com Date: Fri Apr 19 18:24:30 2019 +0200
server: Allow creating process kernel objects.
Signed-off-by: Derek Lesho dereklesho52@Gmail.com Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
server/process.c | 10 +++++++++- server/process.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/server/process.c b/server/process.c index 1260baf..4a1cebf 100644 --- a/server/process.c +++ b/server/process.c @@ -64,6 +64,7 @@ static struct object_type *process_get_type( struct object *obj ); static int process_signaled( struct object *obj, struct wait_queue_entry *entry ); static unsigned int process_map_access( struct object *obj, unsigned int access ); 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 ); static void terminate_process( struct process *process, struct thread *skip, int exit_code );
@@ -85,7 +86,7 @@ static const struct object_ops process_ops = no_link_name, /* link_name */ NULL, /* unlink_name */ no_open_file, /* open_file */ - no_kernel_obj_list, /* get_kernel_obj_list */ + process_get_kernel_obj_list, /* get_kernel_obj_list */ no_close_handle, /* close_handle */ process_destroy /* destroy */ }; @@ -526,6 +527,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; + list_init( &process->kernel_object ); list_init( &process->thread_list ); list_init( &process->locks ); list_init( &process->asyncs ); @@ -661,6 +663,12 @@ static unsigned int process_map_access( struct object *obj, unsigned int access return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); }
+static struct list *process_get_kernel_obj_list( struct object *obj ) +{ + struct process *process = (struct process *)obj; + return &process->kernel_object; +} + static void process_poll_event( struct fd *fd, int event ) { struct process *process = get_fd_user( fd ); diff --git a/server/process.h b/server/process.h index 4566a04..d9d29f0 100644 --- a/server/process.h +++ b/server/process.h @@ -96,6 +96,7 @@ struct process struct list rawinput_devices;/* list of registered rawinput devices */ 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 */ };
struct process_snapshot