Browse Source

Plan 9 from Bell Labs 2003-11-19

David du Colombier 20 years ago
parent
commit
669a60ed9a

+ 16 - 16
dist/replica/plan9.db

@@ -4867,10 +4867,10 @@ sys/man/4/acme - 664 sys sys 1015024813 9642
 sys/man/4/archfs - 664 sys sys 960000712 533
 sys/man/4/cdfs - 664 sys sys 1026846913 3638
 sys/man/4/cfs - 664 sys sys 1015024813 1758
-sys/man/4/consolefs - 664 sys sys 1022112154 3751
+sys/man/4/consolefs - 664 sys sys 1069179473 3920
 sys/man/4/dossrv - 664 sys sys 1015024813 4176
 sys/man/4/execnet - 664 sys sys 1019866708 1069
-sys/man/4/exportfs - 664 sys sys 1066826682 4336
+sys/man/4/exportfs - 664 sys sys 1069024226 4370
 sys/man/4/ext2srv - 664 sys sys 1055692986 2409
 sys/man/4/factotum - 664 sys sys 1053127875 14460
 sys/man/4/fossil - 664 sys sys 1055701130 9208
@@ -5017,7 +5017,7 @@ sys/man/8/timesync - 664 sys sys 1022590210 1629
 sys/man/8/tlssrv - 664 sys sys 1037580152 2594
 sys/man/8/udpecho - 664 sys sys 954305553 303
 sys/man/8/update - 664 sys sys 961259288 2336
-sys/man/8/venti - 664 sys sys 1055707404 5274
+sys/man/8/venti - 664 sys sys 1069101926 5422
 sys/man/8/ventiaux - 664 sys sys 1063855987 10487
 sys/man/8/vga - 664 sys sys 959698505 3557
 sys/man/fonts - 664 sys sys 944959700 218
@@ -7062,7 +7062,7 @@ sys/src/cmd/cpp/mkfile - 664 sys sys 944960879 178
 sys/src/cmd/cpp/nlist.c - 664 sys sys 944960879 4631
 sys/src/cmd/cpp/test.c - 664 sys sys 944960879 47
 sys/src/cmd/cpp/tokens.c - 664 sys sys 944960879 6755
-sys/src/cmd/cpu.c - 664 sys sys 1067953662 20525
+sys/src/cmd/cpu.c - 664 sys sys 1069024220 20525
 sys/src/cmd/crop.c - 664 sys sys 1039753034 4136
 sys/src/cmd/date.c - 664 sys sys 944961351 449
 sys/src/cmd/db - 20000000775 sys sys 988249965 0
@@ -7256,7 +7256,7 @@ sys/src/cmd/execnet/main.c - 664 sys sys 1019861330 657
 sys/src/cmd/execnet/mkfile - 664 sys sys 1032059543 208
 sys/src/cmd/execnet/note.c - 664 sys sys 1019855740 2315
 sys/src/cmd/exportfs - 20000000775 sys sys 988249971 0
-sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1066823092 15669
+sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1069024197 15669
 sys/src/cmd/exportfs/exportfs.h - 664 sys sys 1066823091 2800
 sys/src/cmd/exportfs/exportsrv.c - 664 sys sys 1066823092 11325
 sys/src/cmd/exportfs/mkfile - 664 sys sys 1066825703 194
@@ -7298,7 +7298,7 @@ sys/src/cmd/fax/receiverc - 775 sys sys 944960990 581
 sys/src/cmd/fax/send.c - 664 sys sys 944960990 923
 sys/src/cmd/fax/subr.c - 664 sys sys 1015090401 1245
 sys/src/cmd/file.c - 664 sys sys 1065017417 20590
-sys/src/cmd/fmt.c - 664 sys sys 1025298248 3897
+sys/src/cmd/fmt.c - 664 sys sys 1069018548 3897
 sys/src/cmd/fortune.c - 664 sys sys 1035832953 1674
 sys/src/cmd/fossil - 20000000775 sys sys 1042005512 0
 sys/src/cmd/fossil/9.h - 664 sys sys 1068129294 4165
@@ -9500,7 +9500,7 @@ sys/src/cmd/mv.c - 664 sys sys 1014926695 4276
 sys/src/cmd/ndb - 20000000775 sys sys 988249988 0
 sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1060612175 6862
 sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1060612175 7248
-sys/src/cmd/ndb/cs.c - 664 sys sys 1060173544 32903
+sys/src/cmd/ndb/cs.c - 664 sys sys 1069206443 32930
 sys/src/cmd/ndb/csgetval.c - 664 sys sys 957402051 1051
 sys/src/cmd/ndb/csquery.c - 664 sys sys 1014926159 1062
 sys/src/cmd/ndb/dblookup.c - 664 sys sys 1060612175 17896
