this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Update RPC definitions

See darlinghq/darlingserver@a82cff60698511ee0b4a39379b5293be9e981a22

+82
+1
src/kernel/emulation/linux/CMakeLists.txt
··· 307 307 xtrace-hooks.S 308 308 309 309 ${CMAKE_BINARY_DIR}/src/external/darlingserver/src/rpc.c 310 + resources/dserver-rpc-defs.c 310 311 ) 311 312 312 313 set_source_files_properties(signal/duct_signals.c PROPERTIES COMPILE_FLAGS "-nostdinc")
+39
src/kernel/emulation/linux/resources/dserver-rpc-defs.c
··· 1 + #include "dserver-rpc-defs.h" 2 + #include <darlingserver/rpc.h> 3 + 4 + void __dserver_rpc_hooks_push_reply(int socket, const dserver_rpc_hooks_msghdr_t* reply, size_t size) { 5 + dserver_rpc_call_push_reply_t call = { 6 + .header = { 7 + .architecture = dserver_rpc_hooks_get_architecture(), 8 + .pid = dserver_rpc_hooks_get_pid(), 9 + .tid = dserver_rpc_hooks_get_tid(), 10 + .number = dserver_callnum_push_reply, 11 + }, 12 + .reply = reply->msg_iov->iov_base, 13 + .reply_size = size, 14 + }; 15 + dserver_rpc_hooks_iovec_t call_data = { 16 + .iov_base = &call, 17 + .iov_len = sizeof(call), 18 + }; 19 + dserver_rpc_hooks_msghdr_t callmsg = { 20 + .msg_name = dserver_rpc_hooks_get_server_address(), 21 + .msg_namelen = dserver_rpc_hooks_get_server_address_length(), 22 + .msg_iov = &call_data, 23 + .msg_iovlen = 1, 24 + .msg_control = reply->msg_control, 25 + .msg_controllen = reply->msg_controllen, 26 + }; 27 + 28 + long int long_status = dserver_rpc_hooks_send_message(socket, &callmsg); 29 + 30 + if (long_status < 0) { 31 + dserver_rpc_hooks_printf("*** %d:%d: %s: BAD SEND STATUS: %ld ***\n", dserver_rpc_hooks_get_pid(), dserver_rpc_hooks_get_tid(), __func__, long_status); 32 + __simple_abort(); 33 + } 34 + 35 + if (long_status != sizeof(call)) { 36 + dserver_rpc_hooks_printf("*** %d:%d: %s: BAD SEND LENGTH: %ld (expected %zu) ***\n", dserver_rpc_hooks_get_pid(), dserver_rpc_hooks_get_tid(), __func__, long_status, sizeof(call)); 37 + __simple_abort(); 38 + } 39 + };
+20
src/kernel/emulation/linux/resources/dserver-rpc-defs.h
··· 10 10 #include "../mach/lkm.h" 11 11 #include "../elfcalls_wrapper.h" 12 12 #include "../simple.h" 13 + #include "../signal/sigprocmask.h" 13 14 14 15 #include <darlingserver/rpc-supplement.h> 15 16 ··· 189 190 #define dserver_rpc_hooks_close_fd(fd) ((int)LINUX_SYSCALL1(__NR_close, fd)) 190 191 191 192 #define dserver_rpc_hooks_get_socket mach_driver_get_fd 193 + 194 + #define dserver_rpc_hooks_printf __simple_printf 195 + 196 + #define dserver_rpc_hooks_atomic_save_t sigset_t 197 + 198 + static void dserver_rpc_hooks_atomic_begin(dserver_rpc_hooks_atomic_save_t* atomic_save) { 199 + // see sys_disable_threadsignal() 200 + sigset_t set = ~0; 201 + sys_sigprocmask(SIG_BLOCK, &set, atomic_save); 202 + }; 203 + 204 + static void dserver_rpc_hooks_atomic_end(dserver_rpc_hooks_atomic_save_t* atomic_save) { 205 + sys_sigprocmask(SIG_SETMASK, atomic_save, NULL); 206 + }; 207 + 208 + #define dserver_rpc_hooks_get_interrupt_status() (-LINUX_EINTR) 209 + 210 + extern void __dserver_rpc_hooks_push_reply(int socket, const dserver_rpc_hooks_msghdr_t* reply, size_t size); 211 + #define dserver_rpc_hooks_push_reply __dserver_rpc_hooks_push_reply
+22
src/startup/mldr/resources/dserver-rpc-defs.h
··· 6 6 #include <string.h> 7 7 #include <errno.h> 8 8 #include <stdio.h> 9 + #include <signal.h> 9 10 10 11 #include <darlingserver/rpc-supplement.h> 11 12 ··· 82 83 extern int __dserver_main_thread_socket_fd; 83 84 84 85 #define dserver_rpc_hooks_get_socket() __dserver_main_thread_socket_fd 86 + 87 + #define dserver_rpc_hooks_printf(...) fprintf(stderr, ## __VA_ARGS__) 88 + 89 + #define dserver_rpc_hooks_atomic_save_t sigset_t 90 + 91 + static void dserver_rpc_hooks_atomic_begin(dserver_rpc_hooks_atomic_save_t* atomic_save) { 92 + sigset_t set; 93 + sigfillset(&set); 94 + pthread_sigmask(SIG_BLOCK, &set, atomic_save); 95 + }; 96 + 97 + static void dserver_rpc_hooks_atomic_end(dserver_rpc_hooks_atomic_save_t* atomic_save) { 98 + pthread_sigmask(SIG_SETMASK, atomic_save, NULL); 99 + }; 100 + 101 + #define dserver_rpc_hooks_get_interrupt_status() (-EINTR) 102 + 103 + static void dserver_rpc_hooks_push_reply(int socket, const dserver_rpc_hooks_msghdr_t* reply, size_t size) { 104 + // we shouldn't need to push any replies in mldr 105 + abort(); 106 + };