Module Name: src
Committed By: nat
Date: Thu Feb 23 23:13:27 UTC 2017
Modified Files:
src/sys/dev/pad: pad.c padvar.h
Log Message:
Update pad due to changes in audio. sc_bytes_count and BYTESTOSLEEP are
no longer required.
To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/pad/pad.c
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/pad/padvar.h
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/pad/pad.c
diff -u src/sys/dev/pad/pad.c:1.27 src/sys/dev/pad/pad.c:1.28
--- src/sys/dev/pad/pad.c:1.27 Thu Jan 26 04:10:27 2017
+++ src/sys/dev/pad/pad.c Thu Feb 23 23:13:27 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pad.c,v 1.27 2017/01/26 04:10:27 nat Exp $ */
+/* $NetBSD: pad.c,v 1.28 2017/02/23 23:13:27 nat Exp $ */
/*-
* Copyright (c) 2007 Jared D. McNeill <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pad.c,v 1.27 2017/01/26 04:10:27 nat Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pad.c,v 1.28 2017/02/23 23:13:27 nat Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -321,7 +321,6 @@ pad_open(dev_t dev, int flags, int fmt,
}
getmicrotime(&sc->sc_last);
- sc->sc_bytes_count = 0;
return 0;
}
@@ -342,8 +341,7 @@ pad_close(dev_t dev, int flags, int fmt,
}
#define PAD_BYTES_PER_SEC (44100 * sizeof(int16_t) * 2)
-#define TIMENEXTREAD (20 * 1000)
-#define BYTESTOSLEEP ((PAD_BYTES_PER_SEC / (1000000 / TIMENEXTREAD)) + PAD_BLKSIZE)
+#define TIMENEXTREAD (PAD_BLKSIZE * 1000 / PAD_BYTES_PER_SEC)
int
pad_read(dev_t dev, struct uio *uio, int flags)
@@ -371,27 +369,20 @@ pad_read(dev_t dev, struct uio *uio, int
nowusec = (now.tv_sec * 1000000) + now.tv_usec;
lastusec = (sc->sc_last.tv_sec * 1000000) +
sc->sc_last.tv_usec;
- if (lastusec + TIMENEXTREAD > nowusec &&
- sc->sc_bytes_count >= BYTESTOSLEEP) {
+ if (lastusec + TIMENEXTREAD > nowusec) {
wait_ticks = (hz * ((lastusec + TIMENEXTREAD) -
nowusec)) / 1000000;
if (wait_ticks > 0) {
kpause("padwait", TRUE, wait_ticks,
- &sc->sc_lock);
+ &sc->sc_lock);
}
-
- sc->sc_bytes_count -= BYTESTOSLEEP;
- getmicrotime(&sc->sc_last);
- } else if (sc->sc_bytes_count >= BYTESTOSLEEP) {
- sc->sc_bytes_count -= BYTESTOSLEEP;
- getmicrotime(&sc->sc_last);
- } else if (lastusec + TIMENEXTREAD <= nowusec)
- getmicrotime(&sc->sc_last);
-
+ }
+ sc->sc_last.tv_sec =
+ (lastusec + TIMENEXTREAD) / 1000000;
+ sc->sc_last.tv_usec =
+ (lastusec + TIMENEXTREAD) % 1000000;
err = pad_get_block(sc, &pb, min(uio->uio_resid, PAD_BLKSIZE));
if (!err) {
- sc->sc_bytes_count += pb.pb_len;
-
mutex_exit(&sc->sc_lock);
err = uiomove(pb.pb_ptr, pb.pb_len, uio);
continue;
Index: src/sys/dev/pad/padvar.h
diff -u src/sys/dev/pad/padvar.h:1.6 src/sys/dev/pad/padvar.h:1.7
--- src/sys/dev/pad/padvar.h:1.6 Fri Feb 26 13:17:04 2016
+++ src/sys/dev/pad/padvar.h Thu Feb 23 23:13:27 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: padvar.h,v 1.6 2016/02/26 13:17:04 nat Exp $ */
+/* $NetBSD: padvar.h,v 1.7 2017/02/23 23:13:27 nat Exp $ */
/*-
* Copyright (c) 2007 Jared D. McNeill <[email protected]>
@@ -52,7 +52,6 @@ typedef struct pad_softc {
uint8_t sc_swvol;
struct timeval sc_last;
- int sc_bytes_count;
} pad_softc_t;
#endif /* !_SYS_DEV_PAD_PADVAR_H */