@@ -10125,7 +10125,7 @@ sys/src/cmd/spin/vars.c - 664 sys sys 953242990 8412
 sys/src/cmd/spin/version.h - 664 sys sys 956275780 54
 sys/src/cmd/split.c - 664 sys sys 1038183077 3219
 sys/src/cmd/srv.c - 664 sys sys 1065915862 3964
-sys/src/cmd/srvfs.c - 664 sys sys 1014926615 1504
+sys/src/cmd/srvfs.c - 664 sys sys 1069024220 1562
 sys/src/cmd/srvold9p - 20000000775 sys sys 1016921011 0
 sys/src/cmd/srvold9p/9p1.h - 664 sys sys 1016921010 2413
 sys/src/cmd/srvold9p/9p1lib.c - 664 sys sys 1016921010 11446
@@ -10776,7 +10776,7 @@ sys/src/cmd/venti/syncindex0.c - 664 sys sys 1036470283 3044
 sys/src/cmd/venti/unittoull.c - 664 sys sys 1019678881 398
 sys/src/cmd/venti/unwhack.c - 664 sys sys 1019678881 3191
 sys/src/cmd/venti/utils.c - 664 sys sys 1063854196 4526
-sys/src/cmd/venti/venti.c - 664 sys sys 1063854189 4625
+sys/src/cmd/venti/venti.c - 664 sys sys 1069101830 4626
 sys/src/cmd/venti/venti.conf - 664 sys sys 1019867537 397
 sys/src/cmd/venti/ventifs.c - 664 sys sys 1063854129 6157
 sys/src/cmd/venti/verifyarena.c - 664 sys sys 1019678881 2705
@@ -11838,22 +11838,22 @@ sys/src/libmp/power/mpvecsub.s - 664 sys sys 950104732 1118
 sys/src/libmp/power/placeholder.c - 664 sys sys 944961747 0
 sys/src/libmp/test.c - 664 sys sys 964798440 12260
 sys/src/libndb - 20000000775 sys sys 1015013466 0
-sys/src/libndb/csgetval.c - 664 sys sys 969511575 1277
-sys/src/libndb/csipinfo.c - 664 sys sys 944961750 1130
-sys/src/libndb/dnsquery.c - 664 sys sys 1055700336 2759
+sys/src/libndb/csgetval.c - 664 sys sys 1069206439 1322
+sys/src/libndb/csipinfo.c - 664 sys sys 1069206439 1175
+sys/src/libndb/dnsquery.c - 664 sys sys 1069206439 2799
 sys/src/libndb/ipattr.c - 664 sys sys 953844690 586
 sys/src/libndb/mkfile - 664 sys sys 1035389780 424
-sys/src/libndb/ndbaux.c - 664 sys sys 953999851 1524
+sys/src/libndb/ndbaux.c - 664 sys sys 1069206440 1600
 sys/src/libndb/ndbcache.c - 664 sys sys 1024156984 2227
 sys/src/libndb/ndbcat.c - 664 sys sys 950311789 224
 sys/src/libndb/ndbfree.c - 664 sys sys 944961749 233
 sys/src/libndb/ndbgetval.c - 664 sys sys 944961749 811
-sys/src/libndb/ndbhash.c - 664 sys sys 1021580003 4848
+sys/src/libndb/ndbhash.c - 664 sys sys 1069206440 4973
 sys/src/libndb/ndbhf.h - 664 sys sys 1015013485 746
 sys/src/libndb/ndbipinfo.c - 664 sys sys 1063853776 6483
 sys/src/libndb/ndblookval.c - 664 sys sys 944961750 655
-sys/src/libndb/ndbopen.c - 664 sys sys 1032061385 2703
-sys/src/libndb/ndbparse.c - 664 sys sys 950315731 1134
+sys/src/libndb/ndbopen.c - 664 sys sys 1069206441 2716
+sys/src/libndb/ndbparse.c - 664 sys sys 1069206440 1167
 sys/src/libplumb - 20000000775 sys sys 1014928082 0
 sys/src/libplumb/event.c - 664 sys sys 947358887 1861
 sys/src/libplumb/mesg.c - 644 sys sys 1014928082 6718

+ 16 - 0
dist/replica/plan9.log

@@ -12371,3 +12371,19 @@
 1068859816 0 c sys/src/cmd/ki/mkfile - 664 sys sys 1068859845 245
 1068859816 1 c sys/src/cmd/ki/stats.c - 664 sys sys 1068859845 4536
 1068917423 0 c sys/src/cmd/aux/consolefs.c - 664 sys sys 1068916113 20175
