Plan 9 from Bell Labs’s /usr/web/sources/extra/changes/2006/0217

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


fs: merge in Geoff Collyer's 64-bit changes
 [geoff] --rw-rw-r-- M 1217231 glenda fs 64965 Feb 17 01:24 sys/doc/fs/fs.pdf
	binary files /n/sourcesdump/2006/0217/plan9/sys/doc/fs/fs.pdf /n/sourcesdump/2006/0218/plan9/sys/doc/fs/fs.pdf differ
 [geoff] --rw-rw-r-- M 1217231 glenda fs 298023 Feb 17 01:23 sys/doc/fs/fs.ps
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/doc/fs/fs.ps /n/sourcesdump/2006/0218/plan9/sys/doc/fs/fs.ps]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 366 Feb 17 01:17 sys/doc/fs/mkfile
	/n/sourcesdump/2006/0217/plan9/sys/doc/fs/mkfile:9,22 - 
	/n/sourcesdump/2006/0218/plan9/sys/doc/fs/mkfile:9,26
	  	p6\
	  	p7\
	  	p8\
	+ 	p9\
	+ 	pa\
	  
	  fs.ps:D:	$OBJ
	- 	{echo $FONTS; cat $OBJ } | troff -ms | lp -dstdout >fs.ps
	- 	../cleanps fs.ps
	+ 	{echo $FONTS; tbl $OBJ } | eqn | troff -ms | lp -dstdout >$target
	+ 	../cleanps $target
	  
	  fs.trout:D:	$OBJ
	- 	{echo $FONTS; cat $OBJ } | troff -ms >fs.trout
	+ 	{echo $FONTS; tbl $OBJ } | eqn | troff -ms >$target
	  
	  fs.html:D:
	- 	htmlroff -ms -mhtml $OBJ >fs.html
	+ 	{echo $FONTS; tbl $OBJ } | eqn | htmlroff -ms -mhtml >$target
	  
	+ clean:V:
	+ 	rm -f fs.^(html trout ps pdf)
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1677 Jan 28 05:50 sys/doc/fs/p0
	/n/sourcesdump/2006/0217/plan9/sys/doc/fs/p0:1,20 - 
	/n/sourcesdump/2006/0218/plan9/sys/doc/fs/p0:1,51
	- .HTML "The Plan 9 File Server
	+ .HTML "The 64-bit Standalone Plan 9 File Server
	+ .de Ex
	+ .TA 0.5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i
	+ .P1
	+ .TA 0.5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i
	+ ..
	+ .de Ee
	+ .P2
	+ ..
	+ 
	+ .EQ
	+ delim $$
	+ .EN
	  .FP lucidasans
	+ 
	  .TL
	- The Plan 9 File Server
	+ The 64-bit Standalone Plan 9 File Server
	  .AU
	- Ken Thompson
	+ Ken Thompson*
	  ken@plan9.bell-labs.com
	+ .FS
	+ \l'4i'
	+ .br
	+ * now
	+ .CW ken@entrisphere.com
	+ .FE
	+ .AU
	+ Geoff Collyer
	+ .CW geoff@collyer.net
	  .AB
	- This paper describes the structure
	- and the operation of Plan 9 file servers.
	- The specifics apply to
	- our main Plan 9 file server
	+ This paper is a revision of Thompson's
	+ .I "The Plan 9 File Server" ,
	+ and describes the structure
	+ and the operation of the new 64-bit Plan 9 file servers.
	+ Some specifics apply to the 32-bit
	+ Plan 9 file server
	  Emelie,
	- but
	- the code is also the basis for
	+ which code is also the basis for
	  the user level file server
	  .CW kfs .
	+ .PP
	+ Collyer recently created a 64-bit version of
	+ Thompson's 32-bit file server, updating all file
	+ offsets, sizes and block numbers to 64 bits.
	+ In addition, triple- and quadruple-indirect
	+ blocks were implemented.
	+ File name components were extended from 27 to 55 bytes.
	+ Further work is planned, notably improved peripheral and protocol support.
	  .AE
	  .SH
	  Introduction
	/n/sourcesdump/2006/0217/plan9/sys/doc/fs/p0:30,32 - 
	/n/sourcesdump/2006/0218/plan9/sys/doc/fs/p0:61,75
	  but it has slowly come to terms with
	  its particular set of cranky computers
	  and devices.
	+ .PP
	+ The file server
	+ .I fs64
	+ runs a revision of Emelie's code
	+ with 64-bit file sizes, offsets and block numbers
	+ and indirect blocks from single to quadruple.
	+ Actually these are 63-bit values, since the type used is
	+ .I vlong
	+ (signed
	+ .I "long long"
	+ integer),
	+ but 63 bits should suffice for a little while.
 [geoff] --rw-rw-r-- M 1217231 glenda fs 800 Aug 31  2004 sys/doc/fs/p1
	/n/sourcesdump/2006/0217/plan9/sys/doc/fs/p1:14,31 - 
	/n/sourcesdump/2006/0218/plan9/sys/doc/fs/p1:14,39
	  The structure of the file system server
	  is a set of kernel processes
	  synchronizing mostly through message passing.
	- In Emelie there are 26 processes of 10 types:
	- .P1
	- .ft R
	- number name  function
	-   15       \f(CWsrv\fP   Main file system server processes
	-   \01       \f(CWrah\fP   Block read-ahead processes
	-   \h'\w'0'u'1       \f(CWscp\fP   Sync process
	-   \h'\w'0'u'1       \f(CWwcp\fP   WORM copy process
	-   \h'\w'0'u'1       \f(CWcon\fP   Console process
	-   \h'\w'0'u'1       \f(CWilo\fP   IL protocol process
	-   \h'\w'0'u'1       \f(CWilt\fP   IL timer process
	-   \h'\w'0'u'2       \f(CWethi\fP   Ethernet input process
	-   \h'\w'0'u'2       \f(CWetho\fP   Ethernet output process
	-   \h'\w'0'u'1       \f(CWflo\fP   Floppy disk process
	- .P2
	+ In
	+ .I fs64
	+ there are 27 processes of 11 types:
	+ .KS
	+ .TS
	+ center ;
	+ c l c
	+ n lf(CW) l .
	+ number	name	function
	+ _
	+ 15	srv	Main file system server processes
	+ 1	rah	Block read-ahead processes
	+ 1	scp	Sync process
	+ 1	wcp	WORM copy process
	+ 1	con	Console process
	+ 1	ilo	IL protocol process
	+ 1	ilt	IL timer process
	+ 2	ethi	Ethernet input process
	+ 2	etho	Ethernet output process
	+ 1	flo	Floppy disk process
	+ 1	snt	sntp clock-synchronisation process
	+ .TE
	+ .KE
 [geoff] --rw-rw-r-- M 1217231 glenda fs 3775 Sep  2  2004 sys/doc/fs/p2
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/doc/fs/p2 /n/sourcesdump/2006/0218/plan9/sys/doc/fs/p2]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 5764 Sep  2  2004 sys/doc/fs/p4
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/doc/fs/p4 /n/sourcesdump/2006/0218/plan9/sys/doc/fs/p4]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1140 Aug 31  2004 sys/doc/fs/p5
	/n/sourcesdump/2006/0217/plan9/sys/doc/fs/p5:32,39 - 
	/n/sourcesdump/2006/0218/plan9/sys/doc/fs/p5:32,39
	  and only block offset 0 is read.
	  This is to prevent some
	  fairly common action such as
	- .P1
	-     file *
	- .P2
	+ .Ex
	+ 	file *
	+ .Ee
	  from swamping the file system with read-ahead
	  requests that will never be used.
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6091 Sep  2  2004 sys/doc/fs/p6
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/doc/fs/p6 /n/sourcesdump/2006/0218/plan9/sys/doc/fs/p6]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 960 Aug 31  2004 sys/doc/fs/p7
	/n/sourcesdump/2006/0217/plan9/sys/doc/fs/p7:45,48 - 
	/n/sourcesdump/2006/0218/plan9/sys/doc/fs/p7:45,48
	  On Emelie,
	  the main file system is configured
	  on both sides of the first 237 disks,
	- platters 0-236 and 238-474.
	+ platters 0\-236 and 238\-474.
 [geoff] --rw-rw-r-- M 1217231 geoff fs 659 Feb 17 01:22 sys/doc/fs/p9
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2027 Aug 31  2004 sys/doc/fs/pa
 [geoff] --rw-rw-r-- M 1217231 glenda fs 8350 Feb  8  2005 sys/man/8/fsconfig
	/n/sourcesdump/2006/0217/plan9/sys/man/8/fsconfig:46,51 - 
	/n/sourcesdump/2006/0218/plan9/sys/man/8/fsconfig:46,55
	  .PP
	  .B copyworm
	  .PP
	+ .B copydev
	+ .I from-dev
	+ .I to-dev
	+ .PP
	  .B halt
	  .PP
	  .B end
	/n/sourcesdump/2006/0217/plan9/sys/man/8/fsconfig:318,323 - 
	/n/sourcesdump/2006/0218/plan9/sys/man/8/fsconfig:322,340
	  block by block,
	  and loop.
	  It knows how to read a fake worm file system.
	+ .PP
	+ .I Halt
	+ will cause the server to
	+ .I immediately
	+ exit and reboot.
	+ .PP
	+ .I Copydev
	+ will copy the device
	+ .I from-dev
	+ to the device
	+ .IR to-dev .
	+ block by block,
	+ and panic.
	  .PP
	  .I Halt
	  will cause the server to
 [geoff] d-rwxrwxr-x M 1217231 geoff fs 0 Feb 17 04:18 sys/src/fs/9netics32.16k
 [geoff] d-rwxrwxr-x M 1217231 geoff fs 0 Feb 17 04:18 sys/src/fs/9netics64.8k
 [geoff] d-rwxrwxr-x M 1217231 geoff fs 0 Feb 17 04:20 sys/src/fs/doc
 [geoff] d-rwxrwxr-x M 1217231 geoff fs 0 Feb 17 04:20 sys/src/fs/fs
 [geoff] d-rwxrwxr-x M 1217231 geoff fs 0 Feb 17 04:20 sys/src/fs/fs64
 [geoff] --rw-rw-r-- M 1217231 geoff fs 3208 Feb 17 04:18 sys/src/fs/9netics32.16k/9net32.16kfs.c
 [geoff] --rw-rw-r-- M 1217231 geoff fs 612 Feb 17 04:18 sys/src/fs/9netics32.16k/dat.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1961 Feb 17 04:18 sys/src/fs/9netics32.16k/fns.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 6688 Oct 13  2004 sys/src/fs/9netics32.16k/io.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2907 Feb 17 04:18 sys/src/fs/9netics32.16k/mem.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1615 Feb 17 04:18 sys/src/fs/9netics32.16k/mkfile
 [geoff] --rw-rw-r-- M 1217231 geoff fs 3235 Feb 17 04:18 sys/src/fs/9netics64.8k/9net64.8kfs.c
 [geoff] --rw-rw-r-- M 1217231 geoff fs 611 Sep 21  2004 sys/src/fs/9netics64.8k/dat.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1961 Feb 17 04:18 sys/src/fs/9netics64.8k/fns.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 6688 Oct 13  2004 sys/src/fs/9netics64.8k/io.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2907 Feb 17 04:18 sys/src/fs/9netics64.8k/mem.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1608 Feb 17 04:18 sys/src/fs/9netics64.8k/mkfile
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2989 Feb 17 04:20 sys/src/fs/choline/9cholinefs.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/9cholinefs.c:13,22 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/9cholinefs.c:13,22
	  int FIXEDSIZE = 1;
	  
	  #ifndef	DATE
	- #define	DATE	568011600L+4*3600
	+ #define	DATE	1094098624L
	  #endif
	  
	- ulong	mktime		= DATE;				/* set by mkfile */
	+ Timet	mktime		= DATE;				/* set by mkfile */
	  Startsb	startsb[] =
	  {
	  	"main",		2,
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/9cholinefs.c:25,48 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/9cholinefs.c:25,46
	  
	  Dos dos;
	  
	- static
	- struct
	+ static struct
	  {
	  	char	*name;
	- 	long	(*read)(int, void*, long);
	- 	vlong	(*seek)(int, vlong);
	- 	long	(*write)(int, void*, long);
	+ 	Off	(*read)(int, void*, long);
	+ 	Devsize	(*seek)(int, Devsize);
	+ 	Off	(*write)(int, void*, long);
	  	int	(*part)(int, char*);
	- } nvrdevs[] =
	- {
	+ } nvrdevs[] = {
	  	{ "fd", floppyread, floppyseek, floppywrite, 0, },
	  	{ "hd", ataread,   ataseek,   atawrite,   setatapart, },
	- 	/*
	- 	{ "sd", scsiread,   scsiseek,   scsiwrite,   setscsipart, },
	- 	 */
	+ 	/* { "sd", scsiread,   scsiseek,   scsiwrite,   setscsipart, },  */
	  	{ 0, },
	  };
	  
	+ void apcinit(void);
	+ 
	  void
	  otherinit(void)
	  {
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/9cholinefs.c:53,58 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/9cholinefs.c:51,57
	  	printcpufreq();
	  	etherinit();
	  	scsiinit();
	+ 	apcinit();
	  
	  	s = spllo();
	  	nhd = atainit();
 [geoff] --rw-rw-r-- M 1217231 glenda fs 612 Feb 17 04:20 sys/src/fs/choline/dat.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/dat.h:1,9 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/dat.h:1,10
	- #define RBUFSIZE	(16*1024)	/* raw buffer size */
	  /*
	-  * verify that the kernel reports the right size when you
	-  * first boot this kernel.
	+  * The most fundamental constant.
	+  * The code will not compile with RBUFSIZE made a variable;
	+  * for one thing, RBUFSIZE determines FEPERBUF, which determines
	+  * the number of elements in a free-list-block array.
	   */
	- /* #define	DSIZE		(79563-1)	/* worm size */
	+ #define RBUFSIZE	(16*1024)	/* raw buffer size */
	  
	  #include "../port/portdat.h"
	  
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1961 Feb 17 04:20 sys/src/fs/choline/fns.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/fns.h:12,20 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/fns.h:12,20
	  void	etherstart(void);
	  int	floppyinit(void);
	  void	floppyproc(void);
	- long	floppyread(int, void*, long);
	- vlong	floppyseek(int, vlong);
	- long	floppywrite(int, void*, long);
	+ Off	floppyread(int, void*, long);
	+ Devsize	floppyseek(int, Devsize);
	+ Off	floppywrite(int, void*, long);
	  void	fpinit(void);
	  char*	getconf(char*);
	  ulong	getcr0(void);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/fns.h:23,34 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/fns.h:23,33
	  int	getfields(char*, char**, int, char);
	  ulong	getstatus(void);
	  int	atainit(void);
	- long	ataread(int, void*, long);
	- vlong	ataseek(int, vlong);
	- long	atawrite(int, void*, long);
	+ Off	ataread(int, void*, long);
	+ Devsize	ataseek(int, Devsize);
	+ Off	atawrite(int, void*, long);
	  void	i8042a20(void);
	  void	i8042reset(void);
	- void	idecheck(Device*);
	  int	inb(int);
	  void	insb(int, void*, int);
	  ushort	ins(int);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/fns.h:55,65 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/fns.h:54,65
	  void	putcr4(ulong);
	  void	puttr(ulong);
	  void	rdmsr(int, vlong*);
	- void	rdtsc(uvlong*);
	+ void	wrmsr(int, vlong);
	+ void	(*cycles)(uvlong*);
	  void	scsiinit(void);
	- long	scsiread(int, void*, long);
	- long	scsiseek(int, long);
	- long	scsiwrite(int, void*, long);
	+ Off	scsiread(int, void*, long);
	+ Devsize	scsiseek(int, Devsize);
	+ Off	scsiwrite(int, void*, long);
	  int	setatapart(int, char*);
	  int	setscsipart(int, char*);
	  void	setvec(int, void (*)(Ureg*, void*), void*);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/fns.h:70,79 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/fns.h:70,79
	  void	uartputc(int);
	  void	wbflush(void);
	  void	cpuid(char*, int*, int*);
	+ 
	  #define PADDR(a)	((ulong)(a)&~KZERO)
	  
	  void	ideinit(Device *d);
	- int	ideread(Device *d, long,  void*);
	- int idewrite(Device *d, long, void*);
	- long	atasize(Device *d);
	- void	atainitstub(Device *d);
	+ Devsize	idesize(Device *d);
	+ int	ideread(Device *d,  Devsize, void*);
	+ int	idewrite(Device *d, Devsize, void*);
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6688 Feb 17 04:20 sys/src/fs/choline/io.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/io.h:161,170 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/io.h:161,173
	  		int	size;
	  	} mem[6];
	  
	+ 	uchar	rid;
	+ 	uchar	ccrp;
	+ 	uchar	ccrb;
	  	uchar	intl;			/* interrupt line */
	- 	ushort	ccru;
	+ 	ushort	ccru;			/* is uchar in cpu kernel */
	+ 	ulong	pcr;
	  
	- 
	  	Pcidev*	list;
	  	Pcidev*	bridge;			/* down a bus */
	  	Pcidev*	link;			/* next device on this bno */
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/io.h:181,186 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/io.h:184,190
	  extern Pcidev* pcimatchtbdf(int);
	  extern void pcireset(void);
	  extern void pcisetbme(Pcidev*);
	+ extern void pciclrbme(Pcidev*);
	  
	  /*
	   *  a parsed plan9.ini line
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2909 Feb 17 04:20 sys/src/fs/choline/mem.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/mem.h:82,85 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/mem.h:82,85
	  
	  #define MACHADDR	((ulong)&mach0)		/* hack number 1 */
	  
	- #define IFLAG		0x200
	+ #define IFLAG		0x200	/* psw: interrupt enable, to be accurate */
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1751 Feb 17 04:20 sys/src/fs/choline/mkfile
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/mkfile:7,12 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/mkfile:7,13
	  TARG=$p$CONF'fs'
	  
	  DEV=\
	+ 	apc.$O\
	  	cw.$O\
	  	fworm.$O\
	  	juke.$O\
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/mkfile:51,57 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/mkfile:52,60
	  	8250.$O\
	  	8253.$O\
	  	cga.$O\
	- 	devata.$O\
	+ 	devsd.$O\
	+ 	sdscsi.$O\
	+ 	sdata.$O\
	  	dosfs.$O\
	  	floppy.$O\
	  	kbd.$O\
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/mkfile:65,80 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/mkfile:68,84
	  	trap.$O\
	  
	  ETHER=\
	- 	etherif.$O\
	+ 	compat.$O\
	  	ether2114x.$O\
	- 	etherelnk3.$O\
	+ 	ether8139.$O\
	  	ether82557.$O\
	- 	compat.$O\
	- 	ethermii.$O\
	  	ether83815.$O\
	  	etherdp83820.$O\
	- 	ether8139.$O\
	+ 	etherelnk3.$O\
	  	etherga620.$O\
	+ 	etherif.$O\
	+ 	etherigbe.$O\
	+ 	ethermii.$O\
	  
	  SCSI=\
	  	scsi.$O\
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/mkfile:88,94 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/mkfile:92,98
	  	$IP\
	  	$ETHER\
	  	$SCSI\
	- 	
	+ 
	  HFILES=\
	  	../port/all.h\
	  	../port/lib.h\
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/mkfile:103,113 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/mkfile:107,118
	  
	  LIB=\
	  	-lauthsrv\
	- 	/$objtype/lib/libc.a\
	+ 	-lc\
	  	-lsec\
	  
	  # -I../pc & -DFS are for compat.h
	- CFLAGS=-FVw -I. -I../port -I../pc -DFS
	+ # -DOLD uses 32-bit file offsets instead of 64-bit ones
	+ CFLAGS=-FTVw -I. -I../port -I../pc -DFS -DOLD
	  
	  all:V:	$TARG
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/choline/mkfile:116,132 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/choline/mkfile:121,135
	  <../dev/mkfile
	  <../ip/mkfile
	  
	- $TARG:	$OBJ $TARG.$O
	- 	$LD -o $target -l -T0x80100020 $prereq $LIB
	+ $TARG:	$TARG.c $OBJ
	+ 	$CC $CFLAGS -DDATE'='`{date -n} $TARG.c
	+ 	$LD -o $target -l -T0x80100020 $OBJ $TARG.$O $LIB
	  	size $target
	  
	- $TARG.$O:	$TARG.c
	- 	$CC $CFLAGS -DDATE'='`{date -n} $TARG.c
	- 
	  install:V: $TARG
	  	cp $TARG /$objtype/
	- 	#import lookout / /n/lookout && cp $TARG /n/lookout/$objtype/
	- 	#import boundary / /n/boundary && cp $TARG /n/boundary/$objtype/
	+ 	import lookout / /n/lookout && cp $TARG /n/lookout/$objtype/
	+ 	import boundary / /n/boundary && cp $TARG /n/boundary/$objtype/
	  
	  $TARG.$O:	../pc/dosfs.h
	  
 [geoff] --rw-rw-r-- M 1217231 geoff fs 14910 Feb 17 04:18 sys/src/fs/dev/apc.c
 [geoff] --rw-rw-r-- M 1217231 glenda fs 43252 Oct 13  2004 sys/src/fs/dev/cw.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/cw.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/cw.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1845 Feb 17 04:18 sys/src/fs/dev/fworm.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/fworm.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/fworm.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 22885 Oct 12  2004 sys/src/fs/dev/juke.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/juke.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/juke.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 4264 Feb 17 04:18 sys/src/fs/dev/mworm.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/mworm.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/mworm.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2392 Feb 17 04:18 sys/src/fs/dev/wren.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/wren.c:4,12 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/wren.c:4,12
	  struct	Wren
	  {
	  	long	block;			/* size of a block -- from config */
	- 	long	nblock;			/* number of blocks -- from config */
	+ 	Devsize	nblock;			/* number of blocks -- from config */
	  	long	mult;			/* multiplier to get physical blocks */
	- 	long	max;			/* number of logical blocks */
	+ 	Devsize	max;			/* number of logical blocks */
	  };
	  
	  void
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/wren.c:51,65 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/wren.c:51,65
	  	dr->max =
	  		(dr->nblock + 1) / dr->mult;
	  	print("	drive %Z:\n", d);
	- 	print("		%ld blocks at %ld bytes each\n",
	- 		dr->nblock, dr->block);
	- 	print("		%ld logical blocks at %d bytes each\n",
	- 		dr->max, RBUFSIZE);
	+ 	print("		%lld blocks at %ld bytes each\n",
	+ 		(Wideoff)dr->nblock, dr->block);
	+ 	print("		%lld logical blocks at %d bytes each\n",
	+ 		(Wideoff)dr->max, RBUFSIZE);
	  	print("		%ld multiplier\n",
	  		dr->mult);
	  }
	  
	- long
	+ Devsize
	  wrensize(Device *d)
	  {
	  	Wren *dr;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/wren.c:69,87 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/wren.c:69,87
	  }
	  
	  int
	- wreniocmd(Device *d, int io, long b, void *c)
	+ wreniocmd(Device *d, int io, Off b, void *c)
	  {
	- 	long l, m;
	+ 	Off l, m;
	  	uchar cmd[10];
	  	Wren *dr;
	  
	  	dr = d->private;
	  	if(d == 0) {
	- 		print("wreniocmd: no drive - a=%Z b=%ld\n", d, b);
	+ 		print("wreniocmd: no drive - a=%Z b=%lld\n", d, (Wideoff)b);
	  		return 0x40;
	  	}
	  	if(b >= dr->max) {
	- 		print("wreniocmd out of range a=%Z b=%ld\n", d, b);
	+ 		print("wreniocmd out of range a=%Z b=%lld\n", d, (Wideoff)b);
	  		return 0x40;
	  	}
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/wren.c:104,116 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/wren.c:104,116
	  }
	  
	  int
	- wrenread(Device *d, long b, void *c)
	+ wrenread(Device *d, Off b, void *c)
	  {
	  	int s;
	  
	  	s = wreniocmd(d, SCSIread, b, c);
	  	if(s) {
	- 		print("wrenread: %Z(%ld) bad status %.4x\n", d, b, s);
	+ 		print("wrenread: %Z(%lld) bad status %.4x\n", d, (Wideoff)b, s);
	  		cons.nwormre++;
	  		return 1;
	  	}
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/dev/wren.c:118,130 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/dev/wren.c:118,130
	  }
	  
	  int
	- wrenwrite(Device *d, long b, void *c)
	+ wrenwrite(Device *d, Off b, void *c)
	  {
	  	int s;
	  
	  	s = wreniocmd(d, SCSIwrite, b, c);
	  	if(s) {
	- 		print("wrenwrite: %Z(%ld) bad status %.4x\n", d, b, s);
	+ 		print("wrenwrite: %Z(%lld) bad status %.4x\n", d, (Wideoff)b, s);
	  		cons.nwormwe++;
	  		return 1;
	  	}
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2967 Feb 17 04:20 sys/src/fs/doc/changes
 [geoff] --rw-rw-r-- M 1217231 geoff fs 507 Feb 17 04:20 sys/src/fs/doc/words
 [geoff] --rw-rw-r-- M 1217231 geoff fs 4057 Feb 17 04:20 sys/src/fs/doc/worm.fs
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1554 Nov 30  2004 sys/src/fs/doc/worm.fs64
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2806 Feb 17 04:20 sys/src/fs/doc/worms.32-bit
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2989 Feb 17 04:20 sys/src/fs/emelie/9emeliefs.c
 [geoff] --rw-rw-r-- M 1217231 glenda fs 612 Feb 17 04:20 sys/src/fs/emelie/dat.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/dat.h:1,9 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/dat.h:1,11
	- #define RBUFSIZE	(16*1024)	/* raw buffer size */
	  /*
	-  * verify that the kernel prints this size when you
	-  * first boot this kernel.
	-  * #define	DSIZE		157933
	+  * The most fundamental constant.
	+  * The code will not compile with RBUFSIZE made a variable;
	+  * for one thing, RBUFSIZE determines FEPERBUF, which determines
	+  * the number of elements in a free-list-block array.
	   */
	+ #define RBUFSIZE	(16*1024)	/* raw buffer size */
	+ 
	  #include "../port/portdat.h"
	  
	  extern	Mach	mach0;
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1961 Feb 17 04:20 sys/src/fs/emelie/fns.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/fns.h:12,20 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/fns.h:12,20
	  void	etherstart(void);
	  int	floppyinit(void);
	  void	floppyproc(void);
	- long	floppyread(int, void*, long);
	- vlong	floppyseek(int, vlong);
	- long	floppywrite(int, void*, long);
	+ Off	floppyread(int, void*, long);
	+ Devsize	floppyseek(int, Devsize);
	+ Off	floppywrite(int, void*, long);
	  void	fpinit(void);
	  char*	getconf(char*);
	  ulong	getcr0(void);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/fns.h:23,34 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/fns.h:23,33
	  int	getfields(char*, char**, int, char);
	  ulong	getstatus(void);
	  int	atainit(void);
	- long	ataread(int, void*, long);
	- vlong	ataseek(int, vlong);
	- long	atawrite(int, void*, long);
	+ Off	ataread(int, void*, long);
	+ Devsize	ataseek(int, Devsize);
	+ Off	atawrite(int, void*, long);
	  void	i8042a20(void);
	  void	i8042reset(void);
	- void	idecheck(Device*);
	  int	inb(int);
	  void	insb(int, void*, int);
	  ushort	ins(int);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/fns.h:55,65 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/fns.h:54,65
	  void	putcr4(ulong);
	  void	puttr(ulong);
	  void	rdmsr(int, vlong*);
	- void	rdtsc(uvlong*);
	+ void	wrmsr(int, vlong);
	+ void	(*cycles)(uvlong*);
	  void	scsiinit(void);
	- long	scsiread(int, void*, long);
	- long	scsiseek(int, long);
	- long	scsiwrite(int, void*, long);
	+ Off	scsiread(int, void*, long);
	+ Devsize	scsiseek(int, Devsize);
	+ Off	scsiwrite(int, void*, long);
	  int	setatapart(int, char*);
	  int	setscsipart(int, char*);
	  void	setvec(int, void (*)(Ureg*, void*), void*);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/fns.h:70,79 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/fns.h:70,79
	  void	uartputc(int);
	  void	wbflush(void);
	  void	cpuid(char*, int*, int*);
	+ 
	  #define PADDR(a)	((ulong)(a)&~KZERO)
	  
	  void	ideinit(Device *d);
	- int	ideread(Device *d, long,  void*);
	- int idewrite(Device *d, long, void*);
	- long	atasize(Device *d);
	- void	atainitstub(Device *d);
	+ Devsize	idesize(Device *d);
	+ int	ideread(Device *d,  Devsize, void*);
	+ int	idewrite(Device *d, Devsize, void*);
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6688 Feb 17 04:20 sys/src/fs/emelie/io.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/io.h:161,170 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/io.h:161,173
	  		int	size;
	  	} mem[6];
	  
	+ 	uchar	rid;
	+ 	uchar	ccrp;
	+ 	uchar	ccrb;
	  	uchar	intl;			/* interrupt line */
	- 	ushort	ccru;
	+ 	ushort	ccru;			/* is uchar in cpu kernel */
	+ 	ulong	pcr;
	  
	- 
	  	Pcidev*	list;
	  	Pcidev*	bridge;			/* down a bus */
	  	Pcidev*	link;			/* next device on this bno */
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/io.h:181,186 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/io.h:184,190
	  extern Pcidev* pcimatchtbdf(int);
	  extern void pcireset(void);
	  extern void pcisetbme(Pcidev*);
	+ extern void pciclrbme(Pcidev*);
	  
	  /*
	   *  a parsed plan9.ini line
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2909 Feb 17 04:20 sys/src/fs/emelie/mem.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/mem.h:82,85 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/mem.h:82,85
	  
	  #define MACHADDR	((ulong)&mach0)		/* hack number 1 */
	  
	- #define IFLAG		0x200
	+ #define IFLAG		0x200	/* psw: interrupt enable, to be accurate */
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1750 Feb 17 04:20 sys/src/fs/emelie/mkfile
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/emelie/mkfile /n/sourcesdump/2006/0218/plan9/sys/src/fs/emelie/mkfile]
 [geoff] --rw-rw-r-- M 1217231 geoff fs 3308 Feb 17 04:20 sys/src/fs/fs/9fsfs.c
 [geoff] --rw-rw-r-- M 1217231 geoff fs 611 Feb 17 04:20 sys/src/fs/fs/dat.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1961 Feb 17 04:20 sys/src/fs/fs/fns.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 6688 Oct 13  2004 sys/src/fs/fs/io.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2909 Feb 17 04:20 sys/src/fs/fs/mem.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1663 Feb 17 04:20 sys/src/fs/fs/mkfile
 [geoff] --rw-rw-r-- M 1217231 geoff fs 3294 Feb 17 04:20 sys/src/fs/fs64/9fsfs64.c
 [geoff] --rw-rw-r-- M 1217231 geoff fs 611 Feb 17 04:20 sys/src/fs/fs64/dat.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1961 Feb 17 04:20 sys/src/fs/fs64/fns.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 6688 Feb 17 04:20 sys/src/fs/fs64/io.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2909 May  5  2002 sys/src/fs/fs64/mem.h
 [geoff] --rw-rw-r-- M 1217231 geoff fs 1603 Feb 17 04:20 sys/src/fs/fs64/mkfile
 [geoff] --rw-rw-r-- M 1217231 glenda fs 8696 Oct 12  2004 sys/src/fs/ip/arp.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/arp.c:86,92 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/arp.c:86,92
	  	Arpe *a;
	  	uchar *tpa;
	  	int type, i, h;
	- 	ulong t;
	+ 	Timet t;
	  
	  	if(l < Ensize+Arpsize)
	  		return;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/arp.c:208,214 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/arp.c:208,214
	  	Arppkt *q;
	  	Arpe *a;
	  	int i, id, len, dlen, off;
	- 	ulong t;
	+ 	Timet t;
	  
	  	p = (Ippkt*)mb->data;
	  
 [geoff] --rw-rw-r-- M 1217231 glenda fs 19479 Feb 17 04:18 sys/src/fs/ip/il.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/il.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/il.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 3859 Oct 12  2004 sys/src/fs/ip/ip.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/ip.c:19,25 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/ip.c:19,25
	  	uchar	dst[Pasize];
	  	int	id;		/* src,dst,id are address of the rock */
	  	Msgbuf*	mb;		/* reassembly. if 0, the rock is empty */
	- 	ulong	age;		/* timeout to throw away */
	+ 	Timet	age;		/* timeout to throw away */
	  	int	last;		/* set to data size when last frag arrives */
	  	int	nfrag;
	  	Frag	frag[Nfrag];
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/ip.c:41,47 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/ip.c:41,47
	  	Frag *f;
	  	int len, id, frag, off, loff, i, n;
	  	Ippkt pkt;
	- 	ulong t;
	+ 	Timet t;
	  
	  	p = (Ippkt*)ep;
	  	if(l < Ensize+Ipsize) {
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6691 Feb 17 04:18 sys/src/fs/ip/ip.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/ip.h:43,53 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/ip.h:43,53
	  	ulong	rstart;		/* remote start id */
	  	ulong	acksent;	/* Last packet acked */
	  
	- 	ulong	lastxmit;	/* time of last xmit */
	- 	ulong	lastrecv;	/* time of last recv */
	- 	ulong	timeout;	/* time out counter */
	- 	ulong	acktime;	/* acknowledge timer */
	- 	ulong	querytime;	/* Query timer */
	+ 	Timet	lastxmit;	/* time of last xmit */
	+ 	Timet	lastrecv;	/* time of last recv */
	+ 	Timet	timeout;	/* time out counter */
	+ 	Timet	acktime;	/* acknowledge timer */
	+ 	Timet	querytime;	/* Query timer */
	  
	  	ulong	delay;		/* Average of the fixed rtt delay */
	  	ulong	rate;		/* Average byte rate */
 [geoff] --rw-rw-r-- M 1217231 glenda fs 7386 Oct 12  2004 sys/src/fs/ip/iproute.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/iproute.c:73,79 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/iproute.c:73,79
	  	uchar	gate[Pasize];
	  	int	metric;
	  	int	inuse;
	- 	long	time;
	+ 	Timet	time;
	  };
	  struct
	  {
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/ip/iproute.c:147,164 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/ip/iproute.c:147,160
	  				goto usage;
	  			break;
	  		}
	- 		if(chartoip(r.dest, argv[2]))
	+ 		if(chartoip(r.dest, argv[2]) || chartoip(r.gate, argv[3]))
	  			goto usage;
	- 		if(chartoip(r.gate, argv[3]))
	- 			goto usage;
	  		r.metric = 0;			/* rip can't nuke these */
	  		deleteroute(&r);
	  		considerroute(&r);
	  	} else
	  	if(strcmp(argv[1], "delete") == 0) {
	- 		if(argc != 3)
	- 			goto usage;
	- 		if(chartoip(r.dest, argv[2]))
	+ 		if(argc != 3 || chartoip(r.dest, argv[2]))
	  			goto usage;
	  		deleteroute(&r);
	  	} else
 [geoff] --rw-rw-r-- M 1217231 glenda fs 231 Feb 17 04:18 sys/src/fs/mkfile
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/mkfile:1,7 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/mkfile:1,10
	  ARCH=\
	+ 	fs\
	+ 	fs64\
	+ 	9netics32.16k\
	+ 	9netics64.8k\
	  	choline\
	  	emelie\
	- 	roro\
	  
	  all:V:
	  	for(i in $ARCH)@{
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6957 Feb 17 02:35 sys/src/fs/pc/8250.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/8250.c:3,8 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/8250.c:3,14
	  #include "ureg.h"
	  #include "io.h"
	  
	+ enum {
	+ 	Development = 1,		/* i.e., debugging */
	+ 	DLE = 0x10,			/* ^p == DLE */
	+ 	Asciimask = 0x7f,
	+ };
	+ 
	  /*
	   *  INS8250 uart
	   */
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/8250.c:74,79 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/8250.c:80,88
	  	ulong	overrun;
	  };
	  
	+ /* externally-visible console-on-a-uart flag */
	+ int	uartcons;
	+ 
	  Uart	uart[2];
	  
	  #define UartFREQ 1843200
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/8250.c:146,152 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/8250.c:155,161
	  		uartrdreg(up, Istat);
	  		uartrdreg(up, Data);
	  	}
	-   
	+ 
	  	/* turn on fifo */
	  	if(n){
	  		uartwrreg(up, Fifoctl, Fena|Ftrig);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/8250.c:180,197 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/8250.c:189,204
	  			if(l & Oerror)
	  				up->overrun++;
	  			break;
	- 	
	+ 
	  		case 4:	/* received data available */
	  		case 12:
	  			ch = inb(up->port+Data);
	- #ifndef nohacks
	- 			if((ch & 0x7F) == 0x10)
	+ 			if (Development && (ch & Asciimask) == DLE)
	  				firmware();
	- #endif /* nohacks */
	  			if(up->rx)
	- 				(*up->rx)(ch & 0x7F);
	+ 				(*up->rx)(ch & Asciimask);
	  			break;
	- 	
	+ 
	  		case 2:	/* transmitter empty */
	  			ch = -1;
	  			if(up->tx)
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/8250.c:199,209 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/8250.c:206,216
	  			if(ch != -1)
	  				outb(up->port+Data, ch);
	  			break;
	- 	
	+ 
	  		case 0:	/* modem status */
	  			uartrdreg(up, Mstat);
	  			break;
	- 	
	+ 
	  		default:
	  			if(s&1)
	  				return;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/8250.c:280,285 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/8250.c:287,293
	  	uartenable(up);
	  	if(baud)
	  		uartsetbaud(up, baud);
	+ 	uartcons = 1;
	  }
	  
	  int
 [geoff] --rw-rw-r-- M 1217231 glenda fs 7264 Oct 12  2004 sys/src/fs/pc/8253.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/8253.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/8253.c]
 [geoff] --rw-rw-r-- M 1217231 jmk fs 1575 Feb 17 03:28 sys/src/fs/pc/compat.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/compat.c:4,11 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/compat.c:4,17
	  #include "all.h"
	  #include "io.h"
	  #include "mem.h"
	+ #include "../ip/ip.h"	/* for Ether */
	+ #include "etherif.h"	/* for Ether */
	  #include "compat.h"
	  
	+ enum {
	+ 	VectorPIC	= 24,		/* external [A]PIC interrupts */
	+ };
	+ 
	  void
	  free(void *p)		/* there's a struct member named "free".  sigh. */
	  {
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/compat.c:41,44 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/compat.c:47,107
	  		b->next = 0;
	  		freeb(b);
	  	}
	+ }
	+ 
	+ int
	+ readstr(vlong, void *, int, char *)
	+ {
	+ 	return 0;
	+ }
	+ 
	+ void
	+ addethercard(char *, int (*)(struct Ether *))
	+ {
	+ }
	+ 
	+ void
	+ kproc(char *name, void (*f)(void), void *arg)
	+ {
	+ 	userinit(f, arg, strdup(name));
	+ }
	+ 
	+ void
	+ intrenable(int irq, void (*f)(Ureg*, void*), void* a, int tbdf, char *name)
	+ {
	+ 	setvec(irq+VectorPIC, f, a);
	+ 	USED(tbdf, name);
	+ }
	+ 
	+ int
	+ intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int tbdf, char *name)
	+ {
	+ 	USED(irq, f, a, tbdf, name);
	+ 	return -1;
	+ }
	+ 
	+ /*
	+  * Atomically replace *p with copy of s
	+  */
	+ void
	+ kstrdup(char **p, char *s)
	+ {
	+ 	int n;
	+ 	char *t, *prev;
	+ 	static Lock l;
	+ 
	+ 	n = strlen(s)+1;
	+ 	/* if it's a user, we can wait for memory; if not, something's very wrong */
	+ 	if(0 && u){
	+ 		t = /* s */malloc(n);
	+ 		// setmalloctag(t, getcallerpc(&p));
	+ 	}else{
	+ 		t = malloc(n);
	+ 		if(t == nil)
	+ 			panic("kstrdup: no memory");
	+ 	}
	+ 	memmove(t, s, n);
	+ 	prev = *p;
	+ 	*p = t;
	+ 	free(prev);
	  }
 [geoff] --rw-rw-r-- M 1217231 jmk fs 2426 Feb 17 04:19 sys/src/fs/pc/compat.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/compat.h:16,35 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/compat.h:16,52
	  #define INCRPTR(bp, incr)	(bp)->count += (incr)
	  #define ENDDATA(bp)		((bp)->data + (bp)->count)
	  
	+ #define	ROUND(s, sz)	(((s)+((sz)-1))&~((sz)-1))
	+ 
	  #define Block	Msgbuf
	  #define rp	data			/* Block member → Msgbuf member */
	  #define Etherpkt Enpkt
	  #define Eaddrlen Easize
	+ #define ETHERHDRSIZE Ensize
	  
	+ #ifndef CACHELINESZ
	+ #define CACHELINESZ	32		/* pentium & later */
	+ #endif
	+ 
	+ #define KNAMELEN NAMELEN
	+ #define READSTR 128
	+ 
	  #define KADDR(a)	((void*)((ulong)(a)|KZERO))
	  #define PCIWINDOW	0
	  #define PCIWADDR(va)	(PADDR(va)+PCIWINDOW)
	  
	  #define iprint print
	+ 
	+ /* buffers */
	  #define allocb(sz)  mballoc((sz), 0, Maeth1)
	  #define iallocb(sz) mballoc((sz), 0, Mbeth1)
	+ 
	+ /* other memory */
	  #define malloc(sz)  ialloc((sz), 0)
	  #define xspanalloc(sz, align, span) ialloc((sz)+(align)+(span), (align))
	+ /* sleazy hacks; really need better allocators */
	+ #define xalloc(sz) malloc(sz)
	+ #define xfree(p)
	  
	  #define waserror() 0
	  #define poperror()
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/compat.h:38,51 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/compat.h:55,82
	  
	  #define qsetlimit(q, lim)
	  #define ioalloc(a, b, c, d)	0
	+ #define iofree(p)
	  #define strtol strtoul
	- #define kproc(name, f, arg)	userinit(f, arg, name)
	+ #define PROCARG(arg)
	+ #define GETARG(arg) getarg()
	  
	+ #define vmap(bar, size) upamalloc(bar, size, 0)
	+ 
	  /* see portdat.h for Msgbuf flags */
	  void	freeb(Block *b);
	  void	freeblist(Block *b);
	  void	free(void *p);
	  void	*mallocz(ulong sz, int clr);
	+ char	*strdup(char *);			/* port/config.c */
	+ void	kstrdup(char **p, char *s);
	  
	  /* header files mysteriously fail to declare this */
	  ulong	upamalloc(ulong addr, int size, int align);
	+ 
	+ int	readstr(vlong, void *, int, char *);
	+ void	addethercard(char *, int (*)(struct Ether *));
	+ void	kproc(char *text, void (*f)(void), void *arg);
	+ 
	+ /* pc-specific? */
	+ int	intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int, char *);
	+ void	intrenable(int irq, void (*f)(Ureg*, void*), void* a, int, char *name);
 [geoff] --rw-rw-r-- M 1217231 glenda fs 16637 Oct 13  2004 sys/src/fs/pc/dosfs.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/dosfs.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/dosfs.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2696 Feb 17 04:18 sys/src/fs/pc/dosfs.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/dosfs.h:46,63 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/dosfs.h:46,63
	  	char	name[8];
	  	char	ext[3];
	  	uchar	attr;
	- 	long	length;
	- 	long	pstart;		/* physical start cluster address */
	- 	long	pcurrent;	/* physical current cluster address */
	- 	long	lcurrent;	/* logical current cluster address */
	- 	long	offset;
	+ 	Devsize	length;
	+ 	Devsize	pstart;		/* physical start cluster address */
	+ 	Devsize	pcurrent;	/* physical current cluster address */
	+ 	Devsize	lcurrent;	/* logical current cluster address */
	+ 	Devsize	offset;
	  };
	  
	  struct Dos{
	  	int	dev;				/* device id */
	- 	long	(*read)(int, void*, long);	/* read routine */
	- 	vlong	(*seek)(int, vlong);		/* seek routine */
	- 	long	(*write)(int, void*, long);	/* write routine */
	+ 	Off	(*read)(int, void*, long);	/* read routine */
	+ 	Devsize	(*seek)(int, Devsize);		/* seek routine */
	+ 	Off	(*write)(int, void*, long);	/* write routine */
	  
	  	int	start;		/* start of file system (sector no.) */
	  	int	sectbytes;	/* size of a sector */
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/dosfs.h:72,81 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/dosfs.h:72,81
	  	int	fatbytes;	/* size of a fat (in bytes) */
	  	int	fatclusters;	/* no. of clusters governed by fat */
	  	int	fatbits;	/* 12 or 16 */
	- 	long	fataddr;	/* sector address of first fat */
	- 	long	rootaddr;	/* sector address of root directory */
	- 	long	dataaddr;	/* sector address of first data block */
	- 	long	freeptr;	/* for cluster allocation */
	+ 	Devsize	fataddr;	/* sector address of first fat */
	+ 	Devsize	rootaddr;	/* sector address of root directory */
	+ 	Devsize	dataaddr;	/* sector address of first data block */
	+ 	Devsize	freeptr;	/* for cluster allocation */
	  
	  	Dosfile	root;
	  };
 [geoff] --rw-rw-r-- M 1217231 jmk fs 18552 Jun  6  2004 sys/src/fs/pc/ether8139.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/ether8139.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/ether8139.c]
 [geoff] --rw-rw-r-- M 1217231 jmk fs 28160 Mar 15  2004 sys/src/fs/pc/ether83815.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/ether83815.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/ether83815.c]
 [geoff] --rw-rw-r-- M 1217231 geoff fs 31622 Mar 31  2003 sys/src/fs/pc/ether83815.mii.c
 [geoff] --rw-rw-r-- M 1217231 jmk fs 30976 Aug 11  2004 sys/src/fs/pc/etherdp83820.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherdp83820.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherdp83820.c]
 [geoff] --rw-rw-r-- M 1217231 rsc fs 24732 Feb 17 03:51 sys/src/fs/pc/etherga620.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherga620.c:473,479 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherga620.c:473,479
	  			return;
	  	}
	  	if(DoCountTicks)
	- 		rdtsc(&tsc0);
	+ 		cycles(&tsc0);
	  
	  	ctlr->interrupts++;
	  	csr32w(ctlr, Hi, 1);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherga620.c:493,499 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherga620.c:493,499
	  	csr32w(ctlr, Hi, 0);
	  
	  	if(DoCountTicks){
	- 		rdtsc(&tsc1);
	+ 		cycles(&tsc1);
	  		ctlr->ticks += tsc1-tsc0;
	  	}
	  }
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherga620.c:603,611 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherga620.c:603,611
	  	sethost64(&ctlr->gib->srcb.addr, ctlr->sr);
	  	if(DoHardwareCksum)
	  		flags = TcpUdpCksum|NoPseudoHdrCksum|HostRing;
	- 	else 
	+ 	else
	  		flags = HostRing;
	- 	if(DoCoalUpdateOnly) 
	+ 	if(DoCoalUpdateOnly)
	  		flags |= CoalUpdateOnly;
	  	ctlr->gib->srcb.control = (Nsr<<16)|flags;
	  	sethost64(&ctlr->gib->scp, ctlr->sci);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherga620.c:693,699 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherga620.c:693,699
	  	 * A unique index for this controller and the maximum packet
	  	 * length expected.
	  	 * For now only standard packets are expected.
	- 	 */ 
	+ 	 */
	  	csr32w(ctlr, Ifx, 1);
	  	csr32w(ctlr, IfMTU, ETHERMAXTU+4);
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherga620.c:879,885 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherga620.c:879,885
	  static int
	  ga620reset(Ctlr* ctlr)
	  {
	- 	int cls, csr, i;
	+ 	int cls, csr, i, b;
	  
	  	if(ga620detach(ctlr) < 0)
	  		return -1;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherga620.c:918,925 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherga620.c:918,926
	  	 * Snarf the MAC address from the serial EEPROM.
	  	 */
	  	for(i = 0; i < Easize; i++){
	- 		if((ctlr->ea[i] = at24c32r(ctlr, 0x8E+i)) == -1)
	+ 		if((b = at24c32r(ctlr, 0x8E+i)) == -1)
	  			return -1;
	+ 		ctlr->ea[i] = b;
	  	}
	  
	  	/*
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6375 Feb 17 02:52 sys/src/fs/pc/etherif.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherif.c:9,14 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherif.c:9,15
	  extern int ether21140reset(Ether*);
	  extern int etherelnk3reset(Ether*);
	  extern int etheri82557reset(Ether*);
	+ extern int igbepnp(Ether *);
	  extern int dp83815reset(Ether*);
	  extern int dp83820pnp(Ether*);
	  extern int rtl8139pnp(Ether*);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/etherif.c:19,33 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/etherif.c:20,35
	  	int	(*reset)(Ether*);
	  } etherctlr[] =
	  {
	- 	{ "ga620", etherga620reset, },
	- 	{ "21140", ether21140reset, },
	- 	{ "2114x", ether21140reset, },
	- 	{ "3C509", etherelnk3reset, },
	- 	{ "83815",  dp83815reset, },
	- 	{ "dp83820", dp83820pnp, },
	- 	{ "elnk3", etherelnk3reset, },
	- 	{ "i82557", etheri82557reset, },
	- 	{ "rtl8139", rtl8139pnp, },
	+ 	{ "21140",	ether21140reset, },
	+ 	{ "2114x",	ether21140reset, },
	+ 	{ "3C509",	etherelnk3reset, },
	+ 	{ "83815",	dp83815reset, },
	+ 	{ "dp83820",	dp83820pnp, },
	+ 	{ "elnk3",	etherelnk3reset, },
	+ 	{ "ga620",	etherga620reset, },
	+ 	{ "i82557",	etheri82557reset, },
	+ 	{ "igbe",	igbepnp, },
	+ 	{ "rtl8139",	rtl8139pnp, },
	  	{ 0, },
	  };
	  
 [geoff] --rw-rw-r-- M 1217231 geoff fs 46571 Nov 14 01:05 sys/src/fs/pc/etherigbe.c
 [geoff] --rw-rw-r-- M 1217231 jmk fs 4689 Feb 17 04:19 sys/src/fs/pc/ethermii.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/ethermii.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/ethermii.c]
 [geoff] --rw-rw-r-- M 1217231 jmk fs 3259 Feb 17 04:19 sys/src/fs/pc/ethermii.h
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/ethermii.h /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/ethermii.h]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 14022 Oct 12  2004 sys/src/fs/pc/floppy.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:85,91 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:85,91
	  	int	heads;		/* number of heads */
	  	int	steps;		/* steps per cylinder */
	  	int	tracks;		/* tracks/disk */
	- 	int	gpl;		/* intersector gap length for read/write */	
	+ 	int	gpl;		/* intersector gap length for read/write */
	  	int	fgpl;		/* intersector gap length for format */
	  	int	rate;		/* rate code */
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:137,143 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:137,143
	  	int	dt;
	  	int	dev;
	  
	- 	ulong	lasttouched;	/* time last touched */
	+ 	Timet	lasttouched;	/* time last touched */
	  	int	cyl;		/* current cylinder */
	  	int	confused;	/* needs to be recalibrated (or worse) */
	  	long	offset;		/* current offset */
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:455,461 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:455,461
	  				*dp->t->sectors;
	  	}
	  
	- 	dp->lasttouched = MACHP(0)->ticks;	
	+ 	dp->lasttouched = MACHP(0)->ticks;
	  	fl.intr = 0;
	  }
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:532,539 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:532,539
	  	return 0;
	  }
	  
	- vlong
	- floppyseek(int dev, vlong off)
	+ Devsize
	+ floppyseek(int dev, Devsize off)
	  {
	  	Floppy *dp;
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:679,691 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:679,691
	  	return dp->len;
	  }
	  
	- long
	+ Off
	  floppyread(int dev, void *a, long n)
	  {
	  	Floppy *dp;
	- 	long rv, i, nn, offset, sec;
	- 	uchar *aa;
	  	int tries;
	+ 	Off rv, i, nn, offset, sec;
	+ 	uchar *aa;
	  
	  	dp = &fl.d[dev];
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:693,699 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:693,699
	  	qlock(&fl);
	  	floppypos(dp, dp->offset);
	  	offset = dp->offset;
	- 	sec = dp->tsec + dp->t->sectors*dp->thead;
	+ 	sec = dp->tsec + (Off)dp->t->sectors*(Off)dp->thead;
	  	n = dp->len;
	  	if(fl.ccyl==dp->tcyl && fl.cdev==dev)
	  		goto out;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:701,708 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:701,708
	  	fl.ccyl = -1;
	  	fl.cdev = dev;
	  	aa = fl.ccache;
	- 	nn = dp->t->bytes*dp->t->sectors*dp->t->heads;
	- 	dp->offset = dp->tcyl*nn;
	+ 	nn = (Off)dp->t->bytes * (Off)dp->t->sectors * (Off)dp->t->heads;
	+ 	dp->offset = dp->tcyl * nn;
	  	for(rv = 0; rv < nn; rv += i){
	  		i = 0;
	  		for(tries = 0; tries < dp->maxtries; tries++){
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/floppy.c:727,739 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/floppy.c:727,739
	  	return n;
	  }
	  
	- long
	+ Off
	  floppywrite(int dev, void *a, long n)
	  {
	  	Floppy *dp;
	- 	long rv, i, offset;
	- 	uchar *aa;
	  	int tries;
	+ 	Off rv, i, offset;
	+ 	uchar *aa;
	  
	  	dp = &fl.d[dev];
	  
 [geoff] --rw-rw-r-- M 1217231 glenda fs 10838 Sep 24  2004 sys/src/fs/pc/l.s
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/l.s:3,8 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/l.s:3,9
	  #define OP16	BYTE	$0x66
	  #define NOP	XCHGL	AX,AX
	  #define CPUID	BYTE $0x0F; BYTE $0xA2	/* CPUID, argument in AX */
	+ #define WRMSR	BYTE $0x0F; BYTE $0x30	/* WRMSR, argument in AX/DX (lo/hi) */
	  #define RDMSR	BYTE $0x0F; BYTE $0x32	/* RDMSR, result in AX/DX (lo/hi) */
	  #define RDTSC 	BYTE $0x0F; BYTE $0x31
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/l.s:251,256 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/l.s:252,258
	  	RET
	  
	  TEXT wbflush(SB), $0
	+ 	XORL	AX, AX
	  	CPUID
	  	RET
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/l.s:312,318 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/l.s:314,320
	  	MOVL	CR0,AX;\
	  	ANDL	$~0x4,AX	/* EM=0 */;\
	  	MOVL	AX,CR0
	- 	
	+ 
	  TEXT	fpoff(SB),$0		/* turn off floating point */
	  	FPOFF
	  	RET
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/l.s:560,566 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/l.s:562,568
	  	POPL	AX
	  	RET
	  
	- TEXT rdtsc(SB), $0				/* time stamp counter; cycles since power up */
	+ TEXT _cycles(SB), $0				/* time stamp counter; cycles since power up */
	  	RDTSC
	  	MOVL	vlong+0(FP), CX			/* &vlong */
	  	MOVL	AX, 0(CX)			/* lo */
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/l.s:573,578 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/l.s:575,587
	  	MOVL	vlong+4(FP), CX			/* &vlong */
	  	MOVL	AX, (CX)			/* lo */
	  	MOVL	DX, 4(CX)			/* hi */
	+ 	RET
	+ 
	+ TEXT wrmsr(SB), $0
	+ 	MOVL	index+0(FP), CX
	+ 	MOVL	lo+4(FP), AX
	+ 	MOVL	hi+8(FP), DX
	+ 	WRMSR
	  	RET
	  
	  /*
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2840 Oct  3  2004 sys/src/fs/pc/malloc.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/malloc.c:136,143 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/malloc.c:136,142
	  	i = 0;
	  	for(mbp = mconf.bank; mbp < &mconf.bank[mconf.nbank]; mbp++)
	  		i += mbp->limit - mbp->base;
	- 	print("	mem left = %d\n", i);
	- 	print("		out of = %ld\n", conf.mem);
	+ 	print("	mem left = %,d, out of %,ld\n", i, conf.mem);
	  	/* paranoia: add this command as late as is easy */
	  	cmd_install("memory", "-- print ranges of memory banks", cmd_memory);
	  }
 [geoff] --rw-rw-r-- M 1217231 glenda fs 426 Feb 17 04:19 sys/src/fs/pc/mkfile
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/mkfile:9,12 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/mkfile:9,13
	  $ETHER:	../pc/etherif.h
	  
	  dosfs.$O nvr.$O:	../pc/dosfs.h
	- compat.$O ether83815.$O etherdp83820.$O ether8139.$O: ../pc/compat.h
	+ compat.$O ether8139.$O ether83815.$O etherdp83820.$O etherigbe.$O etherif.$O\
	+ 	ethermii.$O sdata.$O sdscsi.$O: ../pc/compat.h
 [geoff] --rw-rw-r-- M 1217231 glenda fs 7985 Feb 17 04:19 sys/src/fs/pc/pc.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/pc.c:118,124 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/pc.c:118,124
	  	for(;;){
	  		ac = *a++;
	  		bc = *b++;
	- 	
	+ 
	  		if(ac >= 'A' && ac <= 'Z')
	  			ac = 'a' + (ac - 'A');
	  		if(bc >= 'A' && bc <= 'Z')
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/pc.c:170,176 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/pc.c:170,176
	  
	  /* memory map */
	  /* the file server kernel will only see MAXMEG megabytes of RAM at most.  */
	- #define MAXMEG 1024
	+ #define MAXMEG 1791		/* 1.75GB-1MB, to avoid overshooting 1.75GB */
	  
	  char mmap[MAXMEG+2];
	  Mconf mconf;
 [geoff] --rw-rw-r-- M 1217231 glenda fs 12118 Sep 11  2004 sys/src/fs/pc/pci.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/pci.c:18,23 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/pci.c:18,33
	  	MaxUBN		= 255,
	  };
	  
	+ enum
	+ {					/* command register */
	+ 	IOen		= (1<<0),
	+ 	MEMen		= (1<<1),
	+ 	MASen		= (1<<2),
	+ 	MemWrInv	= (1<<4),
	+ 	PErrEn		= (1<<6),
	+ 	SErrEn		= (1<<8),
	+ };
	+ 
	  static Lock pcicfglock;
	  static Lock pcicfginitlock;
	  static int pcicfgmode = -1;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/pci.c:94,102 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/pci.c:104,119
	  				pcilist = p;
	  			pcitail = p;
	  
	- 			p->intl = pcicfgr8(p, PciINTL);
	+ 			p->rid = pcicfgr8(p, PciRID);
	+ 			p->ccrp = pcicfgr8(p, PciCCRp);
	+ 			p->ccrb = pcicfgr8(p, PciCCRb);
	+ 			p->pcr = pcicfgr32(p, PciPCR);
	+ 			/* ccru is uchar in cpu kernel */
	+ 			/* p->ccru = pcicfgr8(p, PciCCRu); */
	  			p->ccru = pcicfgr16(p, PciCCRu);
	  
	+ 			p->intl = pcicfgr8(p, PciINTL);
	+ 
	  			/*
	  			 * If the device is a multi-function device adjust the
	  			 * loop count so all possible functions are checked.
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/pci.c:506,511 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/pci.c:523,530
	  		return "sis";
	  	case 0x104b:
	  		return "mylex";
	+ 	case 0x105a:
	+ 		return "promise";
	  	case 0x105d:
	  		return "number9";
	  	case 0x10a9:
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/pci.c:599,602 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/pci.c:618,628
	  	pcr = pcicfgr16(p, PciPCR);
	  	pcr |= 0x04;
	  	pcicfgw16(p, PciPCR, pcr);
	+ }
	+ 
	+ void
	+ pciclrbme(Pcidev* p)
	+ {
	+ 	p->pcr &= ~MASen;
	+ 	pcicfgw16(p, PciPCR, p->pcr);
	  }
 [geoff] --rw-rw-r-- M 1217231 glenda fs 53673 Apr  2  2005 sys/src/fs/pc/scsincr53c8xx.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/scsincr53c8xx.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/scsincr53c8xx.c]
 [geoff] --rw-rw-r-- M 1217231 geoff fs 61793 Oct 13  2004 sys/src/fs/pc/sdata.c
 [geoff] --rw-rw-r-- M 1217231 geoff fs 7042 Feb 17 03:28 sys/src/fs/pc/sdscsi.c
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2166 Feb 17 04:19 sys/src/fs/pc/toy.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/toy.c:23,29 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/toy.c:23,29
	  static Lock rtclock;
	  
	  void
	- setrtc(ulong secs)
	+ setrtc(Timet secs)
	  {
	  	Rtc rtc;
	  	uchar bcdclock[Nbcd];
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/pc/toy.c:93,103 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/pc/toy.c:93,103
	  	return rtc2sec(&rtc);
	  }
	  
	- ulong
	+ Timet
	  rtctime(void)
	  {
	  	int i;
	- 	ulong t, ot;
	+ 	Timet t, ot;
	  
	  	ilock(&rtclock);
	  
 [geoff] --rw-rw-r-- M 1217231 glenda fs 29982 Feb 17 04:19 sys/src/fs/port/9p1.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/9p1.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/9p1.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 2128 Feb 17 04:19 sys/src/fs/port/9p1.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/9p1.h:15,21 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/9p1.h:15,21
	  	{
	  		struct
	  		{
	- 			short	uid;		/* T-Userstr */
	+ 			short	uid;		/* T-Userstr [obs.] */
	  			short	oldtag;		/* T-nFlush */
	  			Qid9p1	qid;		/* R-Attach, R-Clwalk, R-Walk,
	  						 * R-Open, R-Create */
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/9p1.h:44,50 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/9p1.h:44,50
	  		};
	  		struct
	  		{
	- 			long	offset;		/* T-Read, T-Write */
	+ 			Off	offset;		/* T-Read, T-Write */
	  			long	count;		/* T-Read, T-Write, R-Read */
	  			char*	data;		/* T-Write, R-Read */
	  		};
 [geoff] --rw-rw-r-- M 1217231 glenda fs 7911 Nov 28  2004 sys/src/fs/port/9p1lib.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/9p1lib.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/9p1lib.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 36248 Oct 18  2004 sys/src/fs/port/9p2.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/9p2.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/9p2.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 1932 Feb 17 04:19 sys/src/fs/port/all.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/all.h:4,10 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/all.h:4,10
	  #include	"fns.h"
	  
	  #define	CHAT(cp)	((cons.flags&chatflag)||(cp&&(((Chan*)cp)->flags&chatflag)))
	- #define	QID9P1(a,b)	(Qid9p1){a,b}
	+ #define	QID9P1(a,b)	(Qid9p1){(a),(b)}
	  #define	nelem(x)	(sizeof(x)/sizeof((x)[0]))
	  
	  #define	QPDIR		0x80000000L
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/all.h:32,38 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/all.h:32,38
	  #define	NQUEUE		20
	  
	  Uid*	uid;
	- short*	gidspace;
	+ Userid*	gidspace;
	  Lock	printing;
	  Time	tim;
	  File*	files;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/all.h:41,48 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/all.h:41,48
	  char*	errstr9p[MAXERR];
	  Chan*	chans;
	  RWlock	mainlock;
	- ulong	mktime;
	- ulong	boottime;
	+ Timet	mktime;
	+ Timet	boottime;
	  Queue*	serveq;
	  Queue*	raheadq;
	  Rabuf*	rabuffree;
 [geoff] --rw-rw-r-- M 1217231 glenda fs 7609 Oct 12  2004 sys/src/fs/port/auth.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/auth.c:210,216 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/auth.c:210,216
	  	int	inuse;
	  	char	uname[NAMELEN];	/* requestor's remote user name */
	  	char	aname[NAMELEN];	/* requested aname */
	- 	short	uid;		/* uid decided on */
	+ 	Userid	uid;		/* uid decided on */
	  	int	phase;
	  	char	cchal[CHALLEN];
	  	char	tbuf[TICKETLEN+AUTHENTLEN];	/* server ticket */
 [geoff] --rw-rw-r-- M 1217231 glenda fs 15683 Oct 15  2004 sys/src/fs/port/chk.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/chk.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/chk.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 4033 Oct 12  2004 sys/src/fs/port/clock.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/clock.c:136,142 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/clock.c:136,142
	  checkalarms(void)
	  {
	  	User *p;
	- 	ulong now;
	+ 	Timet now;
	  
	  	if(talarm.list == 0 || canlock(&talarm) == 0)
	  		return;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/clock.c:185,191 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/clock.c:185,191
	  }
	  
	  void
	- clock(ulong n, ulong pc)
	+ clock(Timet n, ulong pc)
	  {
	  	int i;
	  	Alarm *a;
 [geoff] --rw-rw-r-- M 1217231 glenda fs 16327 Oct 12  2004 sys/src/fs/port/con.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/con.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/con.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 20264 Feb  7  2005 sys/src/fs/port/config.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/config.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/config.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 4886 Nov 28  2004 sys/src/fs/port/console.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/console.c:89,95 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/console.c:89,95
	  }
	  
	  int
	- con_read(int fid, char *data, long offset, int count)
	+ con_read(int fid, char *data, Off offset, int count)
	  {
	  	Fcall in, ou;
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/console.c:105,111 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/console.c:105,111
	  }
	  
	  int
	- con_write(int fid, char *data, long offset, int count)
	+ con_write(int fid, char *data, Off offset, int count)
	  {
	  	Fcall in, ou;
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/console.c:226,240 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/console.c:226,242
	  	if(d == 0)
	  		goto out;
	  
	- 	print("name = %.28s\n", d->name);
	+ 	print("name = %.*s\n", NAMELEN, d->name);
	  	print("uid = %d; gid = %d; muid = %d\n", d->uid, d->gid, d->muid);
	- 	print("size = %ld; qid = %lux/%lux\n", d->size, d->qid.path, d->qid.version);
	+ 	print("size = %lld; qid = %llux/%lux\n", (Wideoff)d->size,
	+ 		(Wideoff)d->qid.path, d->qid.version);
	  	print("atime = %ld; mtime = %ld\n", d->atime, d->mtime);
	  	print("dblock =");
	  	for(i=0; i<NDBLOCK; i++)
	- 		print(" %ld", d->dblock[i]);
	- 	print("; iblock = %ld; diblock = %ld\n", d->iblock, d->diblock);
	- 	print("\n");
	+ 		print(" %lld", (Wideoff)d->dblock[i]);
	+ 	for (i = 0; i < NIBLOCK; i++)
	+ 		print("; iblocks[%d] = %lld", i, (Wideoff)d->iblocks[i]);
	+ 	print("\n\n");
	  
	  out:
	  	if(p)
 [geoff] --rw-rw-r-- M 1217231 glenda fs 4510 Feb 17 04:19 sys/src/fs/port/data.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/data.c:23,29 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/data.c:23,29
	  	[Ewstatb]	"wstat -- unknown bits in qid.type/mode",
	  	[Ewstatd]	"wstat -- attempt to change directory",
	  	[Ewstatg]	"wstat -- not in group",
	- 	[Ewstatl]	"wstat -- attempt to change length",
	+ 	[Ewstatl]	"wstat -- attempt to make length negative",
	  	[Ewstatm]	"wstat -- attempt to change muid",
	  	[Ewstato]	"wstat -- not owner or group leader",
	  	[Ewstatp]	"wstat -- attempt to change qid.path",
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/data.c:59,65 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/data.c:59,65
	  	[0x07]	"parity error",
	  	[0x08]	"message reject error",
	  	[0x0a]	"copy aborted",
	- 	[0x0b]	"inniator idetected error",
	+ 	[0x0b]	"initiator detected error",
	  	[0x0c]	"select re-select failed",
	  	[0x0e]	"miscompare",
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/data.c:138,143 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/data.c:138,148
	  	[Tfree]		"Tfree",
	  	[Tind1]		"Tind1",
	  	[Tind2]		"Tind2",
	+ #ifndef OLD
	+ 	[Tind3]		"Tind3",
	+ 	[Tind4]		"Tind4",
	+ 	/* add more Tind tags here ... */
	+ #endif
	  	[Tnone]		"Tnone",
	  	[Tsuper]	"Tsuper",
	  	[Tvirgo]	"Tvirgo",
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6345 Oct 18  2004 sys/src/fs/port/dentry.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/dentry.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/dentry.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 4451 Sep 23  2004 sys/src/fs/port/devcons.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/devcons.c:1,5 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/devcons.c:1,8
	  #include	"all.h"
	  
	+ /* from ../pc/8250.c */
	+ extern int uartcons;
	+ 
	  static
	  struct
	  {
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/devcons.c:272,278 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/devcons.c:275,283
	  	char buf[PRINTSIZE];
	  
	  	lights(Lpanic, 1);
	- 	dumpstack(u);
	+ 	/* if the only console is vga, conserve it */
	+ 	if (uartcons)
	+ 		dumpstack(u);
	  	strcpy(buf, "panic: ");
	  	va_start(arg, fmt);
	  	n = vseprint(buf+strlen(buf), buf+sizeof(buf), fmt, arg) - buf;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/devcons.c:291,297 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/devcons.c:296,302
	  {
	  	int i;
	  
	- 	if(predawn)
	+ 	if(predawn || !uartcons)
	  		return;
	  	for(i=0; i<50; i++) {
	  		if(!printq.printing)
 [geoff] --rw-rw-r-- M 1217231 geoff fs 10993 Oct 13  2004 sys/src/fs/port/devsd.c
 [geoff] --rw-rw-r-- M 1217231 geoff fs 682 Feb 17 04:20 sys/src/fs/port/fs.h
 [geoff] --rw-rw-r-- M 1217231 glenda fs 4956 Feb 17 04:19 sys/src/fs/port/iobuf.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/iobuf.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/iobuf.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 3701 Aug  8  2004 sys/src/fs/port/lib.h
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/lib.h:67,72 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/lib.h:67,73
	  };
	  
	  extern	int	print(char*, ...);
	+ extern	char*	seprint(char*, char*, char*, ...);
	  extern	char*	vseprint(char*, char*, char*, va_list);
	  extern	int	snprint(char*, int, char*, ...);
	  extern	int	sprint(char*, char*, ...);
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/lib.h:78,83 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/lib.h:79,85
	  
	  #pragma	varargck	argpos	fmtit	2
	  #pragma	varargck	argpos	print	1
	+ #pragma	varargck	argpos	seprint	3
	  #pragma	varargck	argpos	snprint	3
	  #pragma	varargck	argpos	sprint	2
	  
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/lib.h:97,107 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/lib.h:99,118
	  #pragma	varargck	type	"x"	uint
	  #pragma	varargck	type	"c"	uint
	  #pragma	varargck	type	"C"	uint
	+ /* no floating-point verbs */
	  #pragma	varargck	type	"s"	char*
	+ #pragma	varargck	type	"q"	char*
	  #pragma	varargck	type	"S"	Rune*
	+ #pragma	varargck	type	"Q"	Rune*
	  #pragma	varargck	type	"r"	void
	  #pragma	varargck	type	"%"	void
	+ #pragma	varargck	type	"n"	int*
	  #pragma	varargck	type	"p"	void*
	+ #pragma	varargck	flag	','
	+ #pragma varargck	type	"<" void*
	+ #pragma varargck	type	"[" void*
	+ #pragma varargck	type	"H" void*
	+ #pragma varargck	type	"lH" void*
	  
	  /*
	   * one-of-a-kind
 [geoff] --rw-rw-r-- M 1217231 glenda fs 7639 Feb 17 04:19 sys/src/fs/port/main.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/main.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/main.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 214 Feb 17 04:19 sys/src/fs/port/mkfile
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/mkfile:3,5 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/mkfile:3,6
	  	$CC $CFLAGS -I. ../port/$stem1.c
	  
	  9p1.$O 9p1lib.$O console.$O main.$O:	../port/9p1.h
	+ devsd.$O: ../pc/compat.h
 [geoff] --rw-rw-r-- M 1217231 glenda fs 19670 Feb 17 03:09 sys/src/fs/port/portdat.h
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/portdat.h /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/portdat.h]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 7526 Feb 17 04:19 sys/src/fs/port/portfns.h
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/portfns.h /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/portfns.h]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 5364 Oct 12  2004 sys/src/fs/port/proc.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/proc.c:17,23 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/proc.c:17,23
	  	User	*free;
	  } procalloc;
	  
	- struct
	+ volatile struct
	  {
	  	Lock;
	  	User	*head;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/proc.c:157,172 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/proc.c:157,172
	  {
	  	User *p;
	  
	- loop:
	- 	while(runq.head == 0)
	- 		;
	- 	splhi();
	- 	lock(&runq);
	- 	p = runq.head;
	- 	if(p==0 || p->mach){
	+ 	for (;;) {
	+ 		while(runq.head == 0)		/* if nobody to run, */
	+ 			;			/* idle with intrs enabled */
	+ 		splhi();
	+ 		lock(&runq);
	+ 		p = runq.head;
	+ 		if (p != nil && !p->mach)
	+ 			break;
	  		unlock(&runq);
	  		spllo();
	- 		goto loop;
	  	}
	  	if(p->rnext == 0)
	  		runq.tail = 0;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/proc.c:240,246 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/proc.c:240,246
	  	/*
	  	 * if condition happened, never mind
	  	 */
	- 	if((*f)(arg)) {	
	+ 	if((*f)(arg)) {
	  		unlock(r);
	  		splx(s);
	  		return;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/proc.c:273,279 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/proc.c:273,279
	  void
	  tsleep(Rendez *r, int (*fn)(void*), void *arg, int ms)
	  {
	- 	ulong when;
	+ 	Timet when;
	  	User *f, **l;
	  
	  	when = MS2TK(ms)+MACHP(0)->ticks;
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/proc.c:280,285 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/proc.c:280,287
	  
	  	lock(&talarm);
	  	/* take out of list if checkalarm didn't */
	+ 	if (u == nil)
	+ 		panic("tsleep: nil u");
	  	if(u->trend) {
	  		l = &talarm.list;
	  		for(f = *l; f; f = f->tlink) {
 [geoff] --rw-rw-r-- M 1217231 geoff fs 2167 Oct 12  2004 sys/src/fs/port/sd.h
 [geoff] --rw-rw-r-- M 1217231 glenda fs 25628 Oct 18  2004 sys/src/fs/port/sub.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/sub.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/sub.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 6222 Feb 17 04:19 sys/src/fs/port/time.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0217/plan9/sys/src/fs/port/time.c /n/sourcesdump/2006/0218/plan9/sys/src/fs/port/time.c]
 [geoff] --rw-rw-r-- M 1217231 glenda fs 9192 Oct 12  2004 sys/src/fs/port/uidgid.c
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/uidgid.c:3,10 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/uidgid.c:3,10
	  struct
	  {
	  	char*	name;
	- 	short	uid;
	- 	short	lead;
	+ 	Userid	uid;
	+ 	Userid	lead;
	  } minusers[] =
	  {
	  	"adm",		-1,	-1,
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/uidgid.c:175,188 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/uidgid.c:175,186
	  void
	  do_newuser(int argc, char *argv[])
	  {
	+ 	int i, l, n, nuid;
	+ 	char *p, *md, *q;
	  	Rune *r;
	- 	int nuid;
	- 	short *s;
	+ 	Userid *s;
	  	Uid *ui, *u2;
	- 	char *p, *md, *q;
	- 	int i, l, n;
	  
	- 
	  	nuid = 10000;
	  	md = 0;
	  	if(argc == 2) {
	/n/sourcesdump/2006/0217/plan9/sys/src/fs/port/uidgid.c:505,511 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/fs/port/uidgid.c:503,509
	  ingroup(int u, int g)
	  {
	  	Uid *p;
	- 	short *s, *e;
	+ 	Userid *s, *e;
	  
	  	if(u == g)
	  		return 1;

games/mkfile: add sudoku
 [rsc] --rw-rw-r-- M 1217231 jmk sys 595 Feb 17 14:03 sys/src/games/mkfile
	/n/sourcesdump/2006/0217/plan9/sys/src/games/mkfile:15,20 - 
	/n/sourcesdump/2006/0218/plan9/sys/src/games/mkfile:15,21
	  DIRS=\
	  	mahjongg\
	  	sokoban\
	+ 	sudoku\
	  
	  4s.$O 5s.$O xs.$O:	xs.h
	  $O.4s $O.5s: xs.$O

consolefs(4): add note about namespace file
 [rsc] --rw-rw-r-- M 1217231 glenda sys 4241 Feb 17 15:51 sys/man/4/consolefs
	/n/sourcesdump/2006/0217/plan9/sys/man/4/consolefs:190,195 - 
	/n/sourcesdump/2006/0218/plan9/sys/man/4/consolefs:190,200
	  An example of 2 consoles complete with console logging is:
	  .IP
	  .EX
	+ % cat /lib/ndb/consoledb
	+ group=sys
	+ 	uid=glenda
	+ console=bootes dev=/dev/eia0 gid=sys
	+ console=fornax dev=/dev/eia1 gid=sys
	  % aux/consolefs
	  % ls -p /mnt/consoles
	  bootes
	/n/sourcesdump/2006/0217/plan9/sys/man/4/consolefs:199,204 - 
	/n/sourcesdump/2006/0218/plan9/sys/man/4/consolefs:204,221
	  % clog /mnt/consoles/fornax /sys/log/fornax &
	  % clog /mnt/consoles/bootes /sys/log/bootes &
	  .EE
	+ .PP
	+ The console server's default name space must 
	+ mount the consoles for 
	+ .I C
	+ to import.
	+ This can be arranged by adding
	+ .IP
	+ .EX
	+ mount /srv/consoles /mnt/consoles
	+ .EE
	+ to
	+ .BR /lib/namespace.$sysname .
	  .SH FILES
	  .TF /lib/ndb/consoledb
	  .TP


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.