plan 9 kernel history: overview | file list | diff list

1999/0501/boot/local.c (diff list | history)

1992/0317/sys/src/9/boot/local.c:30,361992/0318/sys/src/9/boot/local.c:30,36 (short | long)
1992/0317    
 
	if(stat("/kfs", d) < 0) 
		return -1; 
	sprint(partition, "%sfs", mp->arg ? mp->arg : bootdisk); 
1992/0318    
	sprint(partition, "%sfs", disk ? disk : bootdisk); 
1992/0317    
	if(stat(partition, d) < 0) 
		return -1; 
 
1992/0318/sys/src/9/boot/local.c:33,391992/0321/sys/src/9/boot/local.c:33,39 (short | long)
1992/0318    
	sprint(partition, "%sfs", disk ? disk : bootdisk); 
1992/0317    
	if(stat(partition, d) < 0) 
		return -1; 
                 
1992/0321    
	print("kfs..."); 
1992/0317    
	if(bind("#c", "/dev", MREPL) < 0) 
		fatal("bind #c"); 
	if(bind("#p", "/proc", MREPL) < 0) 
1992/0321/sys/src/9/boot/local.c:20,311992/0728/sys/src/9/boot/local.c:20,29 (short | long)
1992/0317    
int 
connectlocal(void) 
{ 
	ulong i; 
	int p[2]; 
	char d[DIRLEN]; 
	char sbuf[32]; 
	char rbuf[32]; 
	char *mtpt; 
	char partition[2*NAMELEN]; 
 
	if(stat("/kfs", d) < 0) 
1992/0728/sys/src/9/boot/local.c:7,131992/0825/sys/src/9/boot/local.c:7,13 (short | long)
1992/0317    
void 
configlocal(Method *mp) 
{ 
	disk = mp->arg; 
1992/0825    
	disk = *sys ? sys : mp->arg; 
1992/0317    
	USED(mp); 
} 
 
1992/0825/sys/src/9/boot/local.c:7,131992/0826/sys/src/9/boot/local.c:7,16 (short | long)
1992/0317    
void 
configlocal(Method *mp) 
{ 
1992/0825    
	disk = *sys ? sys : mp->arg; 
1992/0826    
	if(*sys == '/' || *sys == '#') 
		disk = sys; 
	else 
		disk = mp->arg; 
1992/0317    
	USED(mp); 
} 
 
1992/0826/sys/src/9/boot/local.c:25,401992/0902/sys/src/9/boot/local.c:25,45 (short | long)
1992/0317    
{ 
	int p[2]; 
	char d[DIRLEN]; 
	char sbuf[32]; 
	char rbuf[32]; 
	char partition[2*NAMELEN]; 
1992/0902    
	char *dev; 
1992/0317    
 
	if(stat("/kfs", d) < 0) 
1992/0902    
	if(stat("/fs", d) < 0) 
1992/0317    
		return -1; 
1992/0318    
	sprint(partition, "%sfs", disk ? disk : bootdisk); 
1992/0317    
	if(stat(partition, d) < 0) 
		return -1; 
1992/0321    
	print("kfs..."); 
1992/0902    
 
	dev = disk ? disk : bootdisk; 
	sprint(partition, "%sfs", dev); 
	if(stat(partition, d) < 0){ 
		strcpy(partition, dev); 
		if(stat(partition, d) < 0) 
			return -1; 
	} 
 
	print("fs..."); 
1992/0317    
	if(bind("#c", "/dev", MREPL) < 0) 
		fatal("bind #c"); 
	if(bind("#p", "/proc", MREPL) < 0) 
1992/0826/sys/src/9/boot/local.c:45,541992/0902/sys/src/9/boot/local.c:50,61
1992/0317    
	case -1: 
		fatal("fork"); 
	case 0: 
		sprint(sbuf, "%d", p[0]); 
		sprint(rbuf, "%d", p[1]); 
		execl("/kfs", "kfs", "-f", partition, "-s", sbuf, rbuf, 0); 
		fatal("can't exec kfs"); 
1992/0902    
		dup(p[0], 0); 
		dup(p[1], 1); 
		close(p[0]); 
		close(p[1]); 
		execl("/fs", "fs", "-f", partition, "-s", 0); 
		fatal("can't exec fs"); 
1992/0317    
	default: 
		break; 
	} 
1992/0902/sys/src/9/boot/local.c:3,81993/0403/sys/src/9/boot/local.c:3,9 (short | long)
1992/0317    
#include <../boot/boot.h> 
 
static char *disk; 
1993/0403    
static char *niob; 
1992/0317    
 
void 
configlocal(Method *mp) 
1992/0902/sys/src/9/boot/local.c:11,161993/0403/sys/src/9/boot/local.c:12,19
1992/0826    
		disk = sys; 
	else 
		disk = mp->arg; 
1993/0403    
	if(niob = strchr(disk, ' '))	/* assign = */ 
		*niob++ = 0; 
1992/0317    
	USED(mp); 
} 
 
