shithub: ridefs

Download patch

ref: f21e48971068263828017c62320859748d36842e
parent: aa54e2249a500e2aa1dc42433cb0d57a0e6e07c8
author: B. Wilson <x@wilsonb.com>
date: Tue Jul 15 12:07:19 EDT 2025

Add pid to ctl files

--- a/ridefs.c
+++ b/ridefs.c
@@ -98,6 +98,7 @@
 static char *qrctl;
 static long time0;
 static uint nclients;
+static int pid;
 static int debug;
 
 void*
@@ -141,10 +142,11 @@
 		free(qrctl);
 	qrctl = smprint(
 		"version %d\n"
+		"pid %d\n"
 		"nclients %d\n"
 		"debug %d\n"
 		"defport %s\n",
-		VERSION, nclients, debug, defport);
+		VERSION, pid, nclients, debug, defport);
 
 	return strlen(qrctl);
 }
@@ -158,8 +160,9 @@
 		free(c->qctl);
 	c->qctl = smprint(
 		"%d\n"
-		"connect %s\n",
-		client, c->addr);
+		"connect %s\n"
+		"pid %d\n",
+		client, c->addr, c->ev.pid);
 
 	return strlen(c->qctl);
 }
@@ -587,7 +590,7 @@
 
 static void
 fsend(Srv*){
-	postnote(PNGROUP, getpid(), "shutdown");
+	postnote(PNGROUP, pid, "shutdown");
 	exits(nil);
 }
 
@@ -595,6 +598,11 @@
 fsattach(Req *r){
 	Rfid *f;
 
+	user = getuser();
+	time0 = time(0);
+	pid = getpid();
+	genqrctl();
+
 	f = ecalloc(sizeof(*f));
 	f->kind = Qroot;
 	f->client = -1; /* no client */
@@ -612,7 +620,6 @@
 	Rfid *f;
 	Client *c;
 	char *s;
-	int ppid;
 
 	f = r->fid->aux;
 	c = clientref(f->client);
@@ -630,7 +637,6 @@
 		r->fid->qid = r->ofcall.qid;
 		break;
 	case Qtext:
-		ppid = getpid();
 		switch(f->pid = rfork(RFPROC|RFNOWAIT|RFMEM)){
 		case 0:
 			f->l = &c->qtext;
@@ -642,7 +648,7 @@
 				pipe(&c->ev.in);
 				switch(c->ev.pid = rfork(RFPROC|RFNOWAIT|RFMEM)){
 				case 0:
-					s = smprint("/tmp/ride.%d.%d", ppid, f->client);
+					s = smprint("/tmp/ride.%d.%d", pid, f->client);
 					c->qtext.fd = create(s, ORDWR|ORCLOSE, DMREAD|DMAPPEND);
 					free(s);
 					handlemsgs(c->tdata.fd, &c->ev, &c->qtext);
@@ -651,6 +657,7 @@
 				default: break;
 				}
 			}
+			genqctl(f->client);
 
 			done:
 			wunlock(f->l);
@@ -871,15 +878,14 @@
 
 void
 usage(void){
-	fprintf(stderr, "usage: %s [-Dd] [-m mtpt] [-s service]\n", argv0);
+	fprintf(stderr, "usage: %s [-Dd] [-m mtpt] [-s service] [-p defport] -n [nclients]\n", argv0);
 }
 
 void
 main(int argc, char **argv){
-	user = getuser();
+	service = nil;
 	mtpt = "/mnt/ride";
 	defport = "4502";
-	time0 = time(0);
 	nclients = 256;
 
 	ARGBEGIN{
@@ -886,27 +892,14 @@
 	case 'D': chatty9p++; break;
 	case 'd': debug++; break;
 	case 'm': mtpt = EARGF(usage()); break;
+	case 'n': nclients = atoi(EARGF(usage())); break;
 	case 's': service = EARGF(usage()); break;
+	case 'p': defport = EARGF(usage()); break;
 	default:  usage(); return;
 	}ARGEND
 
 	cpool = ecalloc(nclients*sizeof(*cpool));
-	genqrctl();
-
 	JSONfmtinstall();
-
-	if(debug)
-		fprintf(stderr,
-			"ridefs:\n"
-			"\tchatty9p = %i\n"
-			"\tdebug = %i\n"
-			"\tmtpt = %s\n"
-			"\tservice = %s\n"
-			"\tdefport = %s\n"
-			"\tfs = %p\n"
-			"\tcpool = %p\n",
-			chatty9p, debug, mtpt, service,
-			defport, &fs, cpool);
 
 	rfork(RFNOTEG);
 	postmountsrv(&fs, service, mtpt, MREPL);
--