+1069178473 0 c sys/man/4/exportfs - 664 sys sys 1069024226 4370
+1069178473 1 c sys/man/8/venti - 664 sys sys 1069101926 5422
+1069178473 2 c sys/src/cmd/exportfs/exportfs.c - 664 sys sys 1069024197 15669
+1069178473 3 c sys/src/cmd/fmt.c - 664 sys sys 1069018548 3897
+1069178473 4 c sys/src/cmd/srvfs.c - 664 sys sys 1069024220 1562
+1069178473 5 c sys/src/cmd/venti/venti.c - 664 sys sys 1069101830 4626
+1069178473 6 c sys/src/cmd/cpu.c - 664 sys sys 1069024220 20525
+1069180274 0 c sys/man/4/consolefs - 664 sys sys 1069179473 3920
+1069207277 0 c sys/src/cmd/ndb/cs.c - 664 sys sys 1069206443 32930
+1069207277 1 c sys/src/libndb/csgetval.c - 664 sys sys 1069206439 1322
+1069207277 2 c sys/src/libndb/csipinfo.c - 664 sys sys 1069206439 1175
+1069207277 3 c sys/src/libndb/dnsquery.c - 664 sys sys 1069206439 2799
+1069207277 4 c sys/src/libndb/ndbaux.c - 664 sys sys 1069206440 1600
+1069207277 5 c sys/src/libndb/ndbhash.c - 664 sys sys 1069206440 4973
+1069207277 6 c sys/src/libndb/ndbopen.c - 664 sys sys 1069206441 2716
+1069207277 7 c sys/src/libndb/ndbparse.c - 664 sys sys 1069206440 1167

+ 17 - 5
sys/man/4/consolefs

@@ -46,22 +46,34 @@ Consoles are defined by entries of the form:
 .PP
 Each
 .IR console / dev
-pair represents the name of a console and the serial line device
+pair represents the name of a console and the device
 associated with it.
 .I Consolefs
-presents a single level directory with two files
+presents a single level directory with up to three files
 per console:
-.I console
+.IR console ,
+.IB console ctl\f1,
 and
-.IB console ctl\f1.
+.IB console stat\f1.
 Writes of
 .I console
 are equivalent to writes of
 .I dev
 and reads and writes of
 .IB console ctl
+and 
+.IB console stat
 are equivalent to reads and writes of
-.IB dev ctl\f1.
+.IB dev ctl
+and
+.IB dev stat
+respectively.
+.IB Console ctl
+and
+.IB console stat
+will not exist if the underlying
+.I dev
+does not provide them.
 .I Consolefs
 broadcasts anything it reads from
 .I dev

+ 19 - 18
sys/src/cmd/ndb/cs.c

@@ -275,6 +275,17 @@ mountinit(char *service, char *mntpt)
 
 	if(pipe(p) < 0)
 		error("pipe failed");
+
+	/*
+	 *  make a /srv/cs
+	 */
+	f = create(service, OWRITE|ORCLOSE, 0666);
+	if(f < 0)
+		error(service);
+	snprint(buf, sizeof(buf), "%d", p[1]);
+	if(write(f, buf, strlen(buf)) != strlen(buf))
+		error("write /srv/cs");
+
 	switch(rfork(RFFDG|RFPROC|RFNAMEG)){
 	case 0:
 		close(p[1]);
@@ -282,17 +293,6 @@ mountinit(char *service, char *mntpt)
 	case -1:
 		error("fork failed\n");
 	default:
-		/*
-		 *  make a /srv/cs
-		 */
-		f = create(service, 1, 0666);
-		if(f < 0)
-			error(service);
-		snprint(buf, sizeof(buf), "%d", p[1]);
-		if(write(f, buf, strlen(buf)) != strlen(buf))
-			error("write /srv/cs");
-		close(f);
-
 		/*
 		 *  put ourselves into the file system
 		 */
@@ -596,6 +596,9 @@ rwalk(Job *job, Mfile *mf)
 
     send:
 	if(nmf != nil && (err!=nil || job->reply.nwqid<nelems)){
+		cleanmf(nmf);
+		free(nmf->user);
+		nmf->user = 0;
 		nmf->busy = 0;
 		nmf->fid = 0;
 	}
@@ -712,10 +715,6 @@ cleanmf(Mfile *mf)
 		free(mf->rem);
 		mf->rem = nil;
 	}
