From d7d9a1e104c21183506935f26d59bb00161bd797 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 9 Jul 2020 22:38:36 +0200 Subject: Add experimental RPC infrastructure This is free for experimenting RPCs, with no backward compatibility guarantees. * Makefrag.am (EXTRA_DIST): Add kern/experimental.srv. (include_mach_HEADERS): Add include/mach/experimental.defs. (nodist_lib_dep_tr_for_defs_a_SOURCES): Add kern/experimental.server.defs.c. (nodist_libkernel_a_SOURCES): Add kern/experimental.server.h, kern/experimental.server.c, kern/experimental.server.msgids. (nodist_libkernel_a_SOURCES): Add kern/experimental.server.defs. * include/mach/experimental.defs: New file. * kern/experimental.srv: New file. * kern/ipc_kobject.c: Include . (ipc_kobject_server): Call experimental_server_routine. --- Makefrag.am | 7 +++++++ include/mach/experimental.defs | 15 +++++++++++++++ kern/experimental.srv | 3 +++ kern/ipc_kobject.c | 2 ++ 4 files changed, 27 insertions(+) create mode 100644 include/mach/experimental.defs create mode 100644 kern/experimental.srv diff --git a/Makefrag.am b/Makefrag.am index 4bc7a24f..9cf976a5 100644 --- a/Makefrag.am +++ b/Makefrag.am @@ -227,6 +227,7 @@ EXTRA_DIST += \ kern/mach.srv \ kern/mach4.srv \ kern/gnumach.srv \ + kern/experimental.srv \ kern/mach_debug.srv \ kern/mach_host.srv \ kern/task_notify.cli @@ -381,6 +382,7 @@ include_mach_HEADERS = \ include/mach/memory_object_default.defs \ include/mach/notify.defs \ include/mach/std_types.defs \ + include/mach/experimental.defs \ include/mach/alert.h \ include/mach/boolean.h \ include/mach/boot.h \ @@ -531,6 +533,7 @@ nodist_lib_dep_tr_for_defs_a_SOURCES += \ kern/mach.server.defs.c \ kern/mach4.server.defs.c \ kern/gnumach.server.defs.c \ + kern/experimental.server.defs.c \ kern/mach_debug.server.defs.c \ kern/mach_host.server.defs.c nodist_libkernel_a_SOURCES += \ @@ -543,6 +546,9 @@ nodist_libkernel_a_SOURCES += \ kern/gnumach.server.h \ kern/gnumach.server.c \ kern/gnumach.server.msgids \ + kern/experimental.server.h \ + kern/experimental.server.c \ + kern/experimental.server.msgids \ kern/mach_debug.server.h \ kern/mach_debug.server.c \ kern/mach_debug.server.msgids \ @@ -552,6 +558,7 @@ nodist_libkernel_a_SOURCES += \ # kern/mach.server.defs # kern/mach4.server.defs # kern/gnumach.server.defs +# kern/experimental.server.defs # kern/mach_debug.server.defs # kern/mach_host.server.defs diff --git a/include/mach/experimental.defs b/include/mach/experimental.defs new file mode 100644 index 00000000..ddcbea5f --- /dev/null +++ b/include/mach/experimental.defs @@ -0,0 +1,15 @@ +subsystem +#if KERNEL_USER + KernelUser +#endif /* KERNEL_USER */ +#if KERNEL_SERVER + KernelServer +#endif /* KERNEL_SERVER */ + experimental 424242; + +#include +#include + +serverprefix experimental_; + +/* This is free for experimenting RPCs, with no backward compatibility guarantees. */ diff --git a/kern/experimental.srv b/kern/experimental.srv new file mode 100644 index 00000000..2ccfd783 --- /dev/null +++ b/kern/experimental.srv @@ -0,0 +1,3 @@ +#define KERNEL_SERVER 1 + +#include diff --git a/kern/ipc_kobject.c b/kern/ipc_kobject.c index 709ec9ec..5ced4037 100644 --- a/kern/ipc_kobject.c +++ b/kern/ipc_kobject.c @@ -56,6 +56,7 @@ #include #include #include +#include #if MACH_DEBUG #include @@ -170,6 +171,7 @@ ipc_kobject_server(request) #endif /* MACH_DEBUG */ || (routine = mach4_server_routine(&request->ikm_header)) != 0 || (routine = gnumach_server_routine(&request->ikm_header)) != 0 + || (routine = experimental_server_routine(&request->ikm_header)) != 0 #if MACH_MACHINE_ROUTINES || (routine = MACHINE_SERVER_ROUTINE(&request->ikm_header)) != 0 #endif /* MACH_MACHINE_ROUTINES */ -- cgit v1.2.3