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 <jmcne...@invisible.ca> @@ -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 <jmcne...@invisible.ca> @@ -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 */