Module Name: src Committed By: gavan Date: Sun Nov 20 22:27:39 UTC 2011
Modified Files: src/sys/dev/usb: ugen.c Log Message: Implement timeouts when blocking the calling process with tsleep. Fixes PR kern/33452 To generate a diff of this commit: cvs rdiff -u -r1.111 -r1.112 src/sys/dev/usb/ugen.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/ugen.c diff -u src/sys/dev/usb/ugen.c:1.111 src/sys/dev/usb/ugen.c:1.112 --- src/sys/dev/usb/ugen.c:1.111 Wed Nov 3 22:34:23 2010 +++ src/sys/dev/usb/ugen.c Sun Nov 20 22:27:39 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ugen.c,v 1.111 2010/11/03 22:34:23 dyoung Exp $ */ +/* $NetBSD: ugen.c,v 1.112 2011/11/20 22:27:39 gavan Exp $ */ /* * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.111 2010/11/03 22:34:23 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.112 2011/11/20 22:27:39 gavan Exp $"); #include "opt_compat_netbsd.h" @@ -619,7 +619,7 @@ ugen_do_read(struct ugen_softc *sc, int } sce->state |= UGEN_ASLP; DPRINTFN(5, ("ugenread: sleep on %p\n", sce)); - error = tsleep(sce, PZERO | PCATCH, "ugenri", 0); + error = tsleep(sce, PZERO | PCATCH, "ugenri", mstohz(sce->timeout)); DPRINTFN(5, ("ugenread: woke, error=%d\n", error)); if (sc->sc_dying) error = EIO; @@ -664,7 +664,7 @@ ugen_do_read(struct ugen_softc *sc, int ("ugenread: sleep on %p\n", sce)); error = tsleep(sce, PZERO | PCATCH, - "ugenrb", 0); + "ugenrb", mstohz(sce->timeout)); DPRINTFN(5, ("ugenread: woke, error=%d\n", error)); @@ -755,7 +755,7 @@ ugen_do_read(struct ugen_softc *sc, int } sce->state |= UGEN_ASLP; DPRINTFN(5, ("ugenread: sleep on %p\n", sce)); - error = tsleep(sce, PZERO | PCATCH, "ugenri", 0); + error = tsleep(sce, PZERO | PCATCH, "ugenri", mstohz(sce->timeout)); DPRINTFN(5, ("ugenread: woke, error=%d\n", error)); if (sc->sc_dying) error = EIO; @@ -862,7 +862,7 @@ ugen_do_write(struct ugen_softc *sc, int ("ugenwrite: sleep on %p\n", sce)); error = tsleep(sce, PZERO | PCATCH, - "ugenwb", 0); + "ugenwb", mstohz(sce->timeout)); DPRINTFN(5, ("ugenwrite: woke, error=%d\n", error));