Lines Matching defs:ggio

459 g_gate_create(struct g_gate_ctl_create *ggio)
469 if (ggio->gctl_mediasize <= 0) {
473 if (ggio->gctl_sectorsize <= 0) {
477 if (!powerof2(ggio->gctl_sectorsize)) {
481 if ((ggio->gctl_mediasize % ggio->gctl_sectorsize) != 0) {
485 if ((ggio->gctl_flags & G_GATE_FLAG_READONLY) != 0 &&
486 (ggio->gctl_flags & G_GATE_FLAG_WRITEONLY) != 0) {
490 if (ggio->gctl_unit != G_GATE_UNIT_AUTO &&
491 ggio->gctl_unit != G_GATE_NAME_GIVEN &&
492 ggio->gctl_unit < 0) {
496 if (ggio->gctl_unit == G_GATE_NAME_GIVEN &&
497 ggio->gctl_name[0] == '\0') {
503 sc->sc_flags = (ggio->gctl_flags & G_GATE_USERFLAGS);
505 strncpy(sc->sc_info, ggio->gctl_info,
506 MIN(sizeof(sc->sc_info) - 1, sizeof(ggio->gctl_info)));
513 sc->sc_queue_size = ggio->gctl_maxcount;
516 sc->sc_timeout = ggio->gctl_timeout;
520 sc->sc_unit = g_gate_getunit(ggio->gctl_unit, &error);
523 if (ggio->gctl_unit == G_GATE_NAME_GIVEN) {
525 strncpy(name, ggio->gctl_name,
526 MIN(sizeof(name) - 1, sizeof(ggio->gctl_name)));
549 if (ggio->gctl_readprov[0] == '\0') {
553 strncpy(readprov, ggio->gctl_readprov,
554 MIN(sizeof(readprov) - 1, sizeof(ggio->gctl_readprov)));
561 if ((ggio->gctl_readoffset % ggio->gctl_sectorsize) != 0) {
566 if (ggio->gctl_mediasize + ggio->gctl_readoffset >
596 sc->sc_readoffset = ggio->gctl_readoffset;
599 ggio->gctl_unit = sc->sc_unit;
603 pp->mediasize = ggio->gctl_mediasize;
604 pp->sectorsize = ggio->gctl_sectorsize;
637 g_gate_modify(struct g_gate_softc *sc, struct g_gate_ctl_modify *ggio)
644 if ((ggio->gctl_modify & GG_MODIFY_MEDIASIZE) != 0) {
645 if (ggio->gctl_mediasize <= 0) {
650 if ((ggio->gctl_mediasize % pp->sectorsize) != 0) {
654 g_resize_provider(pp, ggio->gctl_mediasize);
658 if ((ggio->gctl_modify & GG_MODIFY_INFO) != 0) {
660 strncpy(sc->sc_info, ggio->gctl_info,
661 MIN(sizeof(sc->sc_info) - 1, sizeof(ggio->gctl_info)));
665 if ((ggio->gctl_modify & GG_MODIFY_READPROV) != 0) {
676 if (ggio->gctl_readprov[0] != '\0') {
678 strncpy(readprov, ggio->gctl_readprov,
680 sizeof(ggio->gctl_readprov)));
712 if ((ggio->gctl_modify & GG_MODIFY_READOFFSET) != 0) {
718 if ((ggio->gctl_readoffset % pp->sectorsize) != 0) {
722 if (pp->mediasize + ggio->gctl_readoffset >
727 sc->sc_readoffset = ggio->gctl_readoffset;
730 if ((ggio->gctl_modify & GG_MODIFY_READPROV) != 0) {
738 #define G_GATE_CHECK_VERSION(ggio) do { \
739 if ((ggio)->gctl_version != G_GATE_VERSION) { \
741 ggio->gctl_version, G_GATE_VERSION); \
758 struct g_gate_ctl_create *ggio = (void *)addr;
760 G_GATE_CHECK_VERSION(ggio);
761 error = g_gate_create(ggio);
773 struct g_gate_ctl_modify *ggio = (void *)addr;
775 G_GATE_CHECK_VERSION(ggio);
776 sc = g_gate_hold(ggio->gctl_unit, NULL);
779 error = g_gate_modify(sc, ggio);
785 struct g_gate_ctl_destroy *ggio = (void *)addr;
787 G_GATE_CHECK_VERSION(ggio);
788 sc = g_gate_hold(ggio->gctl_unit, ggio->gctl_name);
793 error = g_gate_destroy(sc, ggio->gctl_force);
801 struct g_gate_ctl_cancel *ggio = (void *)addr;
804 G_GATE_CHECK_VERSION(ggio);
805 sc = g_gate_hold(ggio->gctl_unit, ggio->gctl_name);
811 if (ggio->gctl_seq == 0 ||
812 ggio->gctl_seq == (uintptr_t)bp->bio_driver1) {
829 if (ggio->gctl_seq != 0)
833 if (ggio->gctl_unit == G_GATE_NAME_GIVEN)
834 ggio->gctl_unit = sc->sc_unit;
841 struct g_gate_ctl_io *ggio = (void *)addr;
843 G_GATE_CHECK_VERSION(ggio);
844 sc = g_gate_hold(ggio->gctl_unit, NULL);
854 ggio->gctl_error = ECANCELED;
863 ggio->gctl_cmd = bp->bio_cmd;
865 bp->bio_length > ggio->gctl_length) {
867 ggio->gctl_length = bp->bio_length;
868 ggio->gctl_error = ENOMEM;
875 ggio->gctl_seq = (uintptr_t)bp->bio_driver1;
876 ggio->gctl_offset = bp->bio_offset;
877 ggio->gctl_length = bp->bio_length;
886 error = copyout(bp->bio_data, ggio->gctl_data,
903 struct g_gate_ctl_io *ggio = (void *)addr;
905 G_GATE_CHECK_VERSION(ggio);
906 sc = g_gate_hold(ggio->gctl_unit, NULL);
912 if (ggio->gctl_seq == (uintptr_t)bp->bio_driver1)
926 if (ggio->gctl_error == EAGAIN) {
935 bp->bio_error = ggio->gctl_error;
940 error = copyin(ggio->gctl_data,