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));