diff --git a/src/include/utils/ps_status.h b/src/include/utils/ps_status.h
index 8bc28e5d63bdb2be8d3e27e7eae3be0bf16d2e13..b786c5415ade3b17676576c5193b97d656b4da2f 100644
--- a/src/include/utils/ps_status.h
+++ b/src/include/utils/ps_status.h
@@ -11,7 +11,27 @@
 #ifndef PS_STATUS_H
 #define PS_STATUS_H
 
-#ifdef linux
+#ifdef HAVE_SETPROCTITLE
+
+extern char Ps_status_buffer[];
+
+#undef PS_DEFINE_BUFFER
+
+#define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) \
+        do { \
+                Assert(argc >= 5); \
+                setproctitle("%s %s %s %s %s", execname, hostname, username, dbname, Ps_status_buffer); \
+        } while (0)
+
+#define PS_CLEAR_STATUS() \
+        do { Ps_status_buffer[0] = '\0'; } while (0)
+
+#define PS_SET_STATUS(status) \
+        do { strcpy(Ps_status_buffer, (status)); } while (0)
+
+#define PS_STATUS (Ps_status_buffer)
+
+#elif defined(linux)
 
 #include <string.h>