diff --git a/daemon/src/main.c b/daemon/src/main.c index 3f0106ad3617f8ee34f4dee6b238d1eb05ce4e4c..6c9187b41595f7d6eddc04c7d772b9d66fffedd1 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"); }