From f9e5ce615d925102c8cf44f4fe61ab6aacd92c45 Mon Sep 17 00:00:00 2001 From: Pierre-Marc Fournier Date: Mon, 23 Feb 2009 15:14:42 -0500 Subject: [PATCH] move functions that send messages to traced processes to libustcomm (which is linked statically) --- libustcomm/ustcomm.c | 63 +++++++++++++++++++++++++++++++++++ libustcomm/ustcomm.h | 8 +++++ ust/ust.c | 79 ++------------------------------------------ 3 files changed, 73 insertions(+), 77 deletions(-) create mode 100644 libustcomm/ustcomm.c create mode 100644 libustcomm/ustcomm.h diff --git a/libustcomm/ustcomm.c b/libustcomm/ustcomm.c new file mode 100644 index 0000000..3843921 --- /dev/null +++ b/libustcomm/ustcomm.c @@ -0,0 +1,63 @@ +#include +#include +#include +#include +#include + +#include +#include + +#define UNIX_PATH_MAX 108 +#define SOCK_DIR "/tmp/socks" +#define UST_SIGNAL SIGIO + +static void signal_process(pid_t pid) +{ + int result; + + result = kill(pid, UST_SIGNAL); + if(result == -1) { + perror("kill"); + return; + } + + sleep(1); +} + +int send_message(pid_t pid, const char *msg, const char *reply) +{ + int fd; + int result; + struct sockaddr_un addr; + char *buf; + + result = fd = socket(PF_UNIX, SOCK_DGRAM, 0); + if(result == -1) { + perror("socket"); + return 1; + } + + addr.sun_family = AF_UNIX; + + result = snprintf(addr.sun_path, UNIX_PATH_MAX, "%s/%d", SOCK_DIR, pid); + if(result >= UNIX_PATH_MAX) { + fprintf(stderr, "string overflow allocating socket name"); + return 1; + } + + asprintf(&buf, "%s\n", msg); + + signal_process(pid); + + result = sendto(fd, buf, strlen(buf), 0, (struct sockaddr *)&addr, sizeof(addr)); + if(result == -1) { + perror("sendto"); + return 1; + } + + free(buf); + + return 0; +} + + diff --git a/libustcomm/ustcomm.h b/libustcomm/ustcomm.h new file mode 100644 index 0000000..adbd0ae --- /dev/null +++ b/libustcomm/ustcomm.h @@ -0,0 +1,8 @@ +#ifndef USTCOMM_H +#define USTCOMM_H + +#include + +int send_message(pid_t pid, const char *msg, const char *reply); + +#endif /* USTCOMM_H */ diff --git a/ust/ust.c b/ust/ust.c index 0156294..766a2fa 100644 --- a/ust/ust.c +++ b/ust/ust.c @@ -3,19 +3,8 @@ #include #include #include -#include -#include -#include -#include -#include -#define UNIX_PATH_MAX 108 -#define SOCK_DIR "/tmp/socks" -#define UST_SIGNAL SIGIO - -struct ust_msg { - char *raw; -}; +#include "ustcomm.h" void parse_opts(int argc, char **argv) { @@ -56,77 +45,13 @@ void parse_opts(int argc, char **argv) } -void signal_process(pid_t pid) -{ - int result; - - result = kill(pid, UST_SIGNAL); - if(result == -1) { - perror("kill"); - return; - } - - sleep(1); -} - -int send_message(pid_t pid, const char *msg) -{ - int fd; - int result; - struct sockaddr_un addr; - - result = fd = socket(PF_UNIX, SOCK_DGRAM, 0); - if(result == -1) { - perror("socket"); - return 1; - } - - addr.sun_family = AF_UNIX; - - result = snprintf(addr.sun_path, UNIX_PATH_MAX, "%s/%d", SOCK_DIR, pid); - if(result >= UNIX_PATH_MAX) { - fprintf(stderr, "string overflow allocating socket name"); - return 1; - } - - char *buf; - - asprintf(&buf, "%s\n", msg); - - signal_process(pid); - - result = sendto(fd, buf, strlen(buf), 0, (struct sockaddr *)&addr, sizeof(addr)); - if(result == -1) { - perror("sendto"); - return 1; - } - - free(buf); - -// result = fd = open(sockfile, O_RDWR); -// if(result == -1 && errno == ENXIO) { -// fprintf(stderr, "signalling process\n"); -// -// result = fd = open(sockfile, O_RDWR); -// if(result == -1) { -// perror("open"); -// return 1; -// } -// } -// else if(result == -1) { -// perror("open"); -// return 1; -// } - -} - int main(int argc, char *argv[]) { pid_t pid = atoi(argv[1]); char *msg = argv[2]; - send_message(pid, msg); + send_message(pid, msg, NULL); return 0; } -- 2.34.1