shithub: riscv

Download patch

ref: 19166f2cf32725b1907c8032ae224282a1fa3f8f
parent: 311e3b51c6b1bde2f58968453de56a5ca2a6dbb4
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Sep 26 10:56:23 EDT 2018

libc: add procsetname()

--- a/sys/include/libc.h
+++ b/sys/include/libc.h
@@ -489,6 +489,9 @@
 extern	int	rwakeupall(Rendez*);
 extern	void**	privalloc(void);
 
+extern void	procsetname(char*, ...);
+#pragma varargck argpos procsetname 1
+
 /*
  *  network dialing
  */
--- a/sys/src/cmd/aux/listen.c
+++ b/sys/src/cmd/aux/listen.c
@@ -53,31 +53,6 @@
 		" [-a addr] [proto]");
 }
 
-/*
- * based on libthread's threadsetname, but drags in less library code.
- * actually just sets the arguments displayed.
- */
-static 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);
-}
-
 void
 main(int argc, char *argv[])
 {
--- a/sys/src/cmd/cpu.c
+++ b/sys/src/cmd/cpu.c
@@ -116,31 +116,6 @@
 	return strdup(lp+1);
 }
 
-/*
- * 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);
-}
-
 void
 main(int argc, char **argv)
 {
--- a/sys/src/cmd/cwfs/portfns.h
+++ b/sys/src/cmd/cwfs/portfns.h
@@ -142,7 +142,6 @@
 void	prdate(void);
 void	preread(Device*, Off);
 int	prime(vlong);
-void	procsetname(char *fmt, ...);
 void	putbuf(Iobuf*);
 Off	qidpathgen(Device*);
 void*	querychanger(Device *);
--- a/sys/src/cmd/cwfs/proc.c
+++ b/sys/src/cmd/cwfs/proc.c
@@ -1,31 +1,6 @@
 #include "all.h"
 #include "io.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);
-}
-
 void
 newproc(void (*f)(void *), void *arg, char *text)
 {
--- a/sys/src/cmd/exportfs/exportsrv.c
+++ b/sys/src/cmd/exportfs/exportsrv.c
@@ -437,31 +437,6 @@
 	putsbuf(t);
 }
 
-/*
- * 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);
-}
-
 void
 slave(Fsrpc *f)
 {
--- a/sys/src/cmd/import.c
+++ b/sys/src/cmd/import.c
@@ -37,31 +37,6 @@
 
 static void	mksecret(char *, uchar *);
 
-/*
- * 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);
-}
-
 void
 post(char *name, char *envname, int srvfd)
 {
--- a/sys/src/cmd/ip/6in4.c
+++ b/sys/src/cmd/ip/6in4.c
@@ -285,31 +285,6 @@
 }
 
 /*
- * 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);
-}
-
-/*
  * encapsulate v6 packets from the packet interface in v4 ones
  * and send them into the tunnel.
  */
--- a/sys/src/cmd/ip/ayiya.c
+++ b/sys/src/cmd/ip/ayiya.c
@@ -466,31 +466,6 @@
 	exits(0);
 }
 
-/*
- * 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);
-}
-
 static int alarmed;
 
 static void
--- a/sys/src/cmd/ip/ipconfig/ipconfig.h
+++ b/sys/src/cmd/ip/ipconfig/ipconfig.h
@@ -121,7 +121,6 @@
 void	removedefroute(uchar*, uchar*, uchar*, uchar*);
 
 long	jitter(void);
-void	procsetname(char *fmt, ...);
 void	catch(void*, char*);
 int	countaddrs(uchar *a, int len);
 void	addaddrs(uchar *to, int nto, uchar *from, int nfrom);
--- a/sys/src/cmd/ip/ipconfig/main.c
+++ b/sys/src/cmd/ip/ipconfig/main.c
@@ -801,31 +801,6 @@
 	noted(NDFLT);
 }
 
-/*
- * 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);
-}
-
 /* return pseudo-random integer in range low...(hi-1) */
 ulong
 randint(ulong low, ulong hi)
--- a/sys/src/cmd/ip/tinc.c
+++ b/sys/src/cmd/ip/tinc.c
@@ -175,15 +175,12 @@
 void	delsubnet(Snet*);
 void	netrecalc(void);
 
-void	procsetname(char *fmt, ...);
 int	consend(Conn *c, char *fmt, ...);
+#pragma varargck argpos consend 2
 void	routepkt(Host *s, uchar *p, int n);
 void	needkey(Host *from);
 void	clearkey(Host *from);
 
-#pragma varargck argpos procsetname 1
-#pragma varargck argpos consend 2
-
 void*
 emalloc(ulong len)
 {
@@ -209,23 +206,6 @@
 		sysfatal("strdup: %r");
 	setmalloctag(s, getcallerpc(&s));
 	return s;
-}
-
-void
-procsetname(char *fmt, ...)
-{
-	int fd, n;
-	char buf[128];
-	va_list arg;
-
-	snprint(buf, sizeof buf, "#p/%d/args", getpid());
-	if((fd = open(buf, OWRITE)) < 0)
-		return;
-	va_start(arg, fmt);
-	n = vsnprint(buf, sizeof buf, fmt, arg);
-	va_end(arg);
-	write(fd, buf, n+1);
-	close(fd);
 }
 
 char*
--- a/sys/src/cmd/ndb/cs.c
+++ b/sys/src/cmd/ndb/cs.c
@@ -201,31 +201,6 @@
 	exits("usage");
 }
 
-/*
- * 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);
-}
-
 void
 main(int argc, char *argv[])
 {
--- a/sys/src/cmd/ndb/dn.c
+++ b/sys/src/cmd/ndb/dn.c
@@ -1467,31 +1467,6 @@
 }
 
 /*
- * 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);
-}
-
-/*
  *  create a slave process to handle a request to avoid one request blocking
  *  another
  */
--- a/sys/src/cmd/ndb/dns.h
+++ b/sys/src/cmd/ndb/dns.h
@@ -508,7 +508,6 @@
 RR*	getdnsservers(int);
 void	logreply(int, uchar*, DNSmsg*);
 void	logsend(int, int, uchar*, char*, char*, int);
-void	procsetname(char *fmt, ...);
 
 /* dnresolve.c */
 RR*	dnresolve(char*, int, int, Request*, RR**, int, int, int, int*);
--- a/sys/src/libc/9sys/mkfile
+++ b/sys/src/libc/9sys/mkfile
@@ -31,6 +31,7 @@
 	nulldir.$O\
 	postnote.$O\
 	privalloc.$O\
+	procsetname.$O\
 	pushssl.$O\
 	pushtls.$O\
 	putenv.$O\
--- /dev/null
+++ b/sys/src/libc/9sys/procsetname.c
@@ -1,0 +1,19 @@
+#include <u.h>
+#include <libc.h>
+
+void
+procsetname(char *fmt, ...)
+{
+	int fd, n;
+	char buf[128];
+	va_list arg;
+
+	snprint(buf, sizeof buf, "#p/%lud/args", (ulong)getpid());
+	if((fd = open(buf, OWRITE)) < 0)
+		return;
+	va_start(arg, fmt);
+	n = vsnprint(buf, sizeof buf, fmt, arg);
+	va_end(arg);
+	write(fd, buf, n+1);
+	close(fd);
+}