1992/0902/sys/src/9/boot/local.c:27,321993/0403/sys/src/9/boot/local.c:30,36
1992/0317    
	char d[DIRLEN]; 
	char partition[2*NAMELEN]; 
1992/0902    
	char *dev; 
1993/0403    
	char *args[16], **argp; 
1992/0317    
 
1992/0902    
	if(stat("/fs", d) < 0) 
1992/0317    
		return -1; 
1992/0902/sys/src/9/boot/local.c:54,601993/0403/sys/src/9/boot/local.c:58,74
1992/0902    
		dup(p[1], 1); 
		close(p[0]); 
		close(p[1]); 
		execl("/fs", "fs", "-f", partition, "-s", 0); 
1993/0403    
		argp = args; 
		*argp++ = "fs"; 
		if(niob){ 
			*argp++ = "-B"; 
			*argp++ = niob; 
		} 
		*argp++ = "-f"; 
		*argp++ = partition; 
		*argp++ = "-s"; 
		*argp = 0; 
		exec("/fs", args); 
1992/0902    
		fatal("can't exec fs"); 
1992/0317    
	default: 
		break; 
1993/0403/sys/src/9/boot/local.c:2,71993/0406/sys/src/9/boot/local.c:2,8 (short | long)
1992/0317    
#include <libc.h> 
#include <../boot/boot.h> 
 
1993/0406    
static char diskname[2*NAMELEN]; 
1992/0317    
static char *disk; 
1993/0403    
static char *niob; 
1992/0317    
 
1993/0403/sys/src/9/boot/local.c:8,191993/0406/sys/src/9/boot/local.c:9,29
1992/0317    
void 
configlocal(Method *mp) 
{ 
1993/0406    
	char *p; 
	int n; 
 
	disk = mp->arg;			/* 1st try from config file */ 
	if(disk && (niob = strchr(disk, ' ')))	/* assign = */ 
		*niob++ = 0; 
	if(strncmp(argv0, "dksc(0,", 7) == 0){ 
		p = strchr(argv0, ','); 
		n = strtoul(p+1, 0, 10); 
		sprint(diskname, "#w%d/sd%dfs", n, n); 
		disk = diskname; 
		/*print("argv0=\"%s\" --> disk = \"%s\"\n", argv0, disk);/**/ 
	} 
1992/0826    
	if(*sys == '/' || *sys == '#') 
		disk = sys; 
	else 
		disk = mp->arg; 
1993/0403    
	if(niob = strchr(disk, ' '))	/* assign = */ 
		*niob++ = 0; 
1992/0317    
	USED(mp); 
} 
 
1993/0406/sys/src/9/boot/local.c:24,291993/0410/sys/src/9/boot/local.c:24,31 (short | long)
1993/0406    
	} 
1992/0826    
	if(*sys == '/' || *sys == '#') 
		disk = sys; 
1993/0410    
	if(disk) 
		setenv("bootdisk", disk); 
1992/0317    
	USED(mp); 
} 
 
1993/0410/sys/src/9/boot/local.c:2,81993/0501/sys/src/9/boot/local.c:2,7 (short | long)
1992/0317    
#include <libc.h> 
#include <../boot/boot.h> 
 
1993/0406    
static char diskname[2*NAMELEN]; 
1992/0317    
static char *disk; 
1993/0403    
static char *niob; 
1992/0317    
 
