common/system: Add ctdb_set_process_name() function
authorAmitay Isaacs <amitay@gmail.com>
Tue, 9 Jul 2013 02:24:59 +0000 (12:24 +1000)
committerAmitay Isaacs <amitay@gmail.com>
Wed, 10 Jul 2013 04:33:19 +0000 (14:33 +1000)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
(This used to be ctdb commit fc3689c977f48d7988eed0654fb8e5ce4b8bfc8b)

ctdb/common/system_aix.c
ctdb/common/system_freebsd.c
ctdb/common/system_gnu.c
ctdb/common/system_kfreebsd.c
ctdb/common/system_linux.c
ctdb/include/ctdb_private.h

index 35363d330a376d5f0afb03546dbcfc1e5bf0902b..41f61aecb5d995b42b6c33391ea3682c77fe8ac4 100644 (file)
@@ -380,6 +380,12 @@ char *ctdb_get_process_name(pid_t pid)
        return NULL;
 }
 
+int ctdb_set_process_name(const char *name)
+{
+       /* FIXME AIX: set_process_name not implemented */
+       return -ENOSYS;
+}
+
 bool ctdb_get_lock_info(pid_t req_pid, struct ctdb_lock_info *lock_info)
 {
        /* FIXME AIX: get_lock_info not implemented */
index 641e77a3b00e03ee1a96039326f4fff97a8e6f2b..9597a7ac965b27e48a60bf6204efcd80a33067d7 100644 (file)
@@ -390,6 +390,12 @@ char *ctdb_get_process_name(pid_t pid)
        return NULL;
 }
 
+int ctdb_set_process_name(const char *name)
+{
+       /* FIXME FreeBSD: set_process_name not implemented */
+       return -ENOSYS;
+}
+
 bool ctdb_get_lock_info(pid_t req_pid, struct ctdb_lock_info *lock_info)
 {
        /* FIXME FreeBSD: get_lock_info not implemented */
index 0d79ab504c8050c410bdeff95486496c19aa43d2..2ab13996132d05480e9977d1a09baf60e25bf552 100644 (file)
@@ -369,6 +369,12 @@ char *ctdb_get_process_name(pid_t pid)
        return NULL;
 }
 
+int ctdb_set_process_name(const char *name)
+{
+       /* FIXME GNU/Hurd: set_process_name not implemented */
+       return -ENOSYS;
+}
+
 bool ctdb_get_lock_info(pid_t req_pid, struct ctdb_lock_info *lock_info)
 {
        /* FIXME GNU/Hurd: get_lock_info not implemented */
index 2c05c9e053c2732a8d14b0e5fe28d578ad4c6ef4..41aa4d6d8d60a3c8428fdd53255fcb12569efd30 100644 (file)
@@ -382,6 +382,12 @@ char *ctdb_get_process_name(pid_t pid)
        return strdup(ptr);
 }
 
+int ctdb_set_process_name(const char *name)
+{
+       /* FIXME kFreeBSD: set_process_name not implemented */
+       return -ENOSYS;
+}
+
 bool ctdb_get_lock_info(pid_t req_pid, struct ctdb_lock_info *lock_info)
 {
        /* FIXME kFreeBSD: get_lock_info not implemented */
index 9d4d4ec6c92e1a32d4dba6857fdf0a48bd9c4680..9bda6d59a5c9d908209268dbcb86369acf96fa12 100644 (file)
@@ -28,6 +28,7 @@
 #include <netinet/icmp6.h>
 #include <net/if_arp.h>
 #include <netpacket/packet.h>
+#include <sys/prctl.h>
 
 #ifndef ETHERTYPE_IP6
 #define ETHERTYPE_IP6 0x86dd
@@ -596,6 +597,16 @@ char *ctdb_get_process_name(pid_t pid)
        return strdup(ptr);
 }
 
+/*
+ * Set process name
+ */
+int ctdb_set_process_name(const char *name)
+{
+       char procname[16];
+
+       strncpy(procname, name, 15);
+       return prctl(PR_SET_NAME, (unsigned long)procname, 0, 0, 0);
+}
 
 /*
  * Parsing a line from /proc/locks,
index b3d98d910dc3f8bbe016fe2059b7e4fd2e2ca171..cbaff97d919310cca1c8554d01aa8e5f68ed5214 100644 (file)
@@ -1222,6 +1222,7 @@ struct ctdb_lock_info {
 };
 
 char *ctdb_get_process_name(pid_t pid);
+int ctdb_set_process_name(const char *name);
 bool ctdb_get_lock_info(pid_t req_pid, struct ctdb_lock_info *lock_info);
 bool ctdb_get_blocker_pid(struct ctdb_lock_info *reqlock, pid_t *blocker_pid);