Lines Matching refs:fdp
146 #define KIOSP KSTAT_IO_PTR(fdp->d_iostat)
226 struct fdisk *fdp = NULL; in fd_getinfo() local
231 (void) fd_getdrive(dev, &fjp, &fdp); in fd_getinfo()
236 if (fjp && fdp) { in fd_getinfo()
344 struct fdisk *fdp; in fd_attach() local
427 fdp = ddi_get_soft_state(fd_state_head, drive_num); in fd_attach()
428 fjp = fdp->d_obj = ddi_get_driver_private(dip); in fd_attach()
431 sema_init(&fdp->d_ocsem, 1, NULL, SEMA_DRIVER, NULL); in fd_attach()
433 fjp->fj_drive = (struct fd_drive *)(fdp + 1); in fd_attach()
443 fdp->d_media = 1<<FMT_5H | 1<<FMT_5D9 | 1<<FMT_5D8 | in fd_attach()
445 fdp->d_deffdtype = fdp->d_curfdtype = FMT_5H; in fd_attach()
449 fdp->d_media = 1<<FMT_3H | 1<<FMT_3I | 1<<FMT_3D; in fd_attach()
461 fdp->d_media |= 1 << FMT_3M; in fd_attach()
462 fdp->d_deffdtype = fdp->d_curfdtype = FMT_3H; in fd_attach()
466 fdp->d_media = 1<<FMT_5D9 | 1<<FMT_5D8 | 1<<FMT_5D4 | in fd_attach()
468 fdp->d_deffdtype = fdp->d_curfdtype = FMT_5D9; in fd_attach()
472 fdp->d_media = 1<<FMT_3D; in fd_attach()
473 fdp->d_deffdtype = fdp->d_curfdtype = FMT_3D; in fd_attach()
479 fdp->d_media = 1<<FMT_3E | 1<<FMT_3H | 1<<FMT_3I | in fd_attach()
481 fdp->d_deffdtype = fdp->d_curfdtype = FMT_3E; in fd_attach()
487 *fjp->fj_chars = *defchar[fdp->d_deffdtype]; in fd_attach()
488 *fjp->fj_attr = fdtypes[fdp->d_deffdtype]; in fd_attach()
489 bcopy(fdparts[fdp->d_deffdtype], fdp->d_part, in fd_attach()
491 fjp->fj_rotspd = fdtypes[fdp->d_deffdtype].fda_rotatespd; in fd_attach()
507 fdp->d_iostat = kstat_create("fd", drive_num, name, "disk", in fd_attach()
509 if (fdp->d_iostat) { in fd_attach()
510 fdp->d_iostat->ks_lock = &fjp->fj_lock; in fd_attach()
511 kstat_install(fdp->d_iostat); in fd_attach()
514 fjp->fj_data = (caddr_t)fdp; in fd_attach()
550 sema_destroy(&fdp->d_ocsem); in fd_attach()
564 struct fdisk *fdp; in fd_detach() local
572 if (!(fdp = ddi_get_soft_state(fd_state_head, drive_num))) in fd_detach()
577 if (fd_unit_is_open(fdp)) { in fd_detach()
581 kstat_delete(fdp->d_iostat); in fd_detach()
582 fdp->d_iostat = NULL; in fd_detach()
583 fjp = (struct fcu_obj *)fdp->d_obj; in fd_detach()
591 sema_destroy(&fdp->d_ocsem); in fd_detach()
612 if (fdp->d_regopen[OTYP_BLK]) { in fd_detach()
628 fd_part_is_open(struct fdisk *fdp, int part) in fd_part_is_open() argument
633 if (fdp->d_regopen[i] & (1 << part)) in fd_part_is_open()
639 fd_unit_is_open(struct fdisk *fdp) in fd_unit_is_open() argument
644 if (fdp->d_lyropen[i]) in fd_unit_is_open()
647 if (fdp->d_regopen[i]) in fd_unit_is_open()
657 struct fdisk *fdp = NULL; in fd_open() local
666 unit = fd_getdrive(dev, &fjp, &fdp); in fd_open()
667 if (!fjp || !fdp) in fd_open()
671 pp = &fdp->d_part[part]; in fd_open()
676 sema_p(&fdp->d_ocsem); in fd_open()
687 part_is_open = (fdp->d_lyropen[part] != 0); in fd_open()
689 part_is_open = fd_part_is_open(fdp, part); in fd_open()
691 if ((fdp->d_exclmask & pbit) || ((flag & FEXCL) && part_is_open)) { in fd_open()
694 fdp->d_exclmask, fdp->d_regopen[otyp], fdp->d_lyropen[part], in fd_open()
696 sema_v(&fdp->d_ocsem); in fd_open()
709 sema_v(&fdp->d_ocsem); in fd_open()
729 sema_v(&fdp->d_ocsem); in fd_open()
734 sema_v(&fdp->d_ocsem); in fd_open()
740 if ((flag & FWRITE) && (fdp->d_obj->fj_flags & FUNIT_WPROT)) { in fd_open()
741 sema_v(&fdp->d_ocsem); in fd_open()
750 fdp->d_exclmask |= pbit; in fd_open()
752 fdp->d_lyropen[part]++; in fd_open()
754 fdp->d_regopen[otyp] |= 1 << part; in fd_open()
756 sema_v(&fdp->d_ocsem); in fd_open()
772 struct fdisk *fdp; in fdgetlabel() local
785 fdp = (struct fdisk *)fjp->fj_data; in fdgetlabel()
810 nexttype = fdp->d_deffdtype; in fdgetlabel()
839 fdp->d_curfdtype = (signed char)nexttype; in fdgetlabel()
841 if ((1 << fdp->d_curfdtype) & fdp->d_media) { in fdgetlabel()
842 *fjp->fj_chars = *defchar[fdp->d_curfdtype]; in fdgetlabel()
843 *fjp->fj_attr = fdtypes[fdp->d_curfdtype]; in fdgetlabel()
844 bcopy(fdparts[fdp->d_curfdtype], fdp->d_part, in fdgetlabel()
861 defchar[fdp->d_deffdtype]->fdc_ncyl) { in fdgetlabel()
873 fdp->d_curfdtype = fdp->d_deffdtype; in fdgetlabel()
910 if (defchar[fdp->d_deffdtype]->fdc_ncyl == 2 * fjp->fj_chars->fdc_ncyl) in fdgetlabel()
918 fdp->d_vtoc_version = label->dkl_vtoc.v_version; in fdgetlabel()
919 bcopy(label->dkl_vtoc.v_volume, fdp->d_vtoc_volume, LEN_DKL_VVOL); in fdgetlabel()
921 fdp->d_vtoc_asciilabel, LEN_DKL_ASCII); in fdgetlabel()
926 fdp->d_part[i].p_tag = label->dkl_vtoc.v_part[i].p_tag; in fdgetlabel()
927 fdp->d_part[i].p_flag = label->dkl_vtoc.v_part[i].p_flag; in fdgetlabel()
928 fdp->d_part[i].p_start = label->dkl_vtoc.v_part[i].p_start; in fdgetlabel()
929 fdp->d_part[i].p_size = label->dkl_vtoc.v_part[i].p_size; in fdgetlabel()
931 fdp->d_vtoc_timestamp[i] = label->dkl_vtoc.timestamp[i]; in fdgetlabel()
941 if (fdp->d_media & (1<<FMT_3D)) in fdgetlabel()
945 bzero(fdp->d_vtoc_volume, LEN_DKL_VVOL); in fdgetlabel()
946 (void) sprintf(fdp->d_vtoc_asciilabel, newlabel, in fdgetlabel()
962 struct fdisk *fdp = NULL; in fd_close() local
972 DEBUG_ASSIGN fd_getdrive(dev, &fjp, &fdp); in fd_close()
977 if (!fjp || !fdp) in fd_close()
981 sema_p(&fdp->d_ocsem); in fd_close()
987 if (fdp->d_lyropen[part]) in fd_close()
988 fdp->d_lyropen[part]--; in fd_close()
989 part_is_closed = (fdp->d_lyropen[part] == 0); in fd_close()
991 fdp->d_regopen[otyp] &= ~(1<<part); in fd_close()
995 if (part == 2 && fdp->d_exclmask&(1<<part)) in fd_close()
996 fdp->d_exclmask = 0; in fd_close()
998 fdp->d_exclmask &= ~(1<<part); in fd_close()
1002 fdp->d_exclmask, fdp->d_regopen[otyp], in fd_close()
1003 fdp->d_lyropen[part])); in fd_close()
1005 if (fd_unit_is_open(fdp) == 0) in fd_close()
1006 fdp->d_obj->fj_flags &= ~FUNIT_CHANGED; in fd_close()
1008 sema_v(&fdp->d_ocsem); in fd_close()
1036 struct fdisk *fdp; in fd_strategy() local
1043 (void) fd_getdrive(bp->b_edev, &fjp, &fdp); in fd_strategy()
1049 pp = &fdp->d_part[PARTITION(bp->b_edev)]; in fd_strategy()
1094 if (fdp->d_iostat) in fd_strategy()
1096 if (fdp->d_actf) in fd_strategy()
1097 fdp->d_actl->av_forw = bp; in fd_strategy()
1099 fdp->d_actf = bp; in fd_strategy()
1100 fdp->d_actl = bp; in fd_strategy()
1127 struct fdisk *fdp = (struct fdisk *)fjp->fj_data; in fdstart() local
1141 while ((bp = fdp->d_actf) != NULL) { in fdstart()
1142 fdp->d_actf = bp->av_forw; in fdstart()
1143 fdp->d_current = bp; in fdstart()
1144 if (fdp->d_iostat) { in fdstart()
1162 pp = &fdp->d_part[PARTITION(bp->b_edev)]; in fdstart()
1255 if (fdp->d_iostat) { in fdstart()
1270 fdp->d_current = 0; in fdstart()
1290 struct fdisk *fdp = NULL; in fd_ioctl() local
1297 unit = fd_getdrive(dev, &fjp, &fdp); in fd_ioctl()
1298 if (!fjp || !fdp) in fd_ioctl()
1350 fdp->d_curfdtype = -1; in fd_ioctl()
1372 if ((fdp->d_part[part].p_start % nblks) != 0) in fd_ioctl()
1375 fdp->d_part[part].p_start / nblks; in fd_ioctl()
1377 fdp->d_part[part].p_size; in fd_ioctl()
1392 if ((fdp->d_part[part].p_start % nblks) != 0) in fd_ioctl()
1395 fdp->d_part[part].p_start / nblks; in fd_ioctl()
1396 dmp->dkl_nblk = fdp->d_part[part].p_size; in fd_ioctl()
1458 fdp->d_part[part].p_start = dmp->dkl_cylno * in fd_ioctl()
1460 fdp->d_part[part].p_size = dmp->dkl_nblk; in fd_ioctl()
1484 fd_build_user_vtoc(fjp, fdp, &vtoc); in fd_ioctl()
1550 if ((rval = fd_build_label_vtoc(fjp, fdp, &vtoc, label)) == 0) { in fd_ioctl()
1571 if (ddi_copyout(&fdp->d_media_state, (void *)arg, in fd_ioctl()
1590 if ((fdp->d_media & (1 << FMT_3M)) == 0) { in fd_ioctl()
1607 fdp->d_curfdtype = -1; in fd_ioctl()
1628 fdp->d_curfdtype = fdp->d_deffdtype; in fd_ioctl()
1629 *fjp->fj_chars = *defchar[fdp->d_curfdtype]; in fd_ioctl()
1630 *fjp->fj_attr = fdtypes[fdp->d_curfdtype]; in fd_ioctl()
1631 bcopy(fdparts[fdp->d_curfdtype], in fd_ioctl()
1632 fdp->d_part, sizeof (struct partition) * NDKMAP); in fd_ioctl()
1715 fdp->d_curfdtype = -1; in fd_ioctl()
1837 fd_build_user_vtoc(struct fcu_obj *fjp, struct fdisk *fdp, struct vtoc *vtocp) in fd_build_user_vtoc() argument
1850 bcopy(fdp->d_vtoc_bootinfo, in fd_build_user_vtoc()
1854 vtocp->v_version = fdp->d_vtoc_version; in fd_build_user_vtoc()
1855 bcopy(fdp->d_vtoc_volume, vtocp->v_volume, LEN_DKL_VVOL); in fd_build_user_vtoc()
1868 bcopy(fdp->d_part, vtocp->v_part, sizeof (struct partition) * NDKMAP); in fd_build_user_vtoc()
1875 bcopy(fdp->d_vtoc_timestamp, in fd_build_user_vtoc()
1876 vtocp->timestamp, sizeof (fdp->d_vtoc_timestamp)); in fd_build_user_vtoc()
1877 bcopy(fdp->d_vtoc_asciilabel, vtocp->v_asciilabel, LEN_DKL_ASCII); in fd_build_user_vtoc()
1882 fd_build_label_vtoc(struct fcu_obj *fjp, struct fdisk *fdp, struct vtoc *vtocp, in fd_build_label_vtoc() argument
1935 bcopy(vtocp->v_bootinfo, fdp->d_vtoc_bootinfo, in fd_build_label_vtoc()
1937 fdp->d_vtoc_version = vtocp->v_version; in fd_build_label_vtoc()
1938 bcopy(vtocp->v_volume, fdp->d_vtoc_volume, LEN_DKL_VVOL); in fd_build_label_vtoc()
1943 bcopy(vtocp->v_part, fdp->d_part, sizeof (struct partition) * NDKMAP); in fd_build_label_vtoc()
1944 bcopy(vtocp->timestamp, fdp->d_vtoc_timestamp, in fd_build_label_vtoc()
1945 sizeof (fdp->d_vtoc_timestamp)); in fd_build_label_vtoc()
1946 bcopy(vtocp->v_asciilabel, fdp->d_vtoc_asciilabel, LEN_DKL_ASCII); in fd_build_label_vtoc()
2165 struct fdisk *fdp = NULL; in fd_prop_op() local
2185 (void) fd_getdrive(dev, &fjp, &fdp); in fd_prop_op()
2186 if (!fjp || !fdp) in fd_prop_op()
2190 nblocks64 = (ulong_t)fdp->d_part[PARTITION(dev)].p_size; in fd_prop_op()
2201 struct fdisk *fdp; in fd_media_watch() local
2209 DEBUG_ASSIGN fd_getdrive((dev_t)arg, &fjp, &fdp); in fd_media_watch()
2226 cv_broadcast(&fdp->d_statecv); in fd_media_watch()
2268 struct fdisk *fdp; in fd_check_media() local
2272 unit = fd_getdrive(dev, &fjp, &fdp); in fd_check_media()
2277 fdp->d_media_state = fd_get_media_state(fjp, unit); in fd_check_media()
2278 fdp->d_media_timeout = drv_usectohz(fd_check_media_time); in fd_check_media()
2280 while (fdp->d_media_state == state) { in fd_check_media()
2285 fdp->d_media_timeout_id = timeout(fd_media_watch, in fd_check_media()
2286 (void *)dev, fdp->d_media_timeout); in fd_check_media()
2288 if (cv_wait_sig(&fdp->d_statecv, &fjp->fj_lock) == 0) { in fd_check_media()
2289 fdp->d_media_timeout = 0; in fd_check_media()
2294 fdp->d_media_state = fd_get_media_state(fjp, unit); in fd_check_media()
2297 if (fdp->d_media_state == DKIO_INSERTED) { in fd_check_media()