diff --git a/patches/eventfd_synchronization/0013-server-Add-an-object-operation-to-grab-the-esync-fil.patch b/patches/eventfd_synchronization/0013-server-Add-an-object-operation-to-grab-the-esync-fil.patch index 43755118..de481a4d 100644 --- a/patches/eventfd_synchronization/0013-server-Add-an-object-operation-to-grab-the-esync-fil.patch +++ b/patches/eventfd_synchronization/0013-server-Add-an-object-operation-to-grab-the-esync-fil.patch @@ -1,11 +1,10 @@ -From c9b1a52208d85b3f35e7b842f0b930e9ff8d40e8 Mon Sep 17 00:00:00 2001 +From 66e4235ff8436b648ad7db3e5163bb73bcc8b6e5 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Fri, 8 Jun 2018 18:51:40 -0500 -Subject: [PATCH 13/83] server: Add an object operation to grab the esync file +Subject: [PATCH] server: Add an object operation to grab the esync file descriptor. Split off to decrease patch size. - --- server/async.c | 2 ++ server/atom.c | 1 + @@ -37,17 +36,17 @@ Split off to decrease patch size. server/snapshot.c | 1 + server/sock.c | 2 ++ server/symlink.c | 1 + - server/thread.c | 2 ++ + server/thread.c | 3 +++ server/timer.c | 1 + server/token.c | 1 + server/winstation.c | 2 ++ - 34 files changed, 61 insertions(+) + 34 files changed, 62 insertions(+) diff --git a/server/async.c b/server/async.c -index b88dd1680..75989e5d3 100644 +index 03994e8fac2..cadd3563232 100644 --- a/server/async.c +++ b/server/async.c -@@ -69,6 +69,7 @@ static const struct object_ops async_ops = +@@ -70,6 +70,7 @@ static const struct object_ops async_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ async_signaled, /* signaled */ @@ -55,7 +54,7 @@ index b88dd1680..75989e5d3 100644 async_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -458,6 +459,7 @@ static const struct object_ops iosb_ops = +@@ -483,6 +484,7 @@ static const struct object_ops iosb_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -64,7 +63,7 @@ index b88dd1680..75989e5d3 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/atom.c b/server/atom.c -index 35db8e3e9..11b7ac532 100644 +index 57aff7b8918..a3b0d83f68d 100644 --- a/server/atom.c +++ b/server/atom.c @@ -80,6 +80,7 @@ static const struct object_ops atom_table_ops = @@ -76,10 +75,10 @@ index 35db8e3e9..11b7ac532 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/change.c b/server/change.c -index ec0a549aa..82e08359c 100644 +index 6091d21f7f2..2be6a8360dd 100644 --- a/server/change.c +++ b/server/change.c -@@ -162,6 +162,7 @@ static const struct object_ops dir_ops = +@@ -115,6 +115,7 @@ static const struct object_ops dir_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ default_fd_signaled, /* signaled */ @@ -88,7 +87,7 @@ index ec0a549aa..82e08359c 100644 no_signal, /* signal */ dir_get_fd, /* get_fd */ diff --git a/server/clipboard.c b/server/clipboard.c -index e6884dd75..673aabbd0 100644 +index e6884dd75fa..673aabbd080 100644 --- a/server/clipboard.c +++ b/server/clipboard.c @@ -77,6 +77,7 @@ static const struct object_ops clipboard_ops = @@ -100,10 +99,10 @@ index e6884dd75..673aabbd0 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/completion.c b/server/completion.c -index aa60043bb..ed448b4d3 100644 +index db04727b93b..4da2ed844aa 100644 --- a/server/completion.c +++ b/server/completion.c -@@ -65,6 +65,7 @@ static const struct object_ops completion_ops = +@@ -64,6 +64,7 @@ static const struct object_ops completion_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ completion_signaled, /* signaled */ @@ -112,10 +111,10 @@ index aa60043bb..ed448b4d3 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/console.c b/server/console.c -index 7d1fc5d26..059839e06 100644 +index 5feb1c2ba7a..4100cb1c0ae 100644 --- a/server/console.c +++ b/server/console.c -@@ -77,6 +77,7 @@ static const struct object_ops console_input_ops = +@@ -84,6 +84,7 @@ static const struct object_ops console_input_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -123,7 +122,7 @@ index 7d1fc5d26..059839e06 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ console_input_get_fd, /* get_fd */ -@@ -112,6 +113,7 @@ static const struct object_ops console_input_events_ops = +@@ -119,6 +120,7 @@ static const struct object_ops console_input_events_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ console_input_events_signaled, /* signaled */ @@ -131,7 +130,7 @@ index 7d1fc5d26..059839e06 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -169,6 +171,7 @@ static const struct object_ops screen_buffer_ops = +@@ -180,6 +182,7 @@ static const struct object_ops screen_buffer_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -140,10 +139,10 @@ index 7d1fc5d26..059839e06 100644 no_signal, /* signal */ screen_buffer_get_fd, /* get_fd */ diff --git a/server/debugger.c b/server/debugger.c -index bff813a16..9a29ef41f 100644 +index 401ce36a47a..ad581be8458 100644 --- a/server/debugger.c +++ b/server/debugger.c -@@ -74,6 +74,7 @@ static const struct object_ops debug_event_ops = +@@ -73,6 +73,7 @@ static const struct object_ops debug_event_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ debug_event_signaled, /* signaled */ @@ -151,7 +150,7 @@ index bff813a16..9a29ef41f 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -101,6 +102,7 @@ static const struct object_ops debug_ctx_ops = +@@ -100,6 +101,7 @@ static const struct object_ops debug_ctx_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ debug_ctx_signaled, /* signaled */ @@ -160,10 +159,10 @@ index bff813a16..9a29ef41f 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/device.c b/server/device.c -index 9e250a8a9..67505d99c 100644 +index 01e08f295f7..368f6cf9c11 100644 --- a/server/device.c +++ b/server/device.c -@@ -66,6 +66,7 @@ static const struct object_ops irp_call_ops = +@@ -68,6 +68,7 @@ static const struct object_ops irp_call_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ irp_call_signaled, /* signaled */ @@ -171,7 +170,7 @@ index 9e250a8a9..67505d99c 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -104,6 +105,7 @@ static const struct object_ops device_manager_ops = +@@ -107,6 +108,7 @@ static const struct object_ops device_manager_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ device_manager_signaled, /* signaled */ @@ -179,7 +178,7 @@ index 9e250a8a9..67505d99c 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -146,6 +148,7 @@ static const struct object_ops device_ops = +@@ -150,6 +152,7 @@ static const struct object_ops device_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -187,7 +186,7 @@ index 9e250a8a9..67505d99c 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -192,6 +195,7 @@ static const struct object_ops device_file_ops = +@@ -199,6 +202,7 @@ static const struct object_ops device_file_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ default_fd_signaled, /* signaled */ @@ -196,10 +195,10 @@ index 9e250a8a9..67505d99c 100644 no_signal, /* signal */ device_file_get_fd, /* get_fd */ diff --git a/server/directory.c b/server/directory.c -index 4d0af8470..5972e5ae3 100644 +index 30cdd79b4a6..8083c686e11 100644 --- a/server/directory.c +++ b/server/directory.c -@@ -58,6 +58,7 @@ static const struct object_ops object_type_ops = +@@ -57,6 +57,7 @@ static const struct object_ops object_type_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -207,7 +206,7 @@ index 4d0af8470..5972e5ae3 100644 NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -96,6 +97,7 @@ static const struct object_ops directory_ops = +@@ -93,6 +94,7 @@ static const struct object_ops directory_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -216,7 +215,7 @@ index 4d0af8470..5972e5ae3 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/esync.c b/server/esync.c -index 147fb7724..f3a139da4 100644 +index 147fb77247d..f3a139da48b 100644 --- a/server/esync.c +++ b/server/esync.c @@ -53,6 +53,7 @@ static const struct object_ops esync_ops = @@ -228,7 +227,7 @@ index 147fb7724..f3a139da4 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/event.c b/server/event.c -index 511a70564..f78c12d26 100644 +index d339d85aa45..84354bacbd2 100644 --- a/server/event.c +++ b/server/event.c @@ -60,6 +60,7 @@ static const struct object_ops event_ops = @@ -248,10 +247,10 @@ index 511a70564..f78c12d26 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/fd.c b/server/fd.c -index 309eb5ebf..a855c27d5 100644 +index cc8df828a65..8e544ea95c1 100644 --- a/server/fd.c +++ b/server/fd.c -@@ -208,6 +208,7 @@ static const struct object_ops fd_ops = +@@ -212,6 +212,7 @@ static const struct object_ops fd_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -259,7 +258,7 @@ index 309eb5ebf..a855c27d5 100644 NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -248,6 +249,7 @@ static const struct object_ops device_ops = +@@ -252,6 +253,7 @@ static const struct object_ops device_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -267,7 +266,7 @@ index 309eb5ebf..a855c27d5 100644 NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -287,6 +289,7 @@ static const struct object_ops inode_ops = +@@ -291,6 +293,7 @@ static const struct object_ops inode_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -275,7 +274,7 @@ index 309eb5ebf..a855c27d5 100644 NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -328,6 +331,7 @@ static const struct object_ops file_lock_ops = +@@ -332,6 +335,7 @@ static const struct object_ops file_lock_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ file_lock_signaled, /* signaled */ @@ -284,10 +283,10 @@ index 309eb5ebf..a855c27d5 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/file.c b/server/file.c -index 9890f51e8..aa19b2b4c 100644 +index bce202138e0..8ab254d1abf 100644 --- a/server/file.c +++ b/server/file.c -@@ -94,6 +94,7 @@ static const struct object_ops file_ops = +@@ -86,6 +86,7 @@ static const struct object_ops file_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ default_fd_signaled, /* signaled */ @@ -296,7 +295,7 @@ index 9890f51e8..aa19b2b4c 100644 no_signal, /* signal */ file_get_fd, /* get_fd */ diff --git a/server/handle.c b/server/handle.c -index e40e9e95d..fc4e32f2f 100644 +index a2a8bb5479c..6ca4489a828 100644 --- a/server/handle.c +++ b/server/handle.c @@ -123,6 +123,7 @@ static const struct object_ops handle_table_ops = @@ -308,7 +307,7 @@ index e40e9e95d..fc4e32f2f 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/hook.c b/server/hook.c -index ec6be5824..f5d7639fd 100644 +index ec6be582482..f5d7639fd74 100644 --- a/server/hook.c +++ b/server/hook.c @@ -81,6 +81,7 @@ static const struct object_ops hook_table_ops = @@ -320,10 +319,10 @@ index ec6be5824..f5d7639fd 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/mailslot.c b/server/mailslot.c -index 9934884dc..a1ed2815c 100644 +index 781e6f3141a..3523e18d8f6 100644 --- a/server/mailslot.c +++ b/server/mailslot.c -@@ -79,6 +79,7 @@ static const struct object_ops mailslot_ops = +@@ -78,6 +78,7 @@ static const struct object_ops mailslot_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ default_fd_signaled, /* signaled */ @@ -331,7 +330,7 @@ index 9934884dc..a1ed2815c 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ mailslot_get_fd, /* get_fd */ -@@ -136,6 +137,7 @@ static const struct object_ops mail_writer_ops = +@@ -135,6 +136,7 @@ static const struct object_ops mail_writer_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -339,7 +338,7 @@ index 9934884dc..a1ed2815c 100644 NULL, /* satisfied */ no_signal, /* signal */ mail_writer_get_fd, /* get_fd */ -@@ -194,6 +196,7 @@ static const struct object_ops mailslot_device_ops = +@@ -193,6 +195,7 @@ static const struct object_ops mailslot_device_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -348,7 +347,7 @@ index 9934884dc..a1ed2815c 100644 no_signal, /* signal */ mailslot_device_get_fd, /* get_fd */ diff --git a/server/mapping.c b/server/mapping.c -index 0d0976a34..01e3f6760 100644 +index 3d794bfaaf9..b19403b18f9 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -91,6 +91,7 @@ static const struct object_ops ranges_ops = @@ -376,7 +375,7 @@ index 0d0976a34..01e3f6760 100644 no_signal, /* signal */ mapping_get_fd, /* get_fd */ diff --git a/server/mutex.c b/server/mutex.c -index a7ac1759c..d1505c959 100644 +index 8a8f7248eae..f5f969b3d6e 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -61,6 +61,7 @@ static const struct object_ops mutex_ops = @@ -388,7 +387,7 @@ index a7ac1759c..d1505c959 100644 mutex_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/named_pipe.c b/server/named_pipe.c -index 695684b53..aa3a8b7b7 100644 +index f97b1416415..d2ac7223b37 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -118,6 +118,7 @@ static const struct object_ops named_pipe_ops = @@ -432,7 +431,7 @@ index 695684b53..aa3a8b7b7 100644 no_signal, /* signal */ named_pipe_device_file_get_fd, /* get_fd */ diff --git a/server/object.h b/server/object.h -index a9aca35b2..592b76617 100644 +index 3144eb56678..9299d844828 100644 --- a/server/object.h +++ b/server/object.h @@ -68,6 +68,8 @@ struct object_ops @@ -445,10 +444,10 @@ index a9aca35b2..592b76617 100644 void (*satisfied)(struct object *,struct wait_queue_entry *); /* signal an object */ diff --git a/server/process.c b/server/process.c -index edd41294e..a96972e6b 100644 +index 2876bbfe67f..af370245c78 100644 --- a/server/process.c +++ b/server/process.c -@@ -76,6 +76,7 @@ static const struct object_ops process_ops = +@@ -77,6 +77,7 @@ static const struct object_ops process_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ process_signaled, /* signaled */ @@ -456,7 +455,7 @@ index edd41294e..a96972e6b 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -126,6 +127,7 @@ static const struct object_ops startup_info_ops = +@@ -127,6 +128,7 @@ static const struct object_ops startup_info_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ startup_info_signaled, /* signaled */ @@ -464,7 +463,7 @@ index edd41294e..a96972e6b 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -170,6 +172,7 @@ static const struct object_ops job_ops = +@@ -171,6 +173,7 @@ static const struct object_ops job_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ job_signaled, /* signaled */ @@ -473,7 +472,7 @@ index edd41294e..a96972e6b 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/queue.c b/server/queue.c -index eb7b346f6..3817ce543 100644 +index 05dd5059bc4..1fc1043a38b 100644 --- a/server/queue.c +++ b/server/queue.c @@ -178,6 +178,7 @@ static const struct object_ops msg_queue_ops = @@ -493,10 +492,10 @@ index eb7b346f6..3817ce543 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/registry.c b/server/registry.c -index 304fa1a11..85321d417 100644 +index dcbb3f791e1..ec30b7b2355 100644 --- a/server/registry.c +++ b/server/registry.c -@@ -167,6 +167,7 @@ static const struct object_ops key_ops = +@@ -159,6 +159,7 @@ static const struct object_ops key_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -505,10 +504,10 @@ index 304fa1a11..85321d417 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/request.c b/server/request.c -index 139d643e8..73878cf23 100644 +index 321bb6cfa81..4807ca9398f 100644 --- a/server/request.c +++ b/server/request.c -@@ -97,6 +97,7 @@ static const struct object_ops master_socket_ops = +@@ -96,6 +96,7 @@ static const struct object_ops master_socket_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -517,7 +516,7 @@ index 139d643e8..73878cf23 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/semaphore.c b/server/semaphore.c -index 33615047e..9cab1db60 100644 +index 6e2415fd79a..36e3e79e5d6 100644 --- a/server/semaphore.c +++ b/server/semaphore.c @@ -58,6 +58,7 @@ static const struct object_ops semaphore_ops = @@ -529,7 +528,7 @@ index 33615047e..9cab1db60 100644 semaphore_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/serial.c b/server/serial.c -index 429247261..2848e1dc7 100644 +index 4292472613a..2848e1dc795 100644 --- a/server/serial.c +++ b/server/serial.c @@ -92,6 +92,7 @@ static const struct object_ops serial_ops = @@ -541,7 +540,7 @@ index 429247261..2848e1dc7 100644 no_signal, /* signal */ serial_get_fd, /* get_fd */ diff --git a/server/signal.c b/server/signal.c -index c81f6b8e9..ca200394f 100644 +index c81f6b8e989..ca200394f7e 100644 --- a/server/signal.c +++ b/server/signal.c @@ -67,6 +67,7 @@ static const struct object_ops handler_ops = @@ -553,7 +552,7 @@ index c81f6b8e9..ca200394f 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/snapshot.c b/server/snapshot.c -index 2b7438c00..7d0d742ee 100644 +index 2b7438c00e0..7d0d742ee9e 100644 --- a/server/snapshot.c +++ b/server/snapshot.c @@ -61,6 +61,7 @@ static const struct object_ops snapshot_ops = @@ -565,10 +564,10 @@ index 2b7438c00..7d0d742ee 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/sock.c b/server/sock.c -index a8f8e0c38..d2c5795b6 100644 +index 5095a6ef9f0..4a10aaccf94 100644 --- a/server/sock.c +++ b/server/sock.c -@@ -146,6 +146,7 @@ static const struct object_ops sock_ops = +@@ -144,6 +144,7 @@ static const struct object_ops sock_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ sock_signaled, /* signaled */ @@ -576,7 +575,7 @@ index a8f8e0c38..d2c5795b6 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ sock_get_fd, /* get_fd */ -@@ -995,6 +996,7 @@ static const struct object_ops ifchange_ops = +@@ -959,6 +960,7 @@ static const struct object_ops ifchange_ops = add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -585,7 +584,7 @@ index a8f8e0c38..d2c5795b6 100644 no_signal, /* signal */ ifchange_get_fd, /* get_fd */ diff --git a/server/symlink.c b/server/symlink.c -index 9a8914881..df590ab7f 100644 +index e5ee09f015a..b4b6a44616e 100644 --- a/server/symlink.c +++ b/server/symlink.c @@ -60,6 +60,7 @@ static const struct object_ops symlink_ops = @@ -597,7 +596,7 @@ index 9a8914881..df590ab7f 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/thread.c b/server/thread.c -index ca976b29c..cf401f79b 100644 +index e9918408f64..067037449be 100644 --- a/server/thread.c +++ b/server/thread.c @@ -110,6 +110,7 @@ static const struct object_ops thread_apc_ops = @@ -608,7 +607,15 @@ index ca976b29c..cf401f79b 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -143,6 +144,7 @@ static const struct object_ops thread_ops = +@@ -146,6 +147,7 @@ static const struct object_ops context_ops = + add_queue, /* add_queue */ + remove_queue, /* remove_queue */ + context_signaled, /* signaled */ ++ NULL, /* get_esync_fd */ + no_satisfied, /* satisfied */ + no_signal, /* signal */ + no_get_fd, /* get_fd */ +@@ -180,6 +182,7 @@ static const struct object_ops thread_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ thread_signaled, /* signaled */ @@ -617,7 +624,7 @@ index ca976b29c..cf401f79b 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/timer.c b/server/timer.c -index 7a2057d1b..109aa0ff9 100644 +index 6460acbf519..8ce19c01177 100644 --- a/server/timer.c +++ b/server/timer.c @@ -65,6 +65,7 @@ static const struct object_ops timer_ops = @@ -629,10 +636,10 @@ index 7a2057d1b..109aa0ff9 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/token.c b/server/token.c -index eb0d73992..42ac6de6b 100644 +index 23bc1cc13f7..5e47d76ef40 100644 --- a/server/token.c +++ b/server/token.c -@@ -152,6 +152,7 @@ static const struct object_ops token_ops = +@@ -150,6 +150,7 @@ static const struct object_ops token_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -641,10 +648,10 @@ index eb0d73992..42ac6de6b 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/winstation.c b/server/winstation.c -index 55600fbe9..9e4238292 100644 +index 43d112334d4..d7c1a8ca8bf 100644 --- a/server/winstation.c +++ b/server/winstation.c -@@ -65,6 +65,7 @@ static const struct object_ops winstation_ops = +@@ -64,6 +64,7 @@ static const struct object_ops winstation_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -652,7 +659,7 @@ index 55600fbe9..9e4238292 100644 NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -89,6 +90,7 @@ static const struct object_ops desktop_ops = +@@ -88,6 +89,7 @@ static const struct object_ops desktop_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -661,5 +668,5 @@ index 55600fbe9..9e4238292 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ -- -2.20.1 +2.26.0 diff --git a/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch b/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch index 09923d97..69c400d5 100644 --- a/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch +++ b/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch @@ -1,52 +1,52 @@ -From dd64d40615a77f0588cc6a5608d098ca6ba724d6 Mon Sep 17 00:00:00 2001 +From 600ea7fc2412aab4970a3c7c54cd00c801a79f7f Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 4 Dec 2015 10:36:47 +0100 Subject: [PATCH] server: Introduce a new alloc_handle object callback. (v2) Signed-off-by: Sebastian Lackner --- - server/async.c | 2 ++ - server/atom.c | 1 + - server/change.c | 1 + - server/clipboard.c | 1 + - server/completion.c | 1 + - server/console.c | 3 +++ - server/debugger.c | 2 ++ - server/device.c | 4 ++++ - server/directory.c | 2 ++ - server/esync.c | 1 + - server/event.c | 2 ++ - server/fd.c | 4 ++++ - server/file.c | 1 + - server/handle.c | 13 +++++++++++-- - server/hook.c | 1 + - server/mailslot.c | 3 +++ - server/mapping.c | 3 +++ - server/mutex.c | 1 + - server/named_pipe.c | 7 ++++++- - server/object.c | 4 ++++ - server/object.h | 5 ++++- - server/process.c | 3 +++ - server/queue.c | 2 ++ - server/registry.c | 1 + - server/request.c | 1 + - server/semaphore.c | 1 + - server/serial.c | 1 + - server/signal.c | 1 + - server/snapshot.c | 1 + - server/sock.c | 2 ++ - server/symlink.c | 1 + - server/thread.c | 2 ++ - server/timer.c | 1 + - server/token.c | 1 + - server/winstation.c | 2 ++ - 36 files changed, 79 insertions(+), 5 deletions(-) + server/async.c | 2 ++ + server/atom.c | 1 + + server/change.c | 1 + + server/clipboard.c | 1 + + server/completion.c | 1 + + server/console.c | 3 +++ + server/debugger.c | 2 ++ + server/device.c | 4 ++++ + server/directory.c | 2 ++ + server/esync.c | 1 + + server/event.c | 2 ++ + server/fd.c | 4 ++++ + server/file.c | 1 + + server/handle.c | 13 +++++++++++-- + server/hook.c | 1 + + server/mailslot.c | 3 +++ + server/mapping.c | 3 +++ + server/mutex.c | 1 + + server/named_pipe.c | 7 ++++++- + server/object.c | 4 ++++ + server/object.h | 5 ++++- + server/process.c | 3 +++ + server/queue.c | 2 ++ + server/registry.c | 1 + + server/request.c | 1 + + server/semaphore.c | 1 + + server/serial.c | 1 + + server/signal.c | 1 + + server/snapshot.c | 1 + + server/sock.c | 2 ++ + server/symlink.c | 1 + + server/thread.c | 3 +++ + server/timer.c | 1 + + server/token.c | 1 + + server/winstation.c | 2 ++ + 35 files changed, 79 insertions(+), 4 deletions(-) diff --git a/server/async.c b/server/async.c -index 75989e5..b5aff66 100644 +index cadd3563232..4d39c4896f6 100644 --- a/server/async.c +++ b/server/async.c -@@ -81,6 +81,7 @@ static const struct object_ops async_ops = +@@ -82,6 +82,7 @@ static const struct object_ops async_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -54,7 +54,7 @@ index 75989e5..b5aff66 100644 no_close_handle, /* close_handle */ async_destroy /* destroy */ }; -@@ -471,6 +472,7 @@ static const struct object_ops iosb_ops = +@@ -496,6 +497,7 @@ static const struct object_ops iosb_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -63,7 +63,7 @@ index 75989e5..b5aff66 100644 iosb_destroy /* destroy */ }; diff --git a/server/atom.c b/server/atom.c -index 11b7ac5..e27b6f4 100644 +index a3b0d83f68d..96717a154f0 100644 --- a/server/atom.c +++ b/server/atom.c @@ -92,6 +92,7 @@ static const struct object_ops atom_table_ops = @@ -75,7 +75,7 @@ index 11b7ac5..e27b6f4 100644 atom_table_destroy /* destroy */ }; diff --git a/server/change.c b/server/change.c -index 9f07be7..1c38431 100644 +index 9f07be705d7..1c384310d59 100644 --- a/server/change.c +++ b/server/change.c @@ -127,6 +127,7 @@ static const struct object_ops dir_ops = @@ -87,7 +87,7 @@ index 9f07be7..1c38431 100644 dir_destroy /* destroy */ }; diff --git a/server/clipboard.c b/server/clipboard.c -index 673aabb..5888754 100644 +index 673aabbd080..588875439a5 100644 --- a/server/clipboard.c +++ b/server/clipboard.c @@ -89,6 +89,7 @@ static const struct object_ops clipboard_ops = @@ -99,10 +99,10 @@ index 673aabb..5888754 100644 clipboard_destroy /* destroy */ }; diff --git a/server/completion.c b/server/completion.c -index 1a074c8..c0d2ccf 100644 +index 4da2ed844aa..857662afb29 100644 --- a/server/completion.c +++ b/server/completion.c -@@ -77,6 +77,7 @@ static const struct object_ops completion_ops = +@@ -76,6 +76,7 @@ static const struct object_ops completion_ops = default_unlink_name, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -111,10 +111,10 @@ index 1a074c8..c0d2ccf 100644 completion_destroy /* destroy */ }; diff --git a/server/console.c b/server/console.c -index c322708..f437e74 100644 +index fdf3d3c6889..806293a546a 100644 --- a/server/console.c +++ b/server/console.c -@@ -90,6 +90,7 @@ static const struct object_ops console_input_ops = +@@ -97,6 +97,7 @@ static const struct object_ops console_input_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -122,7 +122,7 @@ index c322708..f437e74 100644 no_close_handle, /* close_handle */ console_input_destroy /* destroy */ }; -@@ -128,6 +129,7 @@ static const struct object_ops console_input_events_ops = +@@ -135,6 +136,7 @@ static const struct object_ops console_input_events_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -130,7 +130,7 @@ index c322708..f437e74 100644 no_close_handle, /* close_handle */ console_input_events_destroy /* destroy */ }; -@@ -186,6 +188,7 @@ static const struct object_ops screen_buffer_ops = +@@ -197,6 +199,7 @@ static const struct object_ops screen_buffer_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -139,10 +139,10 @@ index c322708..f437e74 100644 screen_buffer_destroy /* destroy */ }; diff --git a/server/debugger.c b/server/debugger.c -index 9a29ef4..1c68ee0 100644 +index ad581be8458..0bab7485101 100644 --- a/server/debugger.c +++ b/server/debugger.c -@@ -86,6 +86,7 @@ static const struct object_ops debug_event_ops = +@@ -85,6 +85,7 @@ static const struct object_ops debug_event_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -150,7 +150,7 @@ index 9a29ef4..1c68ee0 100644 no_close_handle, /* close_handle */ debug_event_destroy /* destroy */ }; -@@ -114,6 +115,7 @@ static const struct object_ops debug_ctx_ops = +@@ -113,6 +114,7 @@ static const struct object_ops debug_ctx_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -159,10 +159,10 @@ index 9a29ef4..1c68ee0 100644 debug_ctx_destroy /* destroy */ }; diff --git a/server/device.c b/server/device.c -index 5eff624..54fe311 100644 +index 17260340aad..3380d00fd54 100644 --- a/server/device.c +++ b/server/device.c -@@ -79,6 +79,7 @@ static const struct object_ops irp_call_ops = +@@ -81,6 +81,7 @@ static const struct object_ops irp_call_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -170,7 +170,7 @@ index 5eff624..54fe311 100644 no_close_handle, /* close_handle */ irp_call_destroy /* destroy */ }; -@@ -120,6 +121,7 @@ static const struct object_ops device_manager_ops = +@@ -123,6 +124,7 @@ static const struct object_ops device_manager_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -178,7 +178,7 @@ index 5eff624..54fe311 100644 no_close_handle, /* close_handle */ device_manager_destroy /* destroy */ }; -@@ -164,6 +166,7 @@ static const struct object_ops device_ops = +@@ -167,6 +169,7 @@ static const struct object_ops device_ops = default_unlink_name, /* unlink_name */ device_open_file, /* open_file */ device_get_kernel_obj_list, /* get_kernel_obj_list */ @@ -186,7 +186,7 @@ index 5eff624..54fe311 100644 no_close_handle, /* close_handle */ device_destroy /* destroy */ }; -@@ -213,6 +216,7 @@ static const struct object_ops device_file_ops = +@@ -217,6 +220,7 @@ static const struct object_ops device_file_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ device_file_get_kernel_obj_list, /* get_kernel_obj_list */ @@ -195,7 +195,7 @@ index 5eff624..54fe311 100644 device_file_destroy /* destroy */ }; diff --git a/server/directory.c b/server/directory.c -index 55cbad3..1ab0c73 100644 +index 8083c686e11..a1e631d435f 100644 --- a/server/directory.c +++ b/server/directory.c @@ -69,6 +69,7 @@ static const struct object_ops object_type_ops = @@ -215,10 +215,10 @@ index 55cbad3..1ab0c73 100644 directory_destroy /* destroy */ }; diff --git a/server/esync.c b/server/esync.c -index 4521993..dfdf6a7 100644 +index 1b035bdb066..4563b97573a 100644 --- a/server/esync.c +++ b/server/esync.c -@@ -138,6 +138,7 @@ const struct object_ops esync_ops = +@@ -140,6 +140,7 @@ const struct object_ops esync_ops = default_unlink_name, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -227,7 +227,7 @@ index 4521993..dfdf6a7 100644 esync_destroy /* destroy */ }; diff --git a/server/event.c b/server/event.c -index 79287e7..ad8fddb 100644 +index 79287e7edc0..ad8fddbfade 100644 --- a/server/event.c +++ b/server/event.c @@ -76,6 +76,7 @@ static const struct object_ops event_ops = @@ -247,10 +247,10 @@ index 79287e7..ad8fddb 100644 no_destroy /* destroy */ }; diff --git a/server/fd.c b/server/fd.c -index 2a38780..e628cdb 100644 +index 34e925f0ed7..6a539a282d7 100644 --- a/server/fd.c +++ b/server/fd.c -@@ -222,6 +222,7 @@ static const struct object_ops fd_ops = +@@ -226,6 +226,7 @@ static const struct object_ops fd_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -258,7 +258,7 @@ index 2a38780..e628cdb 100644 no_close_handle, /* close_handle */ fd_destroy /* destroy */ }; -@@ -263,6 +264,7 @@ static const struct object_ops device_ops = +@@ -267,6 +268,7 @@ static const struct object_ops device_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -266,7 +266,7 @@ index 2a38780..e628cdb 100644 no_close_handle, /* close_handle */ device_destroy /* destroy */ }; -@@ -303,6 +305,7 @@ static const struct object_ops inode_ops = +@@ -307,6 +309,7 @@ static const struct object_ops inode_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -274,7 +274,7 @@ index 2a38780..e628cdb 100644 no_close_handle, /* close_handle */ inode_destroy /* destroy */ }; -@@ -345,6 +348,7 @@ static const struct object_ops file_lock_ops = +@@ -349,6 +352,7 @@ static const struct object_ops file_lock_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -283,7 +283,7 @@ index 2a38780..e628cdb 100644 no_destroy /* destroy */ }; diff --git a/server/file.c b/server/file.c -index 3ce7307..fa96ca7 100644 +index 8ab254d1abf..7d36ad8e1fb 100644 --- a/server/file.c +++ b/server/file.c @@ -98,6 +98,7 @@ static const struct object_ops file_ops = @@ -295,7 +295,7 @@ index 3ce7307..fa96ca7 100644 file_destroy /* destroy */ }; diff --git a/server/handle.c b/server/handle.c -index 6ca4489..879098a 100644 +index 6ca4489a828..879098aee85 100644 --- a/server/handle.c +++ b/server/handle.c @@ -135,6 +135,7 @@ static const struct object_ops handle_table_ops = @@ -340,7 +340,7 @@ index 6ca4489..879098a 100644 } } diff --git a/server/hook.c b/server/hook.c -index f5d7639..22b1482 100644 +index f5d7639fd74..22b14828977 100644 --- a/server/hook.c +++ b/server/hook.c @@ -93,6 +93,7 @@ static const struct object_ops hook_table_ops = @@ -352,10 +352,10 @@ index f5d7639..22b1482 100644 hook_table_destroy /* destroy */ }; diff --git a/server/mailslot.c b/server/mailslot.c -index fc1caa9..57d0775 100644 +index 3523e18d8f6..f3e69f0b34f 100644 --- a/server/mailslot.c +++ b/server/mailslot.c -@@ -91,6 +91,7 @@ static const struct object_ops mailslot_ops = +@@ -90,6 +90,7 @@ static const struct object_ops mailslot_ops = default_unlink_name, /* unlink_name */ mailslot_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -363,7 +363,7 @@ index fc1caa9..57d0775 100644 fd_close_handle, /* close_handle */ mailslot_destroy /* destroy */ }; -@@ -149,6 +150,7 @@ static const struct object_ops mail_writer_ops = +@@ -148,6 +149,7 @@ static const struct object_ops mail_writer_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -371,7 +371,7 @@ index fc1caa9..57d0775 100644 fd_close_handle, /* close_handle */ mail_writer_destroy /* destroy */ }; -@@ -208,6 +210,7 @@ static const struct object_ops mailslot_device_ops = +@@ -207,6 +209,7 @@ static const struct object_ops mailslot_device_ops = default_unlink_name, /* unlink_name */ mailslot_device_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -380,7 +380,7 @@ index fc1caa9..57d0775 100644 mailslot_device_destroy /* destroy */ }; diff --git a/server/mapping.c b/server/mapping.c -index 1b3df08..819181a 100644 +index b19403b18f9..a882d0cda00 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -103,6 +103,7 @@ static const struct object_ops ranges_ops = @@ -408,7 +408,7 @@ index 1b3df08..819181a 100644 mapping_destroy /* destroy */ }; diff --git a/server/mutex.c b/server/mutex.c -index f5f969b..a4ab6bd 100644 +index f5f969b3d6e..a4ab6bdb3df 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -73,6 +73,7 @@ static const struct object_ops mutex_ops = @@ -420,7 +420,7 @@ index f5f969b..a4ab6bd 100644 mutex_destroy /* destroy */ }; diff --git a/server/named_pipe.c b/server/named_pipe.c -index ceb9894..6892081 100644 +index 51a43e24404..6cd6c0623e0 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -130,6 +130,7 @@ static const struct object_ops named_pipe_ops = @@ -466,10 +466,10 @@ index ceb9894..6892081 100644 named_pipe_device_file_destroy /* destroy */ }; diff --git a/server/object.c b/server/object.c -index 048da50..fbac8f7 100644 +index dacfe1d71a0..55321dddd87 100644 --- a/server/object.c +++ b/server/object.c -@@ -693,6 +693,10 @@ struct object *no_open_file( struct object *obj, unsigned int access, unsigned i +@@ -694,6 +694,10 @@ struct object *no_open_file( struct object *obj, unsigned int access, unsigned i return NULL; } @@ -481,7 +481,7 @@ index 048da50..fbac8f7 100644 { return 1; /* ok to close */ diff --git a/server/object.h b/server/object.h -index ca5a191..d913e65 100644 +index e0e8515ba15..c983d1667a8 100644 --- a/server/object.h +++ b/server/object.h @@ -93,8 +93,10 @@ struct object_ops @@ -496,7 +496,7 @@ index ca5a191..d913e65 100644 /* destroy on refcount == 0 */ void (*destroy)(struct object *); }; -@@ -169,6 +171,7 @@ extern void default_unlink_name( struct object *obj, struct object_name *name ); +@@ -170,6 +172,7 @@ extern void default_unlink_name( struct object *obj, struct object_name *name ); extern struct object *no_open_file( struct object *obj, unsigned int access, unsigned int sharing, unsigned int options ); extern struct list *no_kernel_obj_list( struct object *obj ); @@ -505,7 +505,7 @@ index ca5a191..d913e65 100644 extern void no_destroy( struct object *obj ); #ifdef DEBUG_OBJECTS diff --git a/server/process.c b/server/process.c -index 69b8189..5d1249e 100644 +index 69e5a37eccb..d497723fea5 100644 --- a/server/process.c +++ b/server/process.c @@ -91,6 +91,7 @@ static const struct object_ops process_ops = @@ -533,7 +533,7 @@ index 69b8189..5d1249e 100644 job_destroy /* destroy */ }; diff --git a/server/queue.c b/server/queue.c -index 56fa4d9..b5d0677 100644 +index ad3ed008f61..3b3cc3910aa 100644 --- a/server/queue.c +++ b/server/queue.c @@ -194,6 +194,7 @@ static const struct object_ops msg_queue_ops = @@ -553,10 +553,10 @@ index 56fa4d9..b5d0677 100644 thread_input_destroy /* destroy */ }; diff --git a/server/registry.c b/server/registry.c -index 1757fd3..e56134e 100644 +index ec30b7b2355..db15f225714 100644 --- a/server/registry.c +++ b/server/registry.c -@@ -172,6 +172,7 @@ static const struct object_ops key_ops = +@@ -171,6 +171,7 @@ static const struct object_ops key_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -565,10 +565,10 @@ index 1757fd3..e56134e 100644 key_destroy /* destroy */ }; diff --git a/server/request.c b/server/request.c -index 73878cf..f089ccc 100644 +index 4807ca9398f..6d2011fb444 100644 --- a/server/request.c +++ b/server/request.c -@@ -109,6 +109,7 @@ static const struct object_ops master_socket_ops = +@@ -108,6 +108,7 @@ static const struct object_ops master_socket_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -577,7 +577,7 @@ index 73878cf..f089ccc 100644 master_socket_destroy /* destroy */ }; diff --git a/server/semaphore.c b/server/semaphore.c -index 36e3e79..1913871 100644 +index 36e3e79e5d6..1913871859a 100644 --- a/server/semaphore.c +++ b/server/semaphore.c @@ -70,6 +70,7 @@ static const struct object_ops semaphore_ops = @@ -589,7 +589,7 @@ index 36e3e79..1913871 100644 no_destroy /* destroy */ }; diff --git a/server/serial.c b/server/serial.c -index 2848e1d..966b8bc 100644 +index 2848e1dc795..966b8bc6b81 100644 --- a/server/serial.c +++ b/server/serial.c @@ -104,6 +104,7 @@ static const struct object_ops serial_ops = @@ -601,7 +601,7 @@ index 2848e1d..966b8bc 100644 serial_destroy /* destroy */ }; diff --git a/server/signal.c b/server/signal.c -index ca20039..a2e0efe 100644 +index ca200394f7e..a2e0efef121 100644 --- a/server/signal.c +++ b/server/signal.c @@ -79,6 +79,7 @@ static const struct object_ops handler_ops = @@ -613,7 +613,7 @@ index ca20039..a2e0efe 100644 handler_destroy /* destroy */ }; diff --git a/server/snapshot.c b/server/snapshot.c -index 7d0d742..2ad9d5d 100644 +index 7d0d742ee9e..2ad9d5d7809 100644 --- a/server/snapshot.c +++ b/server/snapshot.c @@ -73,6 +73,7 @@ static const struct object_ops snapshot_ops = @@ -625,7 +625,7 @@ index 7d0d742..2ad9d5d 100644 snapshot_destroy /* destroy */ }; diff --git a/server/sock.c b/server/sock.c -index ac83081..d373768 100644 +index 4a10aaccf94..f951f23d64a 100644 --- a/server/sock.c +++ b/server/sock.c @@ -156,6 +156,7 @@ static const struct object_ops sock_ops = @@ -645,7 +645,7 @@ index ac83081..d373768 100644 ifchange_destroy /* destroy */ }; diff --git a/server/symlink.c b/server/symlink.c -index 6b66b23..52387be 100644 +index b4b6a44616e..44237bc8b18 100644 --- a/server/symlink.c +++ b/server/symlink.c @@ -72,6 +72,7 @@ static const struct object_ops symlink_ops = @@ -657,7 +657,7 @@ index 6b66b23..52387be 100644 symlink_destroy /* destroy */ }; diff --git a/server/thread.c b/server/thread.c -index 8c45419..bcb8526 100644 +index 874555bd7b4..92b83ea7f79 100644 --- a/server/thread.c +++ b/server/thread.c @@ -123,6 +123,7 @@ static const struct object_ops thread_apc_ops = @@ -668,7 +668,15 @@ index 8c45419..bcb8526 100644 no_close_handle, /* close_handle */ thread_apc_destroy /* destroy */ }; -@@ -159,6 +160,7 @@ static const struct object_ops thread_ops = +@@ -160,6 +161,7 @@ static const struct object_ops context_ops = + NULL, /* unlink_name */ + no_open_file, /* open_file */ + no_kernel_obj_list, /* get_kernel_obj_list */ ++ no_alloc_handle, /* alloc_handle */ + no_close_handle, /* close_handle */ + no_destroy /* destroy */ + }; +@@ -196,6 +198,7 @@ static const struct object_ops thread_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ thread_get_kernel_obj_list, /* get_kernel_obj_list */ @@ -677,7 +685,7 @@ index 8c45419..bcb8526 100644 destroy_thread /* destroy */ }; diff --git a/server/timer.c b/server/timer.c -index f2403fc..75d289c 100644 +index 0499080fd0c..279417b9f4c 100644 --- a/server/timer.c +++ b/server/timer.c @@ -80,6 +80,7 @@ static const struct object_ops timer_ops = @@ -689,10 +697,10 @@ index f2403fc..75d289c 100644 timer_destroy /* destroy */ }; diff --git a/server/token.c b/server/token.c -index 1a41ad0..71f8552 100644 +index 5e47d76ef40..1cdab79da70 100644 --- a/server/token.c +++ b/server/token.c -@@ -164,6 +164,7 @@ static const struct object_ops token_ops = +@@ -162,6 +162,7 @@ static const struct object_ops token_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -701,10 +709,10 @@ index 1a41ad0..71f8552 100644 token_destroy /* destroy */ }; diff --git a/server/winstation.c b/server/winstation.c -index 845043b..d7e8a5c 100644 +index d7c1a8ca8bf..32772d4805b 100644 --- a/server/winstation.c +++ b/server/winstation.c -@@ -77,6 +77,7 @@ static const struct object_ops winstation_ops = +@@ -76,6 +76,7 @@ static const struct object_ops winstation_ops = default_unlink_name, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -712,7 +720,7 @@ index 845043b..d7e8a5c 100644 winstation_close_handle, /* close_handle */ winstation_destroy /* destroy */ }; -@@ -102,6 +103,7 @@ static const struct object_ops desktop_ops = +@@ -101,6 +102,7 @@ static const struct object_ops desktop_ops = default_unlink_name, /* unlink_name */ no_open_file, /* open_file */ no_kernel_obj_list, /* get_kernel_obj_list */ @@ -721,5 +729,5 @@ index 845043b..d7e8a5c 100644 desktop_destroy /* destroy */ }; -- -1.9.1 +2.26.0