-	if(mf->user != nil){
-		free(mf->user);
-		mf->user = nil;
-	}
 	for(i = 0; i < mf->nreply; i++){
 		free(mf->reply[i]);
 		mf->reply[i] = nil;
@@ -835,6 +834,8 @@ void
 rclunk(Job *job, Mfile *mf)
 {
 	cleanmf(mf);
+	free(mf->user);
+	mf->user = 0;
 	mf->busy = 0;
 	mf->fid = 0;
 	sendmsg(job, 0);
@@ -950,7 +951,7 @@ void
 ipid(void)
 {
 	uchar addr[6];
-	Ndbtuple *t;
+	Ndbtuple *t, *tt;
 	char *p, *attr;
 	Ndbs s;
 	int f;
@@ -980,13 +981,13 @@ ipid(void)
 		 */
 		if(*mysysname == 0 && netdb != nil){
 			ndbreopen(netdb);
-			for(t = ndbparse(netdb); t != nil; t = t->entry){
+			for(tt = t = ndbparse(netdb); t != nil; t = t->entry){
 				if(strcmp(t->attr, "sys") == 0){
 					strcpy(mysysname, t->val);
 					break;
 				}
 			}
-			ndbfree(t);
+			ndbfree(tt);
 		}
 
 		/* next network database, ip address, and ether address to find a name */

+ 1 - 0
sys/src/libndb/csgetval.c

@@ -67,5 +67,6 @@ csgetval(char *netroot, char *attr, char *val, char *rattr, char *buf)
 	}
 	close(fd);
 
+	setmalloctag(first, getcallerpc(&netroot));
 	return first;
 }

+ 1 - 0
sys/src/libndb/csipinfo.c

@@ -63,5 +63,6 @@ csipinfo(char *netroot, char *attr, char *val, char **list, int n)
 	}
 	close(fd);
 
+	setmalloctag(first, getcallerpc(&netroot));
 	return first;
 }

+ 1 - 0
sys/src/libndb/dnsquery.c

@@ -151,5 +151,6 @@ doquery(int fd, char *dn, char *type)
 		}
 	}
 
+	setmalloctag(first, getcallerpc(&fd));
 	return first;
 }

+ 2 - 0
sys/src/libndb/ndbaux.c

@@ -24,6 +24,7 @@ _ndbparsetuple(char *cp, Ndbtuple **tp)
 	t = mallocz(sizeof(Ndbtuple), 1);
 	if(t == nil)
 		return nil;
+	setmalloctag(t, getcallerpc(&cp));
 	*tp = t;
 
 	/* parse attribute */
@@ -93,5 +94,6 @@ _ndbparseline(char *cp)
 	}
 	if(first)
 		last->line = first;
+	setmalloctag(first, getcallerpc(&cp));
 	return first;
 }

+ 7 - 2
sys/src/libndb/ndbhash.c

@@ -155,6 +155,7 @@ ndbsearch(Ndb *db, Ndbs *s, char *attr, char *val)
 	}
 	t = ndbsnext(s, attr, val);
 	_ndbcacheadd(db, s, attr, val, (t != nil && s->db == db)?t:nil);
+	setmalloctag(t, getcallerpc(&db));
 	return t;
 }
 
@@ -222,8 +223,10 @@ ndbsnext(Ndbs *s, char *attr, char *val)
 				t = ndbparse(db);
 				if(t == 0)
 					break;
-				if(s->t = match(t, attr, val))
+				if(s->t = match(t, attr, val)){
+					setmalloctag(t, getcallerpc(&s));
 					return t;
+				}
 				ndbfree(t);
 				break;
 			}
@@ -238,5 +241,7 @@ nextfile:
 		return 0;
 
 	/* advance search to next db file */
-	return ndbsearch(db->next, s, attr, val);
+	t = ndbsearch(db->next, s, attr, val);
+	setmalloctag(t, getcallerpc(&s));
+	return t;
 }

+ 1 - 0
sys/src/libndb/ndbopen.c

@@ -54,6 +54,7 @@ ndbopen(char *file)
 		last->next = db;
 		last = db;
 	}
+	ndbfree(t);
 	return first;
 }
 

+ 2 - 1
sys/src/libndb/ndbparse.c

@@ -39,7 +39,7 @@ ndbparse(Ndb *db)
 			break;
 		if(first && !ISWHITE(*line) && *line != '#'){
 			Bseek(&db->b, -len, 1);
-			return first;
+			break;
 		}
 		t = _ndbparseline(line);
 		if(t == 0)
@@ -52,5 +52,6 @@ ndbparse(Ndb *db)
 		while(last->entry)
 			last = last->entry;
 	}
+	setmalloctag(first, getcallerpc(&db));
 	return first;
 }