sbin/newfs_msdos/mkfs_msdos.c
186
struct bpb bpb;
sbin/newfs_msdos/mkfs_msdos.c
237
static int getstdfmt(const char *, struct bpb *);
sbin/newfs_msdos/mkfs_msdos.c
238
static int getbpbinfo(int, const char *, const char *, int, struct bpb *, off_t);
sbin/newfs_msdos/mkfs_msdos.c
239
static void print_bpb(struct bpb *);
sbin/newfs_msdos/mkfs_msdos.c
252
struct bpb bpb;
sbin/newfs_msdos/mkfs_msdos.c
315
memset(&bpb, 0, sizeof(bpb));
sbin/newfs_msdos/mkfs_msdos.c
317
if (getstdfmt(o.floppy, &bpb) == -1)
sbin/newfs_msdos/mkfs_msdos.c
319
bpb.bsec = bpb.sec;
sbin/newfs_msdos/mkfs_msdos.c
320
bpb.sec = 0;
sbin/newfs_msdos/mkfs_msdos.c
321
bpb.bspf = bpb.spf;
sbin/newfs_msdos/mkfs_msdos.c
322
bpb.spf = 0;
sbin/newfs_msdos/mkfs_msdos.c
325
bpb.hds = o.drive_heads;
sbin/newfs_msdos/mkfs_msdos.c
327
bpb.spt = o.sectors_per_track;
sbin/newfs_msdos/mkfs_msdos.c
329
bpb.bps = o.bytes_per_sector;
sbin/newfs_msdos/mkfs_msdos.c
331
bpb.bsec = o.size;
sbin/newfs_msdos/mkfs_msdos.c
333
bpb.hid = o.hidden_sectors;
sbin/newfs_msdos/mkfs_msdos.c
336
if (getbpbinfo(fd, fname, dtype, o.hidden_sectors_set, &bpb,
sbin/newfs_msdos/mkfs_msdos.c
339
bpb.bsec -= (o.offset / bpb.bps);
sbin/newfs_msdos/mkfs_msdos.c
340
if (bpb.spc == 0) { /* set defaults */
sbin/newfs_msdos/mkfs_msdos.c
344
bpb.spc = 1; /* use 512 bytes */
sbin/newfs_msdos/mkfs_msdos.c
348
bpb.spc = 1; /* use 512 bytes */
sbin/newfs_msdos/mkfs_msdos.c
352
bpb.spc = 8; /* use 4k */
sbin/newfs_msdos/mkfs_msdos.c
356
x1 = howmany(bpb.bsec, (1048576 / 512)); /* -> MB */
sbin/newfs_msdos/mkfs_msdos.c
357
while (bpb.spc < 128 && x < x1) {
sbin/newfs_msdos/mkfs_msdos.c
359
bpb.spc *= 2;
sbin/newfs_msdos/mkfs_msdos.c
397
if (!powerof2(bpb.bps)) {
sbin/newfs_msdos/mkfs_msdos.c
398
warnx("bytes/sector (%u) is not a power of 2", bpb.bps);
sbin/newfs_msdos/mkfs_msdos.c
401
if (bpb.bps < MINBPS) {
sbin/newfs_msdos/mkfs_msdos.c
403
bpb.bps, MINBPS);
sbin/newfs_msdos/mkfs_msdos.c
408
bpb.rde = 0;
sbin/newfs_msdos/mkfs_msdos.c
414
if (o.block_size < bpb.bps) {
sbin/newfs_msdos/mkfs_msdos.c
416
o.block_size, bpb.bps);
sbin/newfs_msdos/mkfs_msdos.c
419
if (o.block_size > bpb.bps * MAXSPC) {
sbin/newfs_msdos/mkfs_msdos.c
421
o.block_size, bpb.bps * MAXSPC);
sbin/newfs_msdos/mkfs_msdos.c
424
bpb.spc = o.block_size / bpb.bps;
sbin/newfs_msdos/mkfs_msdos.c
432
bpb.spc = o.sectors_per_cluster;
sbin/newfs_msdos/mkfs_msdos.c
435
bpb.res = o.reserved_sectors;
sbin/newfs_msdos/mkfs_msdos.c
442
bpb.nft = o.num_FAT;
sbin/newfs_msdos/mkfs_msdos.c
445
bpb.rde = o.directory_entries;
sbin/newfs_msdos/mkfs_msdos.c
451
bpb.mid = o.media_descriptor;
sbin/newfs_msdos/mkfs_msdos.c
454
bpb.bspf = o.sectors_per_fat;
sbin/newfs_msdos/mkfs_msdos.c
456
bpb.infs = o.info_sector;
sbin/newfs_msdos/mkfs_msdos.c
458
bpb.bkbs = o.backup_sector;
sbin/newfs_msdos/mkfs_msdos.c
475
if (!S_ISREG(sb.st_mode) || sb.st_size % bpb.bps ||
sbin/newfs_msdos/mkfs_msdos.c
476
sb.st_size < bpb.bps || sb.st_size > bpb.bps * MAXU16) {
sbin/newfs_msdos/mkfs_msdos.c
480
bss = sb.st_size / bpb.bps;
sbin/newfs_msdos/mkfs_msdos.c
482
if (!bpb.nft)
sbin/newfs_msdos/mkfs_msdos.c
483
bpb.nft = 2;
sbin/newfs_msdos/mkfs_msdos.c
485
if (bpb.bsec < (bpb.res ? bpb.res : bss) +
sbin/newfs_msdos/mkfs_msdos.c
486
howmany((RESFTE + (bpb.spc ? MINCLS16 : MAXCLS12 + 1)) *
sbin/newfs_msdos/mkfs_msdos.c
487
((bpb.spc ? 16 : 12) / BPN), bpb.bps * NPB) *
sbin/newfs_msdos/mkfs_msdos.c
488
bpb.nft +
sbin/newfs_msdos/mkfs_msdos.c
489
howmany(bpb.rde ? bpb.rde : DEFRDE,
sbin/newfs_msdos/mkfs_msdos.c
490
bpb.bps / sizeof(struct de)) +
sbin/newfs_msdos/mkfs_msdos.c
491
(bpb.spc ? MINCLS16 : MAXCLS12 + 1) *
sbin/newfs_msdos/mkfs_msdos.c
492
(bpb.spc ? bpb.spc : howmany(DEFBLK, bpb.bps)))
sbin/newfs_msdos/mkfs_msdos.c
494
else if (bpb.rde || bpb.bsec <
sbin/newfs_msdos/mkfs_msdos.c
495
(bpb.res ? bpb.res : bss) +
sbin/newfs_msdos/mkfs_msdos.c
496
howmany((RESFTE + MAXCLS16) * 2, bpb.bps) * bpb.nft +
sbin/newfs_msdos/mkfs_msdos.c
497
howmany(DEFRDE, bpb.bps / sizeof(struct de)) +
sbin/newfs_msdos/mkfs_msdos.c
499
(bpb.spc ? bpb.spc : howmany(8192, bpb.bps)))
sbin/newfs_msdos/mkfs_msdos.c
506
if (!bpb.infs) {
sbin/newfs_msdos/mkfs_msdos.c
507
if (x == MAXU16 || x == bpb.bkbs) {
sbin/newfs_msdos/mkfs_msdos.c
511
bpb.infs = x;
sbin/newfs_msdos/mkfs_msdos.c
513
if (bpb.infs != MAXU16 && x <= bpb.infs)
sbin/newfs_msdos/mkfs_msdos.c
514
x = bpb.infs + 1;
sbin/newfs_msdos/mkfs_msdos.c
515
if (!bpb.bkbs) {
sbin/newfs_msdos/mkfs_msdos.c
520
bpb.bkbs = x;
sbin/newfs_msdos/mkfs_msdos.c
521
} else if (bpb.bkbs != MAXU16 && bpb.bkbs == bpb.infs) {
sbin/newfs_msdos/mkfs_msdos.c
525
if (bpb.bkbs != MAXU16 && x <= bpb.bkbs)
sbin/newfs_msdos/mkfs_msdos.c
526
x = bpb.bkbs + 1;
sbin/newfs_msdos/mkfs_msdos.c
528
if (!bpb.res)
sbin/newfs_msdos/mkfs_msdos.c
529
bpb.res = o.fat_type == 32 ? MAX(x, MAX(16384 / bpb.bps, 4)) : x;
sbin/newfs_msdos/mkfs_msdos.c
530
else if (bpb.res < x) {
sbin/newfs_msdos/mkfs_msdos.c
531
warnx("too few reserved sectors (need %d have %d)", x, bpb.res);
sbin/newfs_msdos/mkfs_msdos.c
534
if (o.fat_type != 32 && !bpb.rde)
sbin/newfs_msdos/mkfs_msdos.c
535
bpb.rde = DEFRDE;
sbin/newfs_msdos/mkfs_msdos.c
536
rds = howmany(bpb.rde, bpb.bps / sizeof(struct de));
sbin/newfs_msdos/mkfs_msdos.c
537
if (!bpb.spc)
sbin/newfs_msdos/mkfs_msdos.c
538
for (bpb.spc = howmany(o.fat_type == 16 ? DEFBLK16 : DEFBLK, bpb.bps);
sbin/newfs_msdos/mkfs_msdos.c
539
bpb.spc < MAXSPC &&
sbin/newfs_msdos/mkfs_msdos.c
540
bpb.res +
sbin/newfs_msdos/mkfs_msdos.c
542
bpb.bps * NPB) * bpb.nft +
sbin/newfs_msdos/mkfs_msdos.c
544
(u_int64_t)(maxcls(o.fat_type) + 1) * bpb.spc <= bpb.bsec;
sbin/newfs_msdos/mkfs_msdos.c
545
bpb.spc <<= 1);
sbin/newfs_msdos/mkfs_msdos.c
546
if (o.fat_type != 32 && bpb.bspf > MAXU16) {
sbin/newfs_msdos/mkfs_msdos.c
550
x1 = bpb.res + rds;
sbin/newfs_msdos/mkfs_msdos.c
551
x = bpb.bspf ? bpb.bspf : 1;
sbin/newfs_msdos/mkfs_msdos.c
552
if (x1 + (u_int64_t)x * bpb.nft > bpb.bsec) {
sbin/newfs_msdos/mkfs_msdos.c
556
x1 += x * bpb.nft;
sbin/newfs_msdos/mkfs_msdos.c
557
x = (u_int64_t)(bpb.bsec - x1) * bpb.bps * NPB /
sbin/newfs_msdos/mkfs_msdos.c
558
(bpb.spc * bpb.bps * NPB + o.fat_type / BPN * bpb.nft);
sbin/newfs_msdos/mkfs_msdos.c
560
bpb.bps * NPB);
sbin/newfs_msdos/mkfs_msdos.c
561
if (!bpb.bspf) {
sbin/newfs_msdos/mkfs_msdos.c
563
bpb.bspf = x2;
sbin/newfs_msdos/mkfs_msdos.c
564
x1 += (bpb.bspf - 1) * bpb.nft;
sbin/newfs_msdos/mkfs_msdos.c
566
cls = (bpb.bsec - x1) / bpb.spc;
sbin/newfs_msdos/mkfs_msdos.c
567
x = (u_int64_t)bpb.bspf * bpb.bps * NPB / (o.fat_type / BPN) - RESFTE;
sbin/newfs_msdos/mkfs_msdos.c
570
if (bpb.bspf < x2) {
sbin/newfs_msdos/mkfs_msdos.c
576
if (bspf_is_calculated && o.sectors_per_cluster == 0 && bpb.spc > 2) {
sbin/newfs_msdos/mkfs_msdos.c
587
bpb.bsec = x1 + (cls + 1) * bpb.spc - 1;
sbin/newfs_msdos/mkfs_msdos.c
589
bpb.bsec);
sbin/newfs_msdos/mkfs_msdos.c
593
"(%u bytes/cluster)\n", fname, cls * bpb.spc,
sbin/newfs_msdos/mkfs_msdos.c
594
cls * bpb.spc == 1 ? "" : "s", cls, o.fat_type,
sbin/newfs_msdos/mkfs_msdos.c
595
cls == 1 ? "" : "s", bpb.bps * bpb.spc);
sbin/newfs_msdos/mkfs_msdos.c
596
if (!bpb.mid)
sbin/newfs_msdos/mkfs_msdos.c
597
bpb.mid = !bpb.hid ? 0xf0 : 0xf8;
sbin/newfs_msdos/mkfs_msdos.c
599
bpb.rdcl = RESFTE;
sbin/newfs_msdos/mkfs_msdos.c
600
if (bpb.hid + bpb.bsec <= MAXU16) {
sbin/newfs_msdos/mkfs_msdos.c
601
bpb.sec = bpb.bsec;
sbin/newfs_msdos/mkfs_msdos.c
602
bpb.bsec = 0;
sbin/newfs_msdos/mkfs_msdos.c
605
bpb.spf = bpb.bspf;
sbin/newfs_msdos/mkfs_msdos.c
606
bpb.bspf = 0;
sbin/newfs_msdos/mkfs_msdos.c
612
if (bpb.bsec == 0)
sbin/newfs_msdos/mkfs_msdos.c
631
print_bpb(&bpb);
sbin/newfs_msdos/mkfs_msdos.c
642
if (!(img = malloc(bpb.bps)))
sbin/newfs_msdos/mkfs_msdos.c
644
dir = bpb.res + (bpb.spf ? bpb.spf : bpb.bspf) * bpb.nft;
sbin/newfs_msdos/mkfs_msdos.c
648
for (lsn = 0; lsn < dir + (o.fat_type == 32 ? bpb.spc : rds); lsn++) {
sbin/newfs_msdos/mkfs_msdos.c
651
fname,lsn,(dir + (o.fat_type == 32 ? bpb.spc : rds)),
sbin/newfs_msdos/mkfs_msdos.c
652
(lsn*100)/(dir + (o.fat_type == 32 ? bpb.spc : rds)));
sbin/newfs_msdos/mkfs_msdos.c
657
o.fat_type == 32 && bpb.bkbs != MAXU16 &&
sbin/newfs_msdos/mkfs_msdos.c
658
bss <= bpb.bkbs && x >= bpb.bkbs) {
sbin/newfs_msdos/mkfs_msdos.c
659
x -= bpb.bkbs;
sbin/newfs_msdos/mkfs_msdos.c
666
if ((n = read(fd1, img, bpb.bps)) == -1) {
sbin/newfs_msdos/mkfs_msdos.c
670
if ((size_t)n != bpb.bps) {
sbin/newfs_msdos/mkfs_msdos.c
675
memset(img, 0, bpb.bps);
sbin/newfs_msdos/mkfs_msdos.c
677
(o.fat_type == 32 && bpb.bkbs != MAXU16 && lsn == bpb.bkbs)) {
sbin/newfs_msdos/mkfs_msdos.c
680
mk2(bsbpb->bps, bpb.bps);
sbin/newfs_msdos/mkfs_msdos.c
681
mk1(bsbpb->spc, bpb.spc);
sbin/newfs_msdos/mkfs_msdos.c
682
mk2(bsbpb->res, bpb.res);
sbin/newfs_msdos/mkfs_msdos.c
683
mk1(bsbpb->nft, bpb.nft);
sbin/newfs_msdos/mkfs_msdos.c
684
mk2(bsbpb->rde, bpb.rde);
sbin/newfs_msdos/mkfs_msdos.c
685
mk2(bsbpb->sec, bpb.sec);
sbin/newfs_msdos/mkfs_msdos.c
686
mk1(bsbpb->mid, bpb.mid);
sbin/newfs_msdos/mkfs_msdos.c
687
mk2(bsbpb->spf, bpb.spf);
sbin/newfs_msdos/mkfs_msdos.c
688
mk2(bsbpb->spt, bpb.spt);
sbin/newfs_msdos/mkfs_msdos.c
689
mk2(bsbpb->hds, bpb.hds);
sbin/newfs_msdos/mkfs_msdos.c
690
mk4(bsbpb->hid, bpb.hid);
sbin/newfs_msdos/mkfs_msdos.c
691
mk4(bsbpb->bsec, bpb.bsec);
sbin/newfs_msdos/mkfs_msdos.c
695
mk4(bsxbpb->bspf, bpb.bspf);
sbin/newfs_msdos/mkfs_msdos.c
698
mk4(bsxbpb->rdcl, bpb.rdcl);
sbin/newfs_msdos/mkfs_msdos.c
699
mk2(bsxbpb->infs, bpb.infs);
sbin/newfs_msdos/mkfs_msdos.c
700
mk2(bsxbpb->bkbs, bpb.bkbs);
sbin/newfs_msdos/mkfs_msdos.c
730
} else if (o.fat_type == 32 && bpb.infs != MAXU16 &&
sbin/newfs_msdos/mkfs_msdos.c
731
(lsn == bpb.infs ||
sbin/newfs_msdos/mkfs_msdos.c
732
(bpb.bkbs != MAXU16 &&
sbin/newfs_msdos/mkfs_msdos.c
733
lsn == bpb.bkbs + bpb.infs))) {
sbin/newfs_msdos/mkfs_msdos.c
739
} else if (lsn >= bpb.res && lsn < dir &&
sbin/newfs_msdos/mkfs_msdos.c
740
!((lsn - bpb.res) %
sbin/newfs_msdos/mkfs_msdos.c
741
(bpb.spf ? bpb.spf : bpb.bspf))) {
sbin/newfs_msdos/mkfs_msdos.c
742
mk1(img[0], bpb.mid);
sbin/newfs_msdos/mkfs_msdos.c
758
if ((n = write(fd, img, bpb.bps)) == -1) {
sbin/newfs_msdos/mkfs_msdos.c
762
if ((size_t)n != bpb.bps) {
sbin/newfs_msdos/mkfs_msdos.c
810
getstdfmt(const char *fmt, struct bpb *bpb)
sbin/newfs_msdos/mkfs_msdos.c
820
*bpb = stdfmt[i].bpb;
sbin/newfs_msdos/mkfs_msdos.c
829
struct bpb *bpb, off_t create_size)
sbin/newfs_msdos/mkfs_msdos.c
856
if (!(((part != -1) && ((!iflag && part != -1) || !bpb->bsec)) ||
sbin/newfs_msdos/mkfs_msdos.c
857
!bpb->bps || !bpb->spt || !bpb->hds)) {
sbin/newfs_msdos/mkfs_msdos.c
888
if (!bpb->bps) {
sbin/newfs_msdos/mkfs_msdos.c
891
bpb->bps = sector_size;
sbin/newfs_msdos/mkfs_msdos.c
903
if (!bpb->spt) {
sbin/newfs_msdos/mkfs_msdos.c
906
bpb->spt = nsectors;
sbin/newfs_msdos/mkfs_msdos.c
908
if (!bpb->hds) {
sbin/newfs_msdos/mkfs_msdos.c
911
bpb->hds = ntracks;
sbin/newfs_msdos/mkfs_msdos.c
913
if (!bpb->bsec)
sbin/newfs_msdos/mkfs_msdos.c
914
bpb->bsec = size;
sbin/newfs_msdos/mkfs_msdos.c
923
print_bpb(struct bpb *bpb)
sbin/newfs_msdos/mkfs_msdos.c
925
printf("bps=%u spc=%u res=%u nft=%u", bpb->bps, bpb->spc, bpb->res,
sbin/newfs_msdos/mkfs_msdos.c
926
bpb->nft);
sbin/newfs_msdos/mkfs_msdos.c
927
if (bpb->rde)
sbin/newfs_msdos/mkfs_msdos.c
928
printf(" rde=%u", bpb->rde);
sbin/newfs_msdos/mkfs_msdos.c
929
if (bpb->sec)
sbin/newfs_msdos/mkfs_msdos.c
930
printf(" sec=%u", bpb->sec);
sbin/newfs_msdos/mkfs_msdos.c
931
printf(" mid=%#x", bpb->mid);
sbin/newfs_msdos/mkfs_msdos.c
932
if (bpb->spf)
sbin/newfs_msdos/mkfs_msdos.c
933
printf(" spf=%u", bpb->spf);
sbin/newfs_msdos/mkfs_msdos.c
934
printf(" spt=%u hds=%u hid=%u", bpb->spt, bpb->hds, bpb->hid);
sbin/newfs_msdos/mkfs_msdos.c
935
if (bpb->bsec)
sbin/newfs_msdos/mkfs_msdos.c
936
printf(" bsec=%u", bpb->bsec);
sbin/newfs_msdos/mkfs_msdos.c
937
if (!bpb->spf) {
sbin/newfs_msdos/mkfs_msdos.c
938
printf(" bspf=%u rdcl=%u", bpb->bspf, bpb->rdcl);
sbin/newfs_msdos/mkfs_msdos.c
940
printf(bpb->infs == MAXU16 ? "%#x" : "%u", bpb->infs);
sbin/newfs_msdos/mkfs_msdos.c
942
printf(bpb->bkbs == MAXU16 ? "%#x" : "%u", bpb->bkbs);
sys/arch/aarch64/aarch64/cpu.c
629
const unsigned bpb = 4;
sys/arch/aarch64/aarch64/cpu.c
660
bpb*sizeof(x));
sys/arch/aarch64/aarch64/cpu.c
661
nbits -= MIN(nbits, bpb*sizeof(x));
sys/lib/libsa/dosfs.c
435
bs->bpb.bpbMedia < 0xf0)
sys/lib/libsa/dosfs.c
437
if (getushort(bs->bpb.bpbBytesPerSec) != SECSIZ)
sys/lib/libsa/dosfs.c
439
if (!(fs->spc = bs->bpb.bpbSecPerClust) || fs->spc & (fs->spc - 1))
sys/lib/libsa/dosfs.c
443
if ((fs->spf = getushort(bs->bpb.bpbFATsecs))) {
sys/lib/libsa/dosfs.c
444
if (bs->bpb.bpbFATs != 2)
sys/lib/libsa/dosfs.c
446
if (!(fs->dirents = getushort(bs->bpb.bpbRootDirEnts)))
sys/lib/libsa/dosfs.c
449
if (!(fs->spf = getulong(bs->bpb.bpbBigFATsecs)))
sys/lib/libsa/dosfs.c
451
if (!bs->bpb.bpbFATs || bs->bpb.bpbFATs > 16)
sys/lib/libsa/dosfs.c
453
if ((fs->rdcl = getulong(bs->bpb.bpbRootClust)) < LOCLUS)
sys/lib/libsa/dosfs.c
456
if (!(fs->lsnfat = getushort(bs->bpb.bpbResSectors)))
sys/lib/libsa/dosfs.c
458
fs->lsndir = fs->lsnfat + fs->spf * bs->bpb.bpbFATs;
sys/lib/libsa/dosfs.c
460
if (!(sc = getushort(bs->bpb.bpbSectors)) &&
sys/lib/libsa/dosfs.c
461
!(sc = getulong(bs->bpb.bpbHugeSectors)))
sys/lib/libsa/dosfs.c
96
struct byte_bpb710 bpb; /* BPB */
usr.sbin/installboot/arch/i386.c
442
struct mbr_bpbFAT16 *bpb = (void *)(disk_buf.b + 3 + 8);
usr.sbin/installboot/arch/i386.c
444
u = le16toh(bpb->bpbBytesPerSec)
usr.sbin/installboot/arch/i386.c
445
* le16toh(bpb->bpbResSectors);
usr.sbin/installboot/arch/i386.c
466
bpb->bpbHiddenSecs = htole32(params->s1start);