Don't include cdprobe any more
This commit is contained in:
parent
4ae5403558
commit
7d83ef196d
2 changed files with 1 additions and 85 deletions
|
@ -16,8 +16,7 @@ LIBS = -lsys -lsysutil -ltimers
|
||||||
OBJ = main.o open.o read.o write.o pipe.o dmap.o \
|
OBJ = main.o open.o read.o write.o pipe.o dmap.o \
|
||||||
device.o path.o mount.o link.o super.o inode.o \
|
device.o path.o mount.o link.o super.o inode.o \
|
||||||
cache.o cache2.o filedes.o stadir.o protect.o time.o \
|
cache.o cache2.o filedes.o stadir.o protect.o time.o \
|
||||||
lock.o misc.o utility.o select.o timers.o table.o \
|
lock.o misc.o utility.o select.o timers.o table.o
|
||||||
cdprobe.o
|
|
||||||
|
|
||||||
# build local binary
|
# build local binary
|
||||||
all build: $(SERVER)
|
all build: $(SERVER)
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
/* This file contains some code to guess where we have to load the
|
|
||||||
* RAM image device from, if started from CD. (In this case it's hard
|
|
||||||
* to tell where this is without diving into BIOS heuristics.)
|
|
||||||
*
|
|
||||||
* There is some nasty hard-codery in here (e.g. AT minor device numbers,
|
|
||||||
* MINIX cd label) that can be improved on.
|
|
||||||
*
|
|
||||||
* Changes:
|
|
||||||
* Jul 14, 2005 Created (Ben Gras)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "fs.h"
|
|
||||||
#include "super.h"
|
|
||||||
|
|
||||||
#include <minix/com.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/*===========================================================================*
|
|
||||||
* cdprobe *
|
|
||||||
*===========================================================================*/
|
|
||||||
PUBLIC int cdprobe(void)
|
|
||||||
{
|
|
||||||
#define CD_SECTOR 2048
|
|
||||||
#define AT_MAJOR 3
|
|
||||||
#define AT_MINORS 4
|
|
||||||
int i, minors[AT_MINORS] = { 0, 5, 10, 15 }, dev = 0, found = 0;
|
|
||||||
char pvd[CD_SECTOR];
|
|
||||||
printf("\nLooking for boot CD. This may take a minute.\n"
|
|
||||||
"Please ignore any error messages.\n\n");
|
|
||||||
for(i = 0; i < AT_MINORS && !found; i++) {
|
|
||||||
struct super_block probe_super;
|
|
||||||
int r, minor;
|
|
||||||
|
|
||||||
dev = (AT_MAJOR << MAJOR) | minors[i];
|
|
||||||
|
|
||||||
/* Open device readonly. (This fails if the device
|
|
||||||
* is also writable, which a CD isn't.)
|
|
||||||
*/
|
|
||||||
if ((r = dev_open(dev, FS_PROC_NR, RO_BIT)) != OK) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((r = dev_io(DEV_READ, dev, FS_PROC_NR, pvd,
|
|
||||||
16*CD_SECTOR, sizeof(pvd), 0)) != sizeof(pvd)) {
|
|
||||||
dev_close(dev);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
dev_close(dev);
|
|
||||||
|
|
||||||
/* Check PVD ID. */
|
|
||||||
if (pvd[0] != 1 || pvd[1] != 'C' || pvd[2] != 'D' ||
|
|
||||||
pvd[3] != '0' || pvd[4] != '0' || pvd[5] != '1' || pvd[6] != 1 ||
|
|
||||||
strncmp(pvd + 40, "MINIX", 5)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 3. Both c0dXp1 and p2 should have a superblock. */
|
|
||||||
for(minor = minors[i]+2; minor <= minors[i]+3; minor++) {
|
|
||||||
dev = (AT_MAJOR << MAJOR) | minor;
|
|
||||||
if ((r = dev_open(dev, FS_PROC_NR, R_BIT)) != OK) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
probe_super.s_dev = dev;
|
|
||||||
r = read_super(&probe_super);
|
|
||||||
dev_close(dev);
|
|
||||||
if (r != OK) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (minor > minors[i]+3) {
|
|
||||||
/* Success? Then set dev to p1. */
|
|
||||||
dev = (AT_MAJOR << MAJOR) | (minors[i]+2);
|
|
||||||
found = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found) return NO_DEV;
|
|
||||||
|
|
||||||
return dev;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue