From 19166f2cf32725b1907c8032ae224282a1fa3f8f Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 26 Sep 2018 14:56:23 +0200 Subject: [PATCH] libc: add procsetname() --- sys/include/libc.h | 3 +++ sys/src/cmd/aux/listen.c | 25 ------------------------- sys/src/cmd/cpu.c | 25 ------------------------- sys/src/cmd/cwfs/portfns.h | 1 - sys/src/cmd/cwfs/proc.c | 25 ------------------------- sys/src/cmd/exportfs/exportsrv.c | 25 ------------------------- sys/src/cmd/import.c | 25 ------------------------- sys/src/cmd/ip/6in4.c | 25 ------------------------- sys/src/cmd/ip/ayiya.c | 25 ------------------------- sys/src/cmd/ip/ipconfig/ipconfig.h | 1 - sys/src/cmd/ip/ipconfig/main.c | 25 ------------------------- sys/src/cmd/ip/tinc.c | 22 +--------------------- sys/src/cmd/ndb/cs.c | 25 ------------------------- sys/src/cmd/ndb/dn.c | 25 ------------------------- sys/src/cmd/ndb/dns.h | 1 - sys/src/libc/9sys/mkfile | 1 + sys/src/libc/9sys/procsetname.c | 19 +++++++++++++++++++ 17 files changed, 24 insertions(+), 274 deletions(-) create mode 100644 sys/src/libc/9sys/procsetname.c diff --git a/sys/include/libc.h b/sys/include/libc.h index 0c34f1740..7a2700539 100644 --- a/sys/include/libc.h +++ b/sys/include/libc.h @@ -489,6 +489,9 @@ extern int rwakeup(Rendez*); extern int rwakeupall(Rendez*); extern void** privalloc(void); +extern void procsetname(char*, ...); +#pragma varargck argpos procsetname 1 + /* * network dialing */ diff --git a/sys/src/cmd/aux/listen.c b/sys/src/cmd/aux/listen.c index 0114f949d..9969a9f2c 100644 --- a/sys/src/cmd/aux/listen.c +++ b/sys/src/cmd/aux/listen.c @@ -53,31 +53,6 @@ usage(void) " [-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[]) { diff --git a/sys/src/cmd/cpu.c b/sys/src/cmd/cpu.c index e45df8cac..56d1fd034 100644 --- a/sys/src/cmd/cpu.c +++ b/sys/src/cmd/cpu.c @@ -116,31 +116,6 @@ procgetname(void) 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) { diff --git a/sys/src/cmd/cwfs/portfns.h b/sys/src/cmd/cwfs/portfns.h index dbf1b8b6c..5df207770 100644 --- a/sys/src/cmd/cwfs/portfns.h +++ b/sys/src/cmd/cwfs/portfns.h @@ -142,7 +142,6 @@ int partwrite(Device*, Off, void*); void prdate(void); void preread(Device*, Off); int prime(vlong); -void procsetname(char *fmt, ...); void putbuf(Iobuf*); Off qidpathgen(Device*); void* querychanger(Device *); diff --git a/sys/src/cmd/cwfs/proc.c b/sys/src/cmd/cwfs/proc.c index 22ac02e60..492200c14 100644 --- 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) { diff --git a/sys/src/cmd/exportfs/exportsrv.c b/sys/src/cmd/exportfs/exportsrv.c index 6980648e3..23d2ed47b 100644 --- a/sys/src/cmd/exportfs/exportsrv.c +++ b/sys/src/cmd/exportfs/exportsrv.c @@ -437,31 +437,6 @@ Xwstat(Fsrpc *t) 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) { diff --git a/sys/src/cmd/import.c b/sys/src/cmd/import.c index 5162f6037..c271705b6 100644 --- a/sys/src/cmd/import.c +++ b/sys/src/cmd/import.c @@ -37,31 +37,6 @@ int filter(int, char *, char *); 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) { diff --git a/sys/src/cmd/ip/6in4.c b/sys/src/cmd/ip/6in4.c index f7e27be62..8194c5566 100644 --- a/sys/src/cmd/ip/6in4.c +++ b/sys/src/cmd/ip/6in4.c @@ -284,31 +284,6 @@ main(int argc, char **argv) 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); -} - /* * encapsulate v6 packets from the packet interface in v4 ones * and send them into the tunnel. diff --git a/sys/src/cmd/ip/ayiya.c b/sys/src/cmd/ip/ayiya.c index 76d90bc17..1d37310d1 100644 --- a/sys/src/cmd/ip/ayiya.c +++ b/sys/src/cmd/ip/ayiya.c @@ -466,31 +466,6 @@ main(int argc, char **argv) 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 diff --git a/sys/src/cmd/ip/ipconfig/ipconfig.h b/sys/src/cmd/ip/ipconfig/ipconfig.h index acdd5d62c..c4784a5e3 100644 --- a/sys/src/cmd/ip/ipconfig/ipconfig.h +++ b/sys/src/cmd/ip/ipconfig/ipconfig.h @@ -121,7 +121,6 @@ void adddefroute(uchar*, uchar*, uchar*, uchar*); 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); diff --git a/sys/src/cmd/ip/ipconfig/main.c b/sys/src/cmd/ip/ipconfig/main.c index 5b63035b3..5a85fddc5 100644 --- a/sys/src/cmd/ip/ipconfig/main.c +++ b/sys/src/cmd/ip/ipconfig/main.c @@ -801,31 +801,6 @@ catch(void*, char *msg) 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) diff --git a/sys/src/cmd/ip/tinc.c b/sys/src/cmd/ip/tinc.c index 93a5c054c..4d465124f 100644 --- a/sys/src/cmd/ip/tinc.c +++ b/sys/src/cmd/ip/tinc.c @@ -175,15 +175,12 @@ void deledge(Edge*); 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) { @@ -211,23 +208,6 @@ estrdup(char *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* fd2dir(int fd, char *dir, int len) { diff --git a/sys/src/cmd/ndb/cs.c b/sys/src/cmd/ndb/cs.c index ca92c0c49..c508ee1a2 100644 --- a/sys/src/cmd/ndb/cs.c +++ b/sys/src/cmd/ndb/cs.c @@ -201,31 +201,6 @@ usage(void) 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[]) { diff --git a/sys/src/cmd/ndb/dn.c b/sys/src/cmd/ndb/dn.c index fbcc9ac51..f565a38fe 100644 --- a/sys/src/cmd/ndb/dn.c +++ b/sys/src/cmd/ndb/dn.c @@ -1466,31 +1466,6 @@ dnslog(char *fmt, ...) syslog(0, logfile, dnserr); } -/* - * 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 diff --git a/sys/src/cmd/ndb/dns.h b/sys/src/cmd/ndb/dns.h index 95e62ba21..7bd2078f6 100644 --- a/sys/src/cmd/ndb/dns.h +++ b/sys/src/cmd/ndb/dns.h @@ -508,7 +508,6 @@ char* walkup(char*); 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*); diff --git a/sys/src/libc/9sys/mkfile b/sys/src/libc/9sys/mkfile index 6963ebbf6..686a7bd49 100644 --- a/sys/src/libc/9sys/mkfile +++ b/sys/src/libc/9sys/mkfile @@ -31,6 +31,7 @@ OFILES=\ nulldir.$O\ postnote.$O\ privalloc.$O\ + procsetname.$O\ pushssl.$O\ pushtls.$O\ putenv.$O\ diff --git a/sys/src/libc/9sys/procsetname.c b/sys/src/libc/9sys/procsetname.c new file mode 100644 index 000000000..5a75b5147 --- /dev/null +++ b/sys/src/libc/9sys/procsetname.c @@ -0,0 +1,19 @@ +#include +#include + +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); +} -- 2.44.0