1*c3b00231SDavid du Colombier #include <u.h>
2*c3b00231SDavid du Colombier #include <libc.h>
3*c3b00231SDavid du Colombier
4*c3b00231SDavid du Colombier /*
5*c3b00231SDavid du Colombier * based on libthread's threadsetname, but drags in less library code.
6*c3b00231SDavid du Colombier * actually just sets the arguments displayed.
7*c3b00231SDavid du Colombier */
8*c3b00231SDavid du Colombier void
procsetname(char * fmt,...)9*c3b00231SDavid du Colombier procsetname(char *fmt, ...)
10*c3b00231SDavid du Colombier {
11*c3b00231SDavid du Colombier int fd;
12*c3b00231SDavid du Colombier char *cmdname;
13*c3b00231SDavid du Colombier char buf[128];
14*c3b00231SDavid du Colombier va_list arg;
15*c3b00231SDavid du Colombier
16*c3b00231SDavid du Colombier va_start(arg, fmt);
17*c3b00231SDavid du Colombier cmdname = vsmprint(fmt, arg);
18*c3b00231SDavid du Colombier va_end(arg);
19*c3b00231SDavid du Colombier if (cmdname == nil)
20*c3b00231SDavid du Colombier return;
21*c3b00231SDavid du Colombier snprint(buf, sizeof buf, "#p/%d/args", getpid());
22*c3b00231SDavid du Colombier if((fd = open(buf, OWRITE)) >= 0){
23*c3b00231SDavid du Colombier write(fd, cmdname, strlen(cmdname)+1);
24*c3b00231SDavid du Colombier close(fd);
25*c3b00231SDavid du Colombier }
26*c3b00231SDavid du Colombier free(cmdname);
27*c3b00231SDavid du Colombier }
28