From 6c8c0a3ece10938d4b9cc28c9e7e940b01cae7e8 Mon Sep 17 00:00:00 2001 From: "ruben.otto" <ruben.otto@informatik.hs-fulda.de> Date: Sun, 9 Feb 2025 20:53:14 +0100 Subject: [PATCH] feat: send daemon message to kernel --- daemon/src/main.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/daemon/src/main.c b/daemon/src/main.c index 3f0106a..6c9187b 100644 --- a/daemon/src/main.c +++ b/daemon/src/main.c @@ -1,6 +1,10 @@ #include "../../common/include/message.h" +#include "../../common/include/userspace_comm.h" #include "../include/receive.h" +#include "../include/send.h" +#include <errno.h> #include <stddef.h> +#include <string.h> #include <stdint.h> #include <stdlib.h> #include <stdio.h> @@ -11,8 +15,11 @@ #include <signal.h> userspace_receive_handle_t userspace_receive_handle; +kernel_send_handle_t kernel_send_handle; + void signal_handler(int sig) { destroy_userspace_receive_handle(&userspace_receive_handle); + destroy_kernel_send_handle(&kernel_send_handle); exit(1); } @@ -65,7 +72,17 @@ void print_message_data(message_t* message) { int main() { if (create_userspace_receive_handle(&userspace_receive_handle) != 0) { - perror("Failed to create receive module"); + if (errno == EEXIST) { + fprintf(stderr, "Failed to create message queue (file '%s' exists, has another process already created the message queue?): %s\n", MSG_QUEUE_KEY, strerror(errno)); + } else { + perror("Failed to create message queue"); + } + return EXIT_FAILURE; + } + + if (create_kernel_send_handle(&kernel_send_handle) != 0) { + destroy_userspace_receive_handle(&userspace_receive_handle); + perror("Failed to create kernel connection (is the kernel module loaded?)"); return EXIT_FAILURE; } @@ -85,6 +102,9 @@ int main() { printf("Received data from %d with length %d: ", message.measurement_id, message.length); print_message_data(&message); + if (send_kernel_message(&kernel_send_handle, &message) == -1) { + printf(" (failed to send to kernel)"); + } printf("\n"); } -- GitLab