fwdev.c (111615) | fwdev.c (111748) |
---|---|
1/* 2 * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 29 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 30 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 * POSSIBILITY OF SUCH DAMAGE. 32 * | 1/* 2 * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 29 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 30 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 * POSSIBILITY OF SUCH DAMAGE. 32 * |
33 * $FreeBSD: head/sys/dev/firewire/fwdev.c 111615 2003-02-27 12:51:24Z simokawa $ | 33 * $FreeBSD: head/sys/dev/firewire/fwdev.c 111748 2003-03-02 16:54:40Z des $ |
34 * 35 */ 36 37#include <sys/param.h> 38#include <sys/systm.h> 39#include <sys/types.h> 40#include <sys/mbuf.h> 41 --- 206 unchanged lines hidden (view full) --- 248 slept = 1; 249 if ((ir->flag & FWXFERQ_RUNNING) == 0 250 && (ir->flag & FWXFERQ_PACKET)) { 251 err = sc->fc->irx_enable(sc->fc, sub); 252 if (err) 253 return err; 254 } 255 ir->flag |= FWXFERQ_WAKEUP; | 34 * 35 */ 36 37#include <sys/param.h> 38#include <sys/systm.h> 39#include <sys/types.h> 40#include <sys/mbuf.h> 41 --- 206 unchanged lines hidden (view full) --- 248 slept = 1; 249 if ((ir->flag & FWXFERQ_RUNNING) == 0 250 && (ir->flag & FWXFERQ_PACKET)) { 251 err = sc->fc->irx_enable(sc->fc, sub); 252 if (err) 253 return err; 254 } 255 ir->flag |= FWXFERQ_WAKEUP; |
256 err = tsleep((caddr_t)ir, FWPRI, "fw_read", hz); | 256 err = tsleep(ir, FWPRI, "fw_read", hz); |
257 ir->flag &= ~FWXFERQ_WAKEUP; 258 if (err == 0) 259 goto readloop; 260 } else if (slept == 1) 261 err = EIO; 262 return err; 263 } else if(xfer != NULL) { 264 /* per packet mode */ --- 105 unchanged lines hidden (view full) --- 370 STAILQ_REMOVE_HEAD(&it->stfree, link); 371 splx(s); 372 it->queued = 0; 373 } else if (slept == 0) { 374 slept = 1; 375 err = sc->fc->itx_enable(sc->fc, sub); 376 if (err) 377 return err; | 257 ir->flag &= ~FWXFERQ_WAKEUP; 258 if (err == 0) 259 goto readloop; 260 } else if (slept == 1) 261 err = EIO; 262 return err; 263 } else if(xfer != NULL) { 264 /* per packet mode */ --- 105 unchanged lines hidden (view full) --- 370 STAILQ_REMOVE_HEAD(&it->stfree, link); 371 splx(s); 372 it->queued = 0; 373 } else if (slept == 0) { 374 slept = 1; 375 err = sc->fc->itx_enable(sc->fc, sub); 376 if (err) 377 return err; |
378 err = tsleep((caddr_t)it, FWPRI, | 378 err = tsleep(it, FWPRI, |
379 "fw_write", hz); 380 if (err) 381 return err; 382 goto isoloop; 383 } else { 384 err = EIO; 385 return err; 386 } --- 28 unchanged lines hidden (view full) --- 415 splx(s); 416 it->dvptr = 0; 417 }else if(slept == 0){ 418 slept = 1; 419 err = sc->fc->itx_enable(sc->fc, sub); 420 if(err){ 421 return err; 422 } | 379 "fw_write", hz); 380 if (err) 381 return err; 382 goto isoloop; 383 } else { 384 err = EIO; 385 return err; 386 } --- 28 unchanged lines hidden (view full) --- 415 splx(s); 416 it->dvptr = 0; 417 }else if(slept == 0){ 418 slept = 1; 419 err = sc->fc->itx_enable(sc->fc, sub); 420 if(err){ 421 return err; 422 } |
423 err = tsleep((caddr_t)it, FWPRI, "fw_write", hz); | 423 err = tsleep(it, FWPRI, "fw_write", hz); |
424 if(err){ 425 return err; 426 } 427 goto dvloop; 428 }else{ 429 err = EIO; 430 return err; 431 } --- 66 unchanged lines hidden (view full) --- 498 fw_xfer_free( xfer); 499 return err; 500 } 501#if 0 502 fw_asystart(xfer); 503#else 504 fw_asyreq(fc, -1, xfer); 505#endif | 424 if(err){ 425 return err; 426 } 427 goto dvloop; 428 }else{ 429 err = EIO; 430 return err; 431 } --- 66 unchanged lines hidden (view full) --- 498 fw_xfer_free( xfer); 499 return err; 500 } 501#if 0 502 fw_asystart(xfer); 503#else 504 fw_asyreq(fc, -1, xfer); 505#endif |
506 err = tsleep((caddr_t)xfer, FWPRI, "fw_write", hz); | 506 err = tsleep(xfer, FWPRI, "fw_write", hz); |
507 if(xfer->resp == EBUSY) 508 return EBUSY; 509 fw_xfer_free( xfer); 510 return err; 511 } 512 return EINVAL; 513} 514 --- 257 unchanged lines hidden (view full) --- 772 xfer->send.off = 0; 773 bcopy(fp, xfer->send.buf, xfer->send.len); 774 xfer->act.hand = fw_asy_callback; 775 err = fw_asyreq(sc->fc, sub, xfer); 776 if(err){ 777 fw_xfer_free( xfer); 778 return err; 779 } | 507 if(xfer->resp == EBUSY) 508 return EBUSY; 509 fw_xfer_free( xfer); 510 return err; 511 } 512 return EINVAL; 513} 514 --- 257 unchanged lines hidden (view full) --- 772 xfer->send.off = 0; 773 bcopy(fp, xfer->send.buf, xfer->send.len); 774 xfer->act.hand = fw_asy_callback; 775 err = fw_asyreq(sc->fc, sub, xfer); 776 if(err){ 777 fw_xfer_free( xfer); 778 return err; 779 } |
780 err = tsleep((caddr_t)xfer, FWPRI, "asyreq", hz); | 780 err = tsleep(xfer, FWPRI, "asyreq", hz); |
781 if(err == 0){ 782 if(asyreq->req.len >= xfer->recv.len){ 783 asyreq->req.len = xfer->recv.len; 784 }else{ 785 err = EINVAL; 786 } 787 bcopy(xfer->recv.buf + xfer->recv.off, fp, asyreq->req.len); 788 } --- 155 unchanged lines hidden --- | 781 if(err == 0){ 782 if(asyreq->req.len >= xfer->recv.len){ 783 asyreq->req.len = xfer->recv.len; 784 }else{ 785 err = EINVAL; 786 } 787 bcopy(xfer->recv.buf + xfer->recv.off, fp, asyreq->req.len); 788 } --- 155 unchanged lines hidden --- |