1993/0410/sys/src/9/boot/local.c:9,311993/0501/sys/src/9/boot/local.c:8,19
1992/0317    
void 
configlocal(Method *mp) 
{ 
1993/0406    
	char *p; 
	int n; 
                 
	disk = mp->arg;			/* 1st try from config file */ 
	if(disk && (niob = strchr(disk, ' ')))	/* assign = */ 
		*niob++ = 0; 
	if(strncmp(argv0, "dksc(0,", 7) == 0){ 
		p = strchr(argv0, ','); 
		n = strtoul(p+1, 0, 10); 
		sprint(diskname, "#w%d/sd%dfs", n, n); 
		disk = diskname; 
		/*print("argv0=\"%s\" --> disk = \"%s\"\n", argv0, disk);/**/ 
	} 
1992/0826    
	if(*sys == '/' || *sys == '#') 
		disk = sys; 
1993/0410    
	if(disk) 
		setenv("bootdisk", disk); 
1993/0501    
	else 
		disk = mp->arg; 
	if(niob = strchr(disk, ' '))	/* assign = */ 
		*niob++ = 0; 
1992/0317    
	USED(mp); 
} 
 
1993/0501/sys/src/9/boot/local.c:2,71994/0312/sys/src/9/boot/local.c:2,8 (short | long)
1992/0317    
#include <libc.h> 
#include <../boot/boot.h> 
 
1994/0312    
static char diskname[2*NAMELEN]; 
1992/0317    
static char *disk; 
1993/0403    
static char *niob; 
1992/0317    
 
1993/0501/sys/src/9/boot/local.c:8,191994/0312/sys/src/9/boot/local.c:9,31
1992/0317    
void 
configlocal(Method *mp) 
{ 
1994/0312    
	char *p; 
	int n; 
 
	disk = mp->arg;			/* 1st try from config file */ 
	if(disk && (niob = strchr(disk, ' ')))	/* assign = */ 
		*niob++ = 0; 
	if(strncmp(argv0, "dksc(0,", 7) == 0){ 
		p = strchr(argv0, ','); 
		n = strtoul(p+1, 0, 10); 
		sprint(diskname, "#w%d/sd%dfs", n, n); 
		disk = diskname; 
		/*print("argv0=\"%s\" --> disk = \"%s\"\n", argv0, disk);/**/ 
	} 
1992/0826    
	if(*sys == '/' || *sys == '#') 
		disk = sys; 
1993/0501    
	else 
		disk = mp->arg; 
	if(niob = strchr(disk, ' '))	/* assign = */ 
		*niob++ = 0; 
1994/0312    
	if(disk) 
		setenv("bootdisk", disk); 
1992/0317    
	USED(mp); 
} 
 
1994/0312/sys/src/9/boot/local.c:4,101995/02021/sys/src/9/boot/local.c:4,9 (short | long)
1992/0317    
 
1994/0312    
static char diskname[2*NAMELEN]; 
1992/0317    
static char *disk; 
1993/0403    
static char *niob; 
1992/0317    
 
void 
configlocal(Method *mp) 
1994/0312/sys/src/9/boot/local.c:12,311995/02021/sys/src/9/boot/local.c:11,49
1994/0312    
	char *p; 
	int n; 
 
	disk = mp->arg;			/* 1st try from config file */ 
	if(disk && (niob = strchr(disk, ' ')))	/* assign = */ 
		*niob++ = 0; 
	if(strncmp(argv0, "dksc(0,", 7) == 0){ 
1995/02021    
	if(*sys == '/' || *sys == '#'){ 
		/* 
		 *  if the user specifies the disk in the boot cmd or 
		 * 'root is from' prompt, use it 
		 */ 
		disk = sys; 
	} else if(strncmp(argv0, "dksc(0,", 7) == 0){ 
		/* 
		 *  on many mips arg0 of the boot command specifies the 
		 *  scsi logical unit number 
		 */ 
1994/0312    
		p = strchr(argv0, ','); 
		n = strtoul(p+1, 0, 10); 
		sprint(diskname, "#w%d/sd%dfs", n, n); 
		disk = diskname; 
		/*print("argv0=\"%s\" --> disk = \"%s\"\n", argv0, disk);/**/ 
1995/02021    
	} else if(mp->arg){ 
		/* 
		 *  a default is supplied when the kernel is made 
		 */ 
		disk = mp->arg; 
	} else if(*bootdisk){ 
		/* 
		 *  an environment variable from a pc's plan9.ini or 
		 *  from the mips nvram or generated by the kernel 
		 *  is the last resort. 
		 */ 
		disk = bootdisk; 
1994/0312    
	} 
1992/0826    
	if(*sys == '/' || *sys == '#') 
		disk = sys; 
1995/02021    
 
	/* if we've decided on one, pass it on to all programs */ 
1994/0312    
	if(disk) 
		setenv("bootdisk", disk); 
1995/02021    
 
1992/0317    
	USED(mp); 
} 
 
