Lines Matching refs:fdp

143 #define	KIOSP	KSTAT_IO_PTR(fdp->d_iostat)
223 struct fdisk *fdp = NULL;
228 (void) fd_getdrive(dev, &fjp, &fdp);
231 * verifying fjp and fdp and returned unit value is not used.
233 if (fjp && fdp) {
340 struct fdisk *fdp;
422 fdp = ddi_get_soft_state(fd_state_head, drive_num);
423 fjp = fdp->d_obj = ddi_get_driver_private(dip);
426 sema_init(&fdp->d_ocsem, 1, NULL, SEMA_DRIVER, NULL);
428 fjp->fj_drive = (struct fd_drive *)(fdp + 1);
438 fdp->d_media = 1<<FMT_5H | 1<<FMT_5D9 | 1<<FMT_5D8 |
440 fdp->d_deffdtype = fdp->d_curfdtype = FMT_5H;
444 fdp->d_media = 1<<FMT_3H | 1<<FMT_3I | 1<<FMT_3D;
456 fdp->d_media |= 1 << FMT_3M;
457 fdp->d_deffdtype = fdp->d_curfdtype = FMT_3H;
461 fdp->d_media = 1<<FMT_5D9 | 1<<FMT_5D8 | 1<<FMT_5D4 |
463 fdp->d_deffdtype = fdp->d_curfdtype = FMT_5D9;
467 fdp->d_media = 1<<FMT_3D;
468 fdp->d_deffdtype = fdp->d_curfdtype = FMT_3D;
474 fdp->d_media = 1<<FMT_3E | 1<<FMT_3H | 1<<FMT_3I |
476 fdp->d_deffdtype = fdp->d_curfdtype = FMT_3E;
482 *fjp->fj_chars = *defchar[fdp->d_deffdtype];
483 *fjp->fj_attr = fdtypes[fdp->d_deffdtype];
484 bcopy(fdparts[fdp->d_deffdtype], fdp->d_part,
486 fjp->fj_rotspd = fdtypes[fdp->d_deffdtype].fda_rotatespd;
502 fdp->d_iostat = kstat_create("fd", drive_num, name, "disk",
504 if (fdp->d_iostat) {
505 fdp->d_iostat->ks_lock = &fjp->fj_lock;
506 kstat_install(fdp->d_iostat);
509 fjp->fj_data = (caddr_t)fdp;
545 sema_destroy(&fdp->d_ocsem);
559 struct fdisk *fdp;
567 if (!(fdp = ddi_get_soft_state(fd_state_head, drive_num)))
572 if (fd_unit_is_open(fdp)) {
576 kstat_delete(fdp->d_iostat);
577 fdp->d_iostat = NULL;
578 fjp = (struct fcu_obj *)fdp->d_obj;
586 sema_destroy(&fdp->d_ocsem);
607 if (fdp->d_regopen[OTYP_BLK]) {
623 fd_part_is_open(struct fdisk *fdp, int part)
628 if (fdp->d_regopen[i] & (1 << part))
634 fd_unit_is_open(struct fdisk *fdp)
639 if (fdp->d_lyropen[i])
642 if (fdp->d_regopen[i])
652 struct fdisk *fdp = NULL;
661 unit = fd_getdrive(dev, &fjp, &fdp);
662 if (!fjp || !fdp)
666 pp = &fdp->d_part[part];
671 sema_p(&fdp->d_ocsem);
682 part_is_open = (fdp->d_lyropen[part] != 0);
684 part_is_open = fd_part_is_open(fdp, part);
686 if ((fdp->d_exclmask & pbit) || ((flag & FEXCL) && part_is_open)) {
689 fdp->d_exclmask, fdp->d_regopen[otyp], fdp->d_lyropen[part],
691 sema_v(&fdp->d_ocsem);
704 sema_v(&fdp->d_ocsem);
724 sema_v(&fdp->d_ocsem);
729 sema_v(&fdp->d_ocsem);
735 if ((flag & FWRITE) && (fdp->d_obj->fj_flags & FUNIT_WPROT)) {
736 sema_v(&fdp->d_ocsem);
745 fdp->d_exclmask |= pbit;
747 fdp->d_lyropen[part]++;
749 fdp->d_regopen[otyp] |= 1 << part;
751 sema_v(&fdp->d_ocsem);
767 struct fdisk *fdp;
780 fdp = (struct fdisk *)fjp->fj_data;
801 * if fdp->d_curfdtype is -1 then the current characteristics
805 nexttype = fdp->d_deffdtype;
833 fdp->d_curfdtype = (signed char)nexttype;
835 if ((1 << fdp->d_curfdtype) & fdp->d_media) {
836 *fjp->fj_chars = *defchar[fdp->d_curfdtype];
837 *fjp->fj_attr = fdtypes[fdp->d_curfdtype];
838 bcopy(fdparts[fdp->d_curfdtype], fdp->d_part,
855 defchar[fdp->d_deffdtype]->fdc_ncyl) {
867 fdp->d_curfdtype = fdp->d_deffdtype;
904 if (defchar[fdp->d_deffdtype]->fdc_ncyl == 2 * fjp->fj_chars->fdc_ncyl)
912 fdp->d_vtoc_version = label->dkl_vtoc.v_version;
913 bcopy(label->dkl_vtoc.v_volume, fdp->d_vtoc_volume, LEN_DKL_VVOL);
915 fdp->d_vtoc_asciilabel, LEN_DKL_ASCII);
920 fdp->d_part[i].p_tag = label->dkl_vtoc.v_part[i].p_tag;
921 fdp->d_part[i].p_flag = label->dkl_vtoc.v_part[i].p_flag;
922 fdp->d_part[i].p_start = label->dkl_vtoc.v_part[i].p_start;
923 fdp->d_part[i].p_size = label->dkl_vtoc.v_part[i].p_size;
925 fdp->d_vtoc_timestamp[i] = label->dkl_vtoc.timestamp[i];
935 if (fdp->d_media & (1<<FMT_3D))
937 else /* if (fdp->d_media & (1<<FMT_5D9)) */
939 bzero(fdp->d_vtoc_volume, LEN_DKL_VVOL);
940 (void) sprintf(fdp->d_vtoc_asciilabel, newlabel,
956 struct fdisk *fdp = NULL;
966 DEBUG_ASSIGN fd_getdrive(dev, &fjp, &fdp);
969 * verifying fjp and fdp and returned unit value is not used.
971 if (!fjp || !fdp)
975 sema_p(&fdp->d_ocsem);
981 if (fdp->d_lyropen[part])
982 fdp->d_lyropen[part]--;
983 part_is_closed = (fdp->d_lyropen[part] == 0);
985 fdp->d_regopen[otyp] &= ~(1<<part);
989 if (part == 2 && fdp->d_exclmask&(1<<part))
990 fdp->d_exclmask = 0;
992 fdp->d_exclmask &= ~(1<<part);
996 fdp->d_exclmask, fdp->d_regopen[otyp],
997 fdp->d_lyropen[part]));
999 if (fd_unit_is_open(fdp) == 0)
1000 fdp->d_obj->fj_flags &= ~FUNIT_CHANGED;
1002 sema_v(&fdp->d_ocsem);
1030 struct fdisk *fdp;
1037 (void) fd_getdrive(bp->b_edev, &fjp, &fdp);
1043 pp = &fdp->d_part[PARTITION(bp->b_edev)];
1088 if (fdp->d_iostat)
1090 if (fdp->d_actf)
1091 fdp->d_actl->av_forw = bp;
1093 fdp->d_actf = bp;
1094 fdp->d_actl = bp;
1121 struct fdisk *fdp = (struct fdisk *)fjp->fj_data;
1135 while ((bp = fdp->d_actf) != NULL) {
1136 fdp->d_actf = bp->av_forw;
1137 fdp->d_current = bp;
1138 if (fdp->d_iostat) {
1156 pp = &fdp->d_part[PARTITION(bp->b_edev)];
1249 if (fdp->d_iostat) {
1264 fdp->d_current = 0;
1284 struct fdisk *fdp = NULL;
1291 unit = fd_getdrive(dev, &fjp, &fdp);
1292 if (!fjp || !fdp)
1344 fdp->d_curfdtype = -1;
1366 if ((fdp->d_part[part].p_start % nblks) != 0)
1369 fdp->d_part[part].p_start / nblks;
1371 fdp->d_part[part].p_size;
1386 if ((fdp->d_part[part].p_start % nblks) != 0)
1389 fdp->d_part[part].p_start / nblks;
1390 dmp->dkl_nblk = fdp->d_part[part].p_size;
1452 fdp->d_part[part].p_start = dmp->dkl_cylno *
1454 fdp->d_part[part].p_size = dmp->dkl_nblk;
1478 fd_build_user_vtoc(fjp, fdp, &vtoc);
1544 if ((rval = fd_build_label_vtoc(fjp, fdp, &vtoc, label)) == 0) {
1565 if (ddi_copyout(&fdp->d_media_state, (void *)arg,
1584 if ((fdp->d_media & (1 << FMT_3M)) == 0) {
1601 fdp->d_curfdtype = -1;
1622 fdp->d_curfdtype = fdp->d_deffdtype;
1623 *fjp->fj_chars = *defchar[fdp->d_curfdtype];
1624 *fjp->fj_attr = fdtypes[fdp->d_curfdtype];
1625 bcopy(fdparts[fdp->d_curfdtype],
1626 fdp->d_part, sizeof (struct partition) * NDKMAP);
1709 fdp->d_curfdtype = -1;
1831 fd_build_user_vtoc(struct fcu_obj *fjp, struct fdisk *fdp, struct vtoc *vtocp)
1844 bcopy(fdp->d_vtoc_bootinfo,
1848 vtocp->v_version = fdp->d_vtoc_version;
1849 bcopy(fdp->d_vtoc_volume, vtocp->v_volume, LEN_DKL_VVOL);
1862 bcopy(fdp->d_part, vtocp->v_part, sizeof (struct partition) * NDKMAP);
1869 bcopy(fdp->d_vtoc_timestamp,
1870 vtocp->timestamp, sizeof (fdp->d_vtoc_timestamp));
1871 bcopy(fdp->d_vtoc_asciilabel, vtocp->v_asciilabel, LEN_DKL_ASCII);
1876 fd_build_label_vtoc(struct fcu_obj *fjp, struct fdisk *fdp, struct vtoc *vtocp,
1929 bcopy(vtocp->v_bootinfo, fdp->d_vtoc_bootinfo,
1931 fdp->d_vtoc_version = vtocp->v_version;
1932 bcopy(vtocp->v_volume, fdp->d_vtoc_volume, LEN_DKL_VVOL);
1937 bcopy(vtocp->v_part, fdp->d_part, sizeof (struct partition) * NDKMAP);
1938 bcopy(vtocp->timestamp, fdp->d_vtoc_timestamp,
1939 sizeof (fdp->d_vtoc_timestamp));
1940 bcopy(vtocp->v_asciilabel, fdp->d_vtoc_asciilabel, LEN_DKL_ASCII);
2159 struct fdisk *fdp = NULL;
2177 * verifying fjp and fdp and returned unit value is not used.
2179 (void) fd_getdrive(dev, &fjp, &fdp);
2180 if (!fjp || !fdp)
2184 nblocks64 = (ulong_t)fdp->d_part[PARTITION(dev)].p_size;
2195 struct fdisk *fdp;
2203 DEBUG_ASSIGN fd_getdrive((dev_t)arg, &fjp, &fdp);
2220 cv_broadcast(&fdp->d_statecv);
2262 struct fdisk *fdp;
2266 unit = fd_getdrive(dev, &fjp, &fdp);
2271 fdp->d_media_state = fd_get_media_state(fjp, unit);
2272 fdp->d_media_timeout = drv_usectohz(fd_check_media_time);
2274 while (fdp->d_media_state == state) {
2279 fdp->d_media_timeout_id = timeout(fd_media_watch,
2280 (void *)dev, fdp->d_media_timeout);
2282 if (cv_wait_sig(&fdp->d_statecv, &fjp->fj_lock) == 0) {
2283 fdp->d_media_timeout = 0;
2288 fdp->d_media_state = fd_get_media_state(fjp, unit);
2291 if (fdp->d_media_state == DKIO_INSERTED) {