Lines Matching refs:fdp

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