Lines Matching refs:tu
948 struct snd_timer_user *tu = ti->callback_data; in snd_timer_dev_disconnect() local
950 tu->disconnected = true; in snd_timer_dev_disconnect()
951 wake_up(&tu->qchange_sleep); in snd_timer_dev_disconnect()
1196 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_interrupt() local
1200 spin_lock(&tu->qlock); in snd_timer_user_interrupt()
1201 if (tu->qused > 0) { in snd_timer_user_interrupt()
1202 prev = tu->qtail == 0 ? tu->queue_size - 1 : tu->qtail - 1; in snd_timer_user_interrupt()
1203 r = &tu->queue[prev]; in snd_timer_user_interrupt()
1209 if (tu->qused >= tu->queue_size) { in snd_timer_user_interrupt()
1210 tu->overrun++; in snd_timer_user_interrupt()
1212 r = &tu->queue[tu->qtail++]; in snd_timer_user_interrupt()
1213 tu->qtail %= tu->queue_size; in snd_timer_user_interrupt()
1216 tu->qused++; in snd_timer_user_interrupt()
1219 spin_unlock(&tu->qlock); in snd_timer_user_interrupt()
1220 kill_fasync(&tu->fasync, SIGIO, POLL_IN); in snd_timer_user_interrupt()
1221 wake_up(&tu->qchange_sleep); in snd_timer_user_interrupt()
1224 static void snd_timer_user_append_to_tqueue(struct snd_timer_user *tu, in snd_timer_user_append_to_tqueue() argument
1227 if (tu->qused >= tu->queue_size) { in snd_timer_user_append_to_tqueue()
1228 tu->overrun++; in snd_timer_user_append_to_tqueue()
1230 memcpy(&tu->tqueue[tu->qtail++], tread, sizeof(*tread)); in snd_timer_user_append_to_tqueue()
1231 tu->qtail %= tu->queue_size; in snd_timer_user_append_to_tqueue()
1232 tu->qused++; in snd_timer_user_append_to_tqueue()
1241 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_ccallback() local
1247 tu->tstamp = *tstamp; in snd_timer_user_ccallback()
1248 if ((tu->filter & (1 << event)) == 0 || !tu->tread) in snd_timer_user_ccallback()
1253 spin_lock_irqsave(&tu->qlock, flags); in snd_timer_user_ccallback()
1254 snd_timer_user_append_to_tqueue(tu, &r1); in snd_timer_user_ccallback()
1255 spin_unlock_irqrestore(&tu->qlock, flags); in snd_timer_user_ccallback()
1256 kill_fasync(&tu->fasync, SIGIO, POLL_IN); in snd_timer_user_ccallback()
1257 wake_up(&tu->qchange_sleep); in snd_timer_user_ccallback()
1264 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_tinterrupt() local
1270 spin_lock(&tu->qlock); in snd_timer_user_tinterrupt()
1271 if ((tu->filter & ((1 << SNDRV_TIMER_EVENT_RESOLUTION) | in snd_timer_user_tinterrupt()
1273 spin_unlock(&tu->qlock); in snd_timer_user_tinterrupt()
1276 if (tu->last_resolution != resolution || ticks > 0) { in snd_timer_user_tinterrupt()
1282 if ((tu->filter & (1 << SNDRV_TIMER_EVENT_RESOLUTION)) && in snd_timer_user_tinterrupt()
1283 tu->last_resolution != resolution) { in snd_timer_user_tinterrupt()
1287 snd_timer_user_append_to_tqueue(tu, &r1); in snd_timer_user_tinterrupt()
1288 tu->last_resolution = resolution; in snd_timer_user_tinterrupt()
1291 if ((tu->filter & (1 << SNDRV_TIMER_EVENT_TICK)) == 0) in snd_timer_user_tinterrupt()
1295 if (tu->qused > 0) { in snd_timer_user_tinterrupt()
1296 prev = tu->qtail == 0 ? tu->queue_size - 1 : tu->qtail - 1; in snd_timer_user_tinterrupt()
1297 r = &tu->tqueue[prev]; in snd_timer_user_tinterrupt()
1308 snd_timer_user_append_to_tqueue(tu, &r1); in snd_timer_user_tinterrupt()
1311 spin_unlock(&tu->qlock); in snd_timer_user_tinterrupt()
1314 kill_fasync(&tu->fasync, SIGIO, POLL_IN); in snd_timer_user_tinterrupt()
1315 wake_up(&tu->qchange_sleep); in snd_timer_user_tinterrupt()
1320 struct snd_timer_user *tu; in snd_timer_user_open() local
1327 tu = kzalloc(sizeof(*tu), GFP_KERNEL); in snd_timer_user_open()
1328 if (tu == NULL) in snd_timer_user_open()
1330 spin_lock_init(&tu->qlock); in snd_timer_user_open()
1331 init_waitqueue_head(&tu->qchange_sleep); in snd_timer_user_open()
1332 mutex_init(&tu->ioctl_lock); in snd_timer_user_open()
1333 tu->ticks = 1; in snd_timer_user_open()
1334 tu->queue_size = 128; in snd_timer_user_open()
1335 tu->queue = kmalloc(tu->queue_size * sizeof(struct snd_timer_read), in snd_timer_user_open()
1337 if (tu->queue == NULL) { in snd_timer_user_open()
1338 kfree(tu); in snd_timer_user_open()
1341 file->private_data = tu; in snd_timer_user_open()
1347 struct snd_timer_user *tu; in snd_timer_user_release() local
1350 tu = file->private_data; in snd_timer_user_release()
1352 mutex_lock(&tu->ioctl_lock); in snd_timer_user_release()
1353 if (tu->timeri) in snd_timer_user_release()
1354 snd_timer_close(tu->timeri); in snd_timer_user_release()
1355 mutex_unlock(&tu->ioctl_lock); in snd_timer_user_release()
1356 kfree(tu->queue); in snd_timer_user_release()
1357 kfree(tu->tqueue); in snd_timer_user_release()
1358 kfree(tu); in snd_timer_user_release()
1587 struct snd_timer_user *tu; in snd_timer_user_tselect() local
1592 tu = file->private_data; in snd_timer_user_tselect()
1593 if (tu->timeri) { in snd_timer_user_tselect()
1594 snd_timer_close(tu->timeri); in snd_timer_user_tselect()
1595 tu->timeri = NULL; in snd_timer_user_tselect()
1604 err = snd_timer_open(&tu->timeri, str, &tselect.id, current->pid); in snd_timer_user_tselect()
1608 kfree(tu->queue); in snd_timer_user_tselect()
1609 tu->queue = NULL; in snd_timer_user_tselect()
1610 kfree(tu->tqueue); in snd_timer_user_tselect()
1611 tu->tqueue = NULL; in snd_timer_user_tselect()
1612 if (tu->tread) { in snd_timer_user_tselect()
1613 tu->tqueue = kmalloc(tu->queue_size * sizeof(struct snd_timer_tread), in snd_timer_user_tselect()
1615 if (tu->tqueue == NULL) in snd_timer_user_tselect()
1618 tu->queue = kmalloc(tu->queue_size * sizeof(struct snd_timer_read), in snd_timer_user_tselect()
1620 if (tu->queue == NULL) in snd_timer_user_tselect()
1625 snd_timer_close(tu->timeri); in snd_timer_user_tselect()
1626 tu->timeri = NULL; in snd_timer_user_tselect()
1628 tu->timeri->flags |= SNDRV_TIMER_IFLG_FAST; in snd_timer_user_tselect()
1629 tu->timeri->callback = tu->tread in snd_timer_user_tselect()
1631 tu->timeri->ccallback = snd_timer_user_ccallback; in snd_timer_user_tselect()
1632 tu->timeri->callback_data = (void *)tu; in snd_timer_user_tselect()
1642 struct snd_timer_user *tu; in snd_timer_user_info() local
1647 tu = file->private_data; in snd_timer_user_info()
1648 if (!tu->timeri) in snd_timer_user_info()
1650 t = tu->timeri->timer; in snd_timer_user_info()
1672 struct snd_timer_user *tu; in snd_timer_user_params() local
1679 tu = file->private_data; in snd_timer_user_params()
1680 if (!tu->timeri) in snd_timer_user_params()
1682 t = tu->timeri->timer; in snd_timer_user_params()
1713 snd_timer_stop(tu->timeri); in snd_timer_user_params()
1715 tu->timeri->flags &= ~(SNDRV_TIMER_IFLG_AUTO| in snd_timer_user_params()
1719 tu->timeri->flags |= SNDRV_TIMER_IFLG_AUTO; in snd_timer_user_params()
1721 tu->timeri->flags |= SNDRV_TIMER_IFLG_EXCLUSIVE; in snd_timer_user_params()
1723 tu->timeri->flags |= SNDRV_TIMER_IFLG_EARLY_EVENT; in snd_timer_user_params()
1726 (unsigned int)tu->queue_size != params.queue_size) { in snd_timer_user_params()
1727 if (tu->tread) { in snd_timer_user_params()
1731 kfree(tu->tqueue); in snd_timer_user_params()
1732 tu->queue_size = params.queue_size; in snd_timer_user_params()
1733 tu->tqueue = ttr; in snd_timer_user_params()
1739 kfree(tu->queue); in snd_timer_user_params()
1740 tu->queue_size = params.queue_size; in snd_timer_user_params()
1741 tu->queue = tr; in snd_timer_user_params()
1745 tu->qhead = tu->qtail = tu->qused = 0; in snd_timer_user_params()
1746 if (tu->timeri->flags & SNDRV_TIMER_IFLG_EARLY_EVENT) { in snd_timer_user_params()
1747 if (tu->tread) { in snd_timer_user_params()
1753 snd_timer_user_append_to_tqueue(tu, &tread); in snd_timer_user_params()
1755 struct snd_timer_read *r = &tu->queue[0]; in snd_timer_user_params()
1758 tu->qused++; in snd_timer_user_params()
1759 tu->qtail++; in snd_timer_user_params()
1762 tu->filter = params.filter; in snd_timer_user_params()
1763 tu->ticks = params.ticks; in snd_timer_user_params()
1774 struct snd_timer_user *tu; in snd_timer_user_status() local
1777 tu = file->private_data; in snd_timer_user_status()
1778 if (!tu->timeri) in snd_timer_user_status()
1781 status.tstamp = tu->tstamp; in snd_timer_user_status()
1782 status.resolution = snd_timer_resolution(tu->timeri); in snd_timer_user_status()
1783 status.lost = tu->timeri->lost; in snd_timer_user_status()
1784 status.overrun = tu->overrun; in snd_timer_user_status()
1785 spin_lock_irq(&tu->qlock); in snd_timer_user_status()
1786 status.queue = tu->qused; in snd_timer_user_status()
1787 spin_unlock_irq(&tu->qlock); in snd_timer_user_status()
1796 struct snd_timer_user *tu; in snd_timer_user_start() local
1798 tu = file->private_data; in snd_timer_user_start()
1799 if (!tu->timeri) in snd_timer_user_start()
1801 snd_timer_stop(tu->timeri); in snd_timer_user_start()
1802 tu->timeri->lost = 0; in snd_timer_user_start()
1803 tu->last_resolution = 0; in snd_timer_user_start()
1804 return (err = snd_timer_start(tu->timeri, tu->ticks)) < 0 ? err : 0; in snd_timer_user_start()
1810 struct snd_timer_user *tu; in snd_timer_user_stop() local
1812 tu = file->private_data; in snd_timer_user_stop()
1813 if (!tu->timeri) in snd_timer_user_stop()
1815 return (err = snd_timer_stop(tu->timeri)) < 0 ? err : 0; in snd_timer_user_stop()
1821 struct snd_timer_user *tu; in snd_timer_user_continue() local
1823 tu = file->private_data; in snd_timer_user_continue()
1824 if (!tu->timeri) in snd_timer_user_continue()
1826 tu->timeri->lost = 0; in snd_timer_user_continue()
1827 return (err = snd_timer_continue(tu->timeri)) < 0 ? err : 0; in snd_timer_user_continue()
1833 struct snd_timer_user *tu; in snd_timer_user_pause() local
1835 tu = file->private_data; in snd_timer_user_pause()
1836 if (!tu->timeri) in snd_timer_user_pause()
1838 return (err = snd_timer_pause(tu->timeri)) < 0 ? err : 0; in snd_timer_user_pause()
1851 struct snd_timer_user *tu; in __snd_timer_user_ioctl() local
1855 tu = file->private_data; in __snd_timer_user_ioctl()
1865 if (tu->timeri) /* too late */ in __snd_timer_user_ioctl()
1869 tu->tread = xarg ? 1 : 0; in __snd_timer_user_ioctl()
1905 struct snd_timer_user *tu = file->private_data; in snd_timer_user_ioctl() local
1908 mutex_lock(&tu->ioctl_lock); in snd_timer_user_ioctl()
1910 mutex_unlock(&tu->ioctl_lock); in snd_timer_user_ioctl()
1916 struct snd_timer_user *tu; in snd_timer_user_fasync() local
1918 tu = file->private_data; in snd_timer_user_fasync()
1919 return fasync_helper(fd, file, on, &tu->fasync); in snd_timer_user_fasync()
1925 struct snd_timer_user *tu; in snd_timer_user_read() local
1930 tu = file->private_data; in snd_timer_user_read()
1931 unit = tu->tread ? sizeof(struct snd_timer_tread) : sizeof(struct snd_timer_read); in snd_timer_user_read()
1932 spin_lock_irq(&tu->qlock); in snd_timer_user_read()
1934 while (!tu->qused) { in snd_timer_user_read()
1944 add_wait_queue(&tu->qchange_sleep, &wait); in snd_timer_user_read()
1946 spin_unlock_irq(&tu->qlock); in snd_timer_user_read()
1948 spin_lock_irq(&tu->qlock); in snd_timer_user_read()
1950 remove_wait_queue(&tu->qchange_sleep, &wait); in snd_timer_user_read()
1952 if (tu->disconnected) { in snd_timer_user_read()
1962 qhead = tu->qhead++; in snd_timer_user_read()
1963 tu->qhead %= tu->queue_size; in snd_timer_user_read()
1964 spin_unlock_irq(&tu->qlock); in snd_timer_user_read()
1966 if (tu->tread) { in snd_timer_user_read()
1967 if (copy_to_user(buffer, &tu->tqueue[qhead], in snd_timer_user_read()
1971 if (copy_to_user(buffer, &tu->queue[qhead], in snd_timer_user_read()
1976 spin_lock_irq(&tu->qlock); in snd_timer_user_read()
1977 tu->qused--; in snd_timer_user_read()
1984 spin_unlock_irq(&tu->qlock); in snd_timer_user_read()
1991 struct snd_timer_user *tu; in snd_timer_user_poll() local
1993 tu = file->private_data; in snd_timer_user_poll()
1995 poll_wait(file, &tu->qchange_sleep, wait); in snd_timer_user_poll()
1998 if (tu->qused) in snd_timer_user_poll()
2000 if (tu->disconnected) in snd_timer_user_poll()