summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-03-10 01:58:31 +0000
committermarcel <marcel@FreeBSD.org>2003-03-10 01:58:31 +0000
commit14ed6230694657886d1723f423533bd246610c09 (patch)
tree15e26e97f2271778b6a07ccb62b561e6e6244c23 /sys/ia64
parent84cc6161ca8402c45ca489e45b21766f09d0dfbf (diff)
downloadFreeBSD-src-14ed6230694657886d1723f423533bd246610c09.zip
FreeBSD-src-14ed6230694657886d1723f423533bd246610c09.tar.gz
Fix two rounds of breakages and cleanup. Remove the sccdebug sysctl
while I'm here and garbage collect dead code (ssc_clone). Define d_maxsize as DFLTPHYS for now because that's what it will be if we don't define it.
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/sscdisk.c66
1 files changed, 11 insertions, 55 deletions
diff --git a/sys/ia64/ia64/sscdisk.c b/sys/ia64/ia64/sscdisk.c
index 8895ba4..966e584 100644
--- a/sys/ia64/ia64/sscdisk.c
+++ b/sys/ia64/ia64/sscdisk.c
@@ -72,15 +72,10 @@ ssc(u_int64_t in0, u_int64_t in1, u_int64_t in2, u_int64_t in3, int which)
#define SSC_NSECT 409600
#endif
-MALLOC_DEFINE(M_SSC, "SSC disk", "Memory Disk");
-MALLOC_DEFINE(M_SSCSECT, "SSC sectors", "Memory Disk Sectors");
-
-static int ssc_debug;
-SYSCTL_INT(_debug, OID_AUTO, sscdebug, CTLFLAG_RW, &ssc_debug, 0, "");
+MALLOC_DEFINE(M_SSC, "SSC disk", "Simulator Disk");
static int sscrootready;
-
static d_strategy_t sscstrategy;
static LIST_HEAD(, ssc_s) ssc_softc_list = LIST_HEAD_INITIALIZER(&ssc_softc_list);
@@ -92,7 +87,6 @@ struct ssc_s {
struct disk disk;
dev_t dev;
int busy;
- unsigned nsect;
int fd;
};
@@ -103,18 +97,11 @@ sscstrategy(struct bio *bp)
{
struct ssc_s *sc;
int s;
- devstat_trans_flags dop;
- unsigned sscop = 0;
struct disk_req req;
struct disk_stat stat;
u_long len, va, off;
- if (ssc_debug > 1)
- printf("sscstrategy(%p) %s %x, %ld, %ld, %p)\n",
- bp, devtoname(bp->bio_dev), bp->bio_flags, bp->bio_blkno,
- bp->bio_bcount / DEV_BSIZE, bp->bio_data);
-
- sc = bp->bio_dev->si_drv1;
+ sc = bp->bio_disk->d_drv1;
s = splbio();
@@ -135,13 +122,6 @@ sscstrategy(struct bio *bp)
if (!bp)
break;
- if (bp->bio_cmd == BIO_READ) {
- dop = DEVSTAT_READ;
- sscop = SSC_READ;
- } else {
- dop = DEVSTAT_WRITE;
- sscop = SSC_WRITE;
- }
va = (u_long) bp->bio_data;
len = bp->bio_bcount;
off = bp->bio_pblkno << DEV_BSHIFT;
@@ -153,10 +133,8 @@ sscstrategy(struct bio *bp)
t = len;
req.len = t;
req.addr = ia64_tpa(va);
- if (ssc_debug > 1)
- printf("sscstrategy: reading %d bytes from 0x%ld into 0x%lx\n",
- req.len, off, req.addr);
- ssc(sc->fd, 1, ia64_tpa((long) &req), off, sscop);
+ ssc(sc->fd, 1, ia64_tpa((long) &req), off,
+ (bp->bio_cmd == BIO_READ) ? SSC_READ : SSC_WRITE);
stat.fd = sc->fd;
ssc(ia64_tpa((long)&stat), 0, 0, 0,
SSC_WAIT_COMPLETION);
@@ -196,43 +174,21 @@ ssccreate(int unit)
sc->unit = unit;
bioq_init(&sc->bio_queue);
- sc->disk.d_strategy = sscstrategy;
+ sc->disk.d_drv1 = sc;
+ sc->disk.d_fwheads = 0;
+ sc->disk.d_fwsectors = 0;
+ sc->disk.d_maxsize = DFLTPHYS;
+ sc->disk.d_mediasize = (off_t)SSC_NSECT * DEV_BSIZE;
sc->disk.d_name = "sscdisk";
sc->disk.d_sectorsize = DEV_BSIZE;
- sc->disk.d_mediasize = (off_t)SSC_NSECT * DEV_BSIZE;
- sc->disk.d_fwsectors = 0;
- sc->disk.d_fwheads = 0;
- sc->dev = disk_create(sc->unit, &sc->disk, 0, NULL, NULL);
- sc->dev->si_drv1 = sc;
- sc->nsect = SSC_NSECT;
+ sc->disk.d_strategy = sscstrategy;
+ disk_create(sc->unit, &sc->disk, 0, NULL, NULL);
sc->fd = fd;
if (sc->unit == 0)
sscrootready = 1;
return (sc);
}
-#if 0
-static void
-ssc_clone (void *arg, char *name, int namelen, dev_t *dev)
-{
- int i, u;
-
- if (*dev != NODEV)
- return;
- i = dev_stdclone(name, NULL, "ssc", &u);
- if (i == 0)
- return;
- /* XXX: should check that next char is [\0sa-h] */
- /*
- * Now we cheat: We just create the disk, but don't match.
- * Since we run before it, subr_disk.c::disk_clone() will
- * find our disk and match the sought for device.
- */
- ssccreate(u);
- return;
-}
-#endif
-
static void
ssc_drvinit(void *unused)
{
OpenPOWER on IntegriCloud