- if (dumplo == 0 && bdevsw[major(dumpdev)].d_psize)
- dumplo = (*bdevsw[major(dumpdev)].d_psize)(dumpdev) - physmem;
- if (dumplo < 0)
- dumplo = 0;
-}
-#else SECSIZE
-swapconf()
-{
- register struct swdevt *swp;
- register int nblks;
- register int bsize;
- struct partinfo dpart;
-
- for (swp = swdevt; swp->sw_dev; swp++)
- if ((nblks = psize(swp->sw_dev, &swp->sw_blksize,
- &swp->sw_bshift)) != -1 &&
- (swp->sw_nblks == 0 || swp->sw_nblks > nblks))
- swp->sw_nblks = nblks;
-
- if (!cold) /* In case called for addition of another drive */
- return;
- if (dumplo == 0) {
- nblks = psize(dumpdev, (int *)0, (int *)0);
- if (nblks == -1 || nblks < ctod(physmem))
- dumplo = 0;
- else
- dumplo = nblks - ctod(physmem);
- }
-}
-
-/*
- * Return size of disk partition in DEV_BSIZE units.
- * If needed, return sector size.
- */
-psize(dev, psize, pshift)
- register dev_t dev;
- int *psize, *pshift;
-{
- register int nblks, bsize, bshift;
- struct partinfo dpart;
-
- if ((*bdevsw[major(dev)].d_ioctl)(dev, DIOCGPART,
- (caddr_t)&dpart, FREAD) == 0)
- bsize = dpart.disklab->d_secsize;
- else
- bsize = DEV_BSIZE;
- if (psize)
- *psize = bsize;
- bshift = 0;
- for (nblks = DEV_BSIZE / bsize; nblks > 1; nblks >>= 1)
- bshift++;
- if (pshift)
- *pshift = bshift;
- nblks = -1;
- if (bdevsw[major(dev)].d_psize) {
- nblks = (*bdevsw[major(dev)].d_psize)(dev);
- if (nblks != -1)
- nblks >>= bshift;
- }
- return (nblks);