--- /n/sources/plan9/sys/include/libc.h	Wed Sep 18 22:45:28 2013
+++ /sys/include/libc.h	Sun Feb 28 00:00:00 2016
@@ -383,6 +403,7 @@
 extern	void	perror(char*);
 extern	int	postnote(int, int, char *);
 extern	double	pow10(int);
+extern	void	procsetname(char*, ...);
 extern	int	putenv(char*, char*);
 extern	void	qsort(void*, long, long, int (*)(void*, void*));
 extern	int	setjmp(jmp_buf);
--- /n/sources/plan9/sys/src/libc/9sys/mkfile	Wed May 14 14:45:01 2014
+++ /sys/src/libc/9sys/mkfile	Sun Feb 28 00:00:00 2016
@@ -29,6 +29,7 @@
 	nulldir.$O\
 	postnote.$O\
 	privalloc.$O\
+	procsetname.$O\
 	pushssl.$O\
 	pushtls.$O\
 	putenv.$O\
--- /sys/src/libc/9sys/procsetname.c	Sun Feb 28 00:00:00 2016
+++ /sys/src/libc/9sys/procsetname.c	Sun Feb 28 00:00:00 2016
@@ -0,0 +1,27 @@
+#include <u.h>
+#include <libc.h>
+
+/*
+ * based on libthread's threadsetname, but drags in less library code.
+ * actually just sets the arguments displayed.
+ */
+void
+procsetname(char *fmt, ...)
+{
+	int fd;
+	char *cmdname;
+	char buf[128];
+	va_list arg;
+
+	va_start(arg, fmt);
+	cmdname = vsmprint(fmt, arg);
+	va_end(arg);
+	if (cmdname == nil)
+		return;
+	snprint(buf, sizeof buf, "#p/%d/args", getpid());
+	if((fd = open(buf, OWRITE)) >= 0){
+		write(fd, cmdname, strlen(cmdname)+1);
+		close(fd);
+	}
+	free(cmdname);
+}
--- /n/sources/plan9/sys/src/cmd/aux/listen.c	Tue Apr 10 18:47:02 2012
+++ /sys/src/cmd/aux/listen.c	Sun Feb 28 00:00:00 2016
@@ -53,7 +53,7 @@
  * based on libthread's threadsetname, but drags in less library code.
  * actually just sets the arguments displayed.
  */
-static void
+void
 procsetname(char *fmt, ...)
 {
 	int fd;