1994/0312/sys/src/9/boot/local.c:72,811995/02021/sys/src/9/boot/local.c:90,95
1992/0902    
		close(p[1]); 
1993/0403    
		argp = args; 
		*argp++ = "fs"; 
		if(niob){ 
			*argp++ = "-B"; 
			*argp++ = niob; 
		} 
		*argp++ = "-f"; 
		*argp++ = partition; 
		*argp++ = "-s"; 
1995/02021/sys/src/9/boot/local.c:62,681999/0501/sys/src/9/boot/local.c:62,68 (short | long)
1992/0902    
	char *dev; 
1993/0403    
	char *args[16], **argp; 
1992/0317    
 
1992/0902    
	if(stat("/fs", d) < 0) 
1999/0501    
	if(stat("/kfs", d) < 0) 
1992/0317    
		return -1; 
1992/0902    
 
	dev = disk ? disk : bootdisk; 
1995/02021/sys/src/9/boot/local.c:73,791999/0501/sys/src/9/boot/local.c:73,79
1992/0902    
			return -1; 
	} 
 
	print("fs..."); 
1999/0501    
	print("kfs..."); 
1992/0317    
	if(bind("#c", "/dev", MREPL) < 0) 
		fatal("bind #c"); 
	if(bind("#p", "/proc", MREPL) < 0) 
1995/02021/sys/src/9/boot/local.c:89,1011999/0501/sys/src/9/boot/local.c:89,101
1992/0902    
		close(p[0]); 
		close(p[1]); 
1993/0403    
		argp = args; 
		*argp++ = "fs"; 
1999/0501    
		*argp++ = "kfs"; 
1993/0403    
		*argp++ = "-f"; 
		*argp++ = partition; 
		*argp++ = "-s"; 
		*argp = 0; 
		exec("/fs", args); 
1992/0902    
		fatal("can't exec fs"); 
1999/0501    
		exec("/kfs", args); 
		fatal("can't exec kfs"); 
1992/0317    
	default: 
		break; 
	} 
1999/0501/sys/src/9/boot/local.c:57,622000/0506/sys/src/9/boot/local.c:57,63 (short | long)
1992/0317    
connectlocal(void) 
{ 
	int p[2]; 
2000/0506    
	Dir dir; 
1992/0317    
	char d[DIRLEN]; 
	char partition[2*NAMELEN]; 
1992/0902    
	char *dev; 
1999/0501/sys/src/9/boot/local.c:67,772000/0506/sys/src/9/boot/local.c:68,80
1992/0902    
 
	dev = disk ? disk : bootdisk; 
	sprint(partition, "%sfs", dev); 
	if(stat(partition, d) < 0){ 
2000/0506    
	if(dirstat(partition, &dir) < 0){ 
1992/0902    
		strcpy(partition, dev); 
		if(stat(partition, d) < 0) 
2000/0506    
		if(dirstat(partition, &dir) < 0) 
1992/0902    
			return -1; 
	} 
2000/0506    
	if(dir.mode & CHDIR) 
		return -1; 
1992/0902    
 
1999/0501    
	print("kfs..."); 
1992/0317    
	if(bind("#c", "/dev", MREPL) < 0) 
2000/0506/sys/src/9/boot/local.c:4,92000/1018/sys/src/9/boot/local.c:4,10 (short | long)
1992/0317    
 
1994/0312    
static char diskname[2*NAMELEN]; 
1992/0317    
static char *disk; 
2000/1018    
static char **args; 
1992/0317    
 
void 
configlocal(Method *mp) 
2000/0506/sys/src/9/boot/local.c:56,672000/1018/sys/src/9/boot/local.c:57,68
1992/0317    
int 
connectlocal(void) 
{ 
	int p[2]; 
2000/1018    
	int i, p[2]; 
2000/0506    
	Dir dir; 
1992/0317    
	char d[DIRLEN]; 
	char partition[2*NAMELEN]; 
1992/0902    
	char *dev; 
1993/0403    
	char *args[16], **argp; 
2000/1018    
	char **arg, **argp; 
1992/0317    
 
1999/0501    
	if(stat("/kfs", d) < 0) 
1992/0317    
		return -1; 
2000/0506/sys/src/9/boot/local.c:87,1032000/1018/sys/src/9/boot/local.c:88,113
1992/0317    
	case -1: 
		fatal("fork"); 
	case 0: 
1992/0902    
		dup(p[0], 0); 
		dup(p[1], 1); 
		close(p[0]); 
		close(p[1]); 
1993/0403    
		argp = args; 
2000/1018    
		arg = malloc((bargc+5)*sizeof(char*)); 
		argp = arg; 
1999/0501    
		*argp++ = "kfs"; 
1993/0403    
		*argp++ = "-f"; 
		*argp++ = partition; 
		*argp++ = "-s"; 
2000/1018    
		for(i=1; i<bargc; i++) 
			*argp++ = bargv[i]; 
1993/0403    
		*argp = 0; 
1999/0501    
		exec("/kfs", args); 
2000/1018    
 
		print("kfs"); 
		for(argp=arg; *argp; argp++) 
			print(" %s", *argp); 
		print("\n"); 
 
		dup(p[0], 0); 
		dup(p[1], 1); 
		close(p[0]); 
		close(p[1]); 
		exec("/kfs", arg); 
1999/0501    
		fatal("can't exec kfs"); 
1992/0317    
	default: 
		break; 
2000/1018/sys/src/9/boot/local.c:98,1082000/1129/sys/src/9/boot/local.c:98,103 (short | long)
2000/1018    
			*argp++ = bargv[i]; 
1993/0403    
		*argp = 0; 
2000/1018    
 
		print("kfs"); 
		for(argp=arg; *argp; argp++) 
			print(" %s", *argp); 
		print("\n"); 
                 
		dup(p[0], 0); 
		dup(p[1], 1); 
		close(p[0]); 
2000/1129/sys/src/9/boot/local.c:64,782001/0119/sys/src/9/boot/local.c:64,83 (short | long)
1992/0902    
	char *dev; 
2000/1018    
	char **arg, **argp; 
1992/0317    
 
1999/0501    
	if(stat("/kfs", d) < 0) 
2001/0119    
	if(stat("/kfs", d) < 0){ 
		print("stat /kfs fails: %r\n"); 
1992/0317    
		return -1; 
2001/0119    
	} 
1992/0902    
 
	dev = disk ? disk : bootdisk; 
	sprint(partition, "%sfs", dev); 
2000/0506    
	if(dirstat(partition, &dir) < 0){ 
1992/0902    
		strcpy(partition, dev); 
2000/0506    
		if(dirstat(partition, &dir) < 0) 
2001/0119    
		if(dirstat(partition, &dir) < 0){ 
			print("stat %s fails: %r\n", partition); 
			print("(stat %sfs also failed)\n", dev); 
1992/0902    
			return -1; 
2001/0119    
		} 
1992/0902    
	} 
2000/0506    
	if(dir.mode & CHDIR) 
		return -1; 
2001/0119/sys/src/9/boot/local.c:2,82001/0527/sys/src/9/boot/local.c:2,8 (short | long)
1992/0317    
#include <libc.h> 
#include <../boot/boot.h> 
 
1994/0312    
static char diskname[2*NAMELEN]; 
2001/0527    
static char diskname[64]; 
1992/0317    
static char *disk; 
2000/1018    
static char **args; 
1992/0317    
 
2001/0119/sys/src/9/boot/local.c:58,852001/0527/sys/src/9/boot/local.c:58,84
1992/0317    
connectlocal(void) 
{ 
2000/1018    
	int i, p[2]; 
2000/0506    
	Dir dir; 
1992/0317    
	char d[DIRLEN]; 
	char partition[2*NAMELEN]; 
2001/0527    
	Dir *dir; 
	char partition[64]; 
1992/0902    
	char *dev; 
2000/1018    
	char **arg, **argp; 
2001/0527    
	ulong mode; 
1992/0317    
 
2001/0119    
	if(stat("/kfs", d) < 0){ 
		print("stat /kfs fails: %r\n"); 
2001/0527    
	if(stat("/kfs", statbuf, sizeof statbuf) < 0) 
1992/0317    
		return -1; 
2001/0119    
	} 
1992/0902    
 
	dev = disk ? disk : bootdisk; 
	sprint(partition, "%sfs", dev); 
2000/0506    
	if(dirstat(partition, &dir) < 0){ 
2001/0527    
	snprint(partition, sizeof partition, "%sfs", dev); 
	dir = dirstat(partition); 
	if(dir == nil){ 
1992/0902    
		strcpy(partition, dev); 
2001/0119    
		if(dirstat(partition, &dir) < 0){ 
			print("stat %s fails: %r\n", partition); 
			print("(stat %sfs also failed)\n", dev); 
2001/0527    
		dir = dirstat(partition); 
		if(dir == nil) 
1992/0902    
			return -1; 
2001/0119    
		} 
1992/0902    
	} 
2000/0506    
	if(dir.mode & CHDIR) 
2001/0527    
	mode = dir->mode; 
	free(dir); 
	if(mode & DMDIR) 
2000/0506    
		return -1; 
1992/0902    
 
1999/0501    
	print("kfs..."); 
2001/0119/sys/src/9/boot/local.c:102,1072001/0527/sys/src/9/boot/local.c:101,111
2000/1018    
		for(i=1; i<bargc; i++) 
			*argp++ = bargv[i]; 
1993/0403    
		*argp = 0; 
2001/0527    
 
		print("kfs"); 
		for(argp=arg; *argp; argp++) 
			print(" %s", *argp); 
		print("\n"); 
2000/1018    
 
		dup(p[0], 0); 
		dup(p[1], 1); 
2001/0527/sys/src/9/boot/local.c:49,602002/0109/sys/src/9/boot/local.c:49,54 (short | long)
1992/0317    
} 
 
int 
authlocal(void) 
{ 
	return -1; 
} 
                 
int 
connectlocal(void) 
{ 
2000/1018    
	int i, p[2]; 
2002/0109/sys/src/9/boot/local.c:110,1152002/0401/sys/src/9/boot/local.c:110,116 (short | long)
1992/0317    
	default: 
		break; 
	} 
2002/0401    
	waitpid(); 
1992/0317    
 
	close(p[1]); 
	return p[0]; 
2002/0401/sys/src/9/boot/local.c:96,1062002/0414/sys/src/9/boot/local.c:96,101 (short | long)
2000/1018    
			*argp++ = bargv[i]; 
1993/0403    
		*argp = 0; 
2001/0527    
 
		print("kfs"); 
		for(argp=arg; *argp; argp++) 
			print(" %s", *argp); 
		print("\n"); 
2000/1018    
                 
		dup(p[0], 0); 
		dup(p[1], 1); 
		close(p[0]); 
2002/0414/sys/src/9/boot/local.c:58,642002/1130/sys/src/9/boot/local.c:58,64 (short | long)
2000/1018    
	char **arg, **argp; 
2001/0527    
	ulong mode; 
1992/0317    
 
2001/0527    
	if(stat("/kfs", statbuf, sizeof statbuf) < 0) 
2002/1130    
	if(stat("/boot/kfs", statbuf, sizeof statbuf) < 0) 
1992/0317    
		return -1; 
1992/0902    
 
	dev = disk ? disk : bootdisk; 
2002/0414/sys/src/9/boot/local.c:100,1062002/1130/sys/src/9/boot/local.c:100,106
2000/1018    
		dup(p[1], 1); 
		close(p[0]); 
		close(p[1]); 
		exec("/kfs", arg); 
2002/1130    
		exec("/boot/kfs", arg); 
1999/0501    
		fatal("can't exec kfs"); 
1992/0317    
	default: 
		break; 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)