Lines Matching refs:tu

1264 	struct snd_timer_user *tu = timeri->callback_data;  in snd_timer_user_interrupt()  local
1268 spin_lock(&tu->qlock); in snd_timer_user_interrupt()
1269 if (tu->qused > 0) { in snd_timer_user_interrupt()
1270 prev = tu->qtail == 0 ? tu->queue_size - 1 : tu->qtail - 1; in snd_timer_user_interrupt()
1271 r = &tu->queue[prev]; in snd_timer_user_interrupt()
1277 if (tu->qused >= tu->queue_size) { in snd_timer_user_interrupt()
1278 tu->overrun++; in snd_timer_user_interrupt()
1280 r = &tu->queue[tu->qtail++]; in snd_timer_user_interrupt()
1281 tu->qtail %= tu->queue_size; in snd_timer_user_interrupt()
1284 tu->qused++; in snd_timer_user_interrupt()
1287 spin_unlock(&tu->qlock); in snd_timer_user_interrupt()
1288 kill_fasync(&tu->fasync, SIGIO, POLL_IN); in snd_timer_user_interrupt()
1289 wake_up(&tu->qchange_sleep); in snd_timer_user_interrupt()
1292 static void snd_timer_user_append_to_tqueue(struct snd_timer_user *tu, in snd_timer_user_append_to_tqueue() argument
1295 if (tu->qused >= tu->queue_size) { in snd_timer_user_append_to_tqueue()
1296 tu->overrun++; in snd_timer_user_append_to_tqueue()
1298 memcpy(&tu->tqueue[tu->qtail++], tread, sizeof(*tread)); in snd_timer_user_append_to_tqueue()
1299 tu->qtail %= tu->queue_size; in snd_timer_user_append_to_tqueue()
1300 tu->qused++; in snd_timer_user_append_to_tqueue()
1309 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_ccallback() local
1315 tu->tstamp = *tstamp; in snd_timer_user_ccallback()
1316 if ((tu->filter & (1 << event)) == 0 || !tu->tread) in snd_timer_user_ccallback()
1322 spin_lock_irqsave(&tu->qlock, flags); in snd_timer_user_ccallback()
1323 snd_timer_user_append_to_tqueue(tu, &r1); in snd_timer_user_ccallback()
1324 spin_unlock_irqrestore(&tu->qlock, flags); in snd_timer_user_ccallback()
1325 kill_fasync(&tu->fasync, SIGIO, POLL_IN); in snd_timer_user_ccallback()
1326 wake_up(&tu->qchange_sleep); in snd_timer_user_ccallback()
1331 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_disconnect() local
1333 tu->disconnected = true; in snd_timer_user_disconnect()
1334 wake_up(&tu->qchange_sleep); in snd_timer_user_disconnect()
1341 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_tinterrupt() local
1348 spin_lock(&tu->qlock); in snd_timer_user_tinterrupt()
1349 if ((tu->filter & ((1 << SNDRV_TIMER_EVENT_RESOLUTION) | in snd_timer_user_tinterrupt()
1351 spin_unlock(&tu->qlock); in snd_timer_user_tinterrupt()
1354 if (tu->last_resolution != resolution || ticks > 0) { in snd_timer_user_tinterrupt()
1360 if ((tu->filter & (1 << SNDRV_TIMER_EVENT_RESOLUTION)) && in snd_timer_user_tinterrupt()
1361 tu->last_resolution != resolution) { in snd_timer_user_tinterrupt()
1365 snd_timer_user_append_to_tqueue(tu, &r1); in snd_timer_user_tinterrupt()
1366 tu->last_resolution = resolution; in snd_timer_user_tinterrupt()
1369 if ((tu->filter & (1 << SNDRV_TIMER_EVENT_TICK)) == 0) in snd_timer_user_tinterrupt()
1373 if (tu->qused > 0) { in snd_timer_user_tinterrupt()
1374 prev = tu->qtail == 0 ? tu->queue_size - 1 : tu->qtail - 1; in snd_timer_user_tinterrupt()
1375 r = &tu->tqueue[prev]; in snd_timer_user_tinterrupt()
1386 snd_timer_user_append_to_tqueue(tu, &r1); in snd_timer_user_tinterrupt()
1389 spin_unlock(&tu->qlock); in snd_timer_user_tinterrupt()
1392 kill_fasync(&tu->fasync, SIGIO, POLL_IN); in snd_timer_user_tinterrupt()
1393 wake_up(&tu->qchange_sleep); in snd_timer_user_tinterrupt()
1396 static int realloc_user_queue(struct snd_timer_user *tu, int size) in realloc_user_queue() argument
1401 if (tu->tread) { in realloc_user_queue()
1411 spin_lock_irq(&tu->qlock); in realloc_user_queue()
1412 kfree(tu->queue); in realloc_user_queue()
1413 kfree(tu->tqueue); in realloc_user_queue()
1414 tu->queue_size = size; in realloc_user_queue()
1415 tu->queue = queue; in realloc_user_queue()
1416 tu->tqueue = tqueue; in realloc_user_queue()
1417 tu->qhead = tu->qtail = tu->qused = 0; in realloc_user_queue()
1418 spin_unlock_irq(&tu->qlock); in realloc_user_queue()
1425 struct snd_timer_user *tu; in snd_timer_user_open() local
1432 tu = kzalloc(sizeof(*tu), GFP_KERNEL); in snd_timer_user_open()
1433 if (tu == NULL) in snd_timer_user_open()
1435 spin_lock_init(&tu->qlock); in snd_timer_user_open()
1436 init_waitqueue_head(&tu->qchange_sleep); in snd_timer_user_open()
1437 mutex_init(&tu->ioctl_lock); in snd_timer_user_open()
1438 tu->ticks = 1; in snd_timer_user_open()
1439 if (realloc_user_queue(tu, 128) < 0) { in snd_timer_user_open()
1440 kfree(tu); in snd_timer_user_open()
1443 file->private_data = tu; in snd_timer_user_open()
1449 struct snd_timer_user *tu; in snd_timer_user_release() local
1452 tu = file->private_data; in snd_timer_user_release()
1454 mutex_lock(&tu->ioctl_lock); in snd_timer_user_release()
1455 if (tu->timeri) in snd_timer_user_release()
1456 snd_timer_close(tu->timeri); in snd_timer_user_release()
1457 mutex_unlock(&tu->ioctl_lock); in snd_timer_user_release()
1458 kfree(tu->queue); in snd_timer_user_release()
1459 kfree(tu->tqueue); in snd_timer_user_release()
1460 kfree(tu); in snd_timer_user_release()
1689 struct snd_timer_user *tu; in snd_timer_user_tselect() local
1694 tu = file->private_data; in snd_timer_user_tselect()
1695 if (tu->timeri) { in snd_timer_user_tselect()
1696 snd_timer_close(tu->timeri); in snd_timer_user_tselect()
1697 tu->timeri = NULL; in snd_timer_user_tselect()
1706 err = snd_timer_open(&tu->timeri, str, &tselect.id, current->pid); in snd_timer_user_tselect()
1710 tu->timeri->flags |= SNDRV_TIMER_IFLG_FAST; in snd_timer_user_tselect()
1711 tu->timeri->callback = tu->tread in snd_timer_user_tselect()
1713 tu->timeri->ccallback = snd_timer_user_ccallback; in snd_timer_user_tselect()
1714 tu->timeri->callback_data = (void *)tu; in snd_timer_user_tselect()
1715 tu->timeri->disconnect = snd_timer_user_disconnect; in snd_timer_user_tselect()
1724 struct snd_timer_user *tu; in snd_timer_user_info() local
1729 tu = file->private_data; in snd_timer_user_info()
1730 if (!tu->timeri) in snd_timer_user_info()
1732 t = tu->timeri->timer; in snd_timer_user_info()
1754 struct snd_timer_user *tu; in snd_timer_user_params() local
1759 tu = file->private_data; in snd_timer_user_params()
1760 if (!tu->timeri) in snd_timer_user_params()
1762 t = tu->timeri->timer; in snd_timer_user_params()
1776 resolution = snd_timer_resolution(tu->timeri); in snd_timer_user_params()
1805 snd_timer_stop(tu->timeri); in snd_timer_user_params()
1807 tu->timeri->flags &= ~(SNDRV_TIMER_IFLG_AUTO| in snd_timer_user_params()
1811 tu->timeri->flags |= SNDRV_TIMER_IFLG_AUTO; in snd_timer_user_params()
1813 tu->timeri->flags |= SNDRV_TIMER_IFLG_EXCLUSIVE; in snd_timer_user_params()
1815 tu->timeri->flags |= SNDRV_TIMER_IFLG_EARLY_EVENT; in snd_timer_user_params()
1818 (unsigned int)tu->queue_size != params.queue_size) { in snd_timer_user_params()
1819 err = realloc_user_queue(tu, params.queue_size); in snd_timer_user_params()
1823 spin_lock_irq(&tu->qlock); in snd_timer_user_params()
1824 tu->qhead = tu->qtail = tu->qused = 0; in snd_timer_user_params()
1825 if (tu->timeri->flags & SNDRV_TIMER_IFLG_EARLY_EVENT) { in snd_timer_user_params()
1826 if (tu->tread) { in snd_timer_user_params()
1833 snd_timer_user_append_to_tqueue(tu, &tread); in snd_timer_user_params()
1835 struct snd_timer_read *r = &tu->queue[0]; in snd_timer_user_params()
1838 tu->qused++; in snd_timer_user_params()
1839 tu->qtail++; in snd_timer_user_params()
1842 tu->filter = params.filter; in snd_timer_user_params()
1843 tu->ticks = params.ticks; in snd_timer_user_params()
1844 spin_unlock_irq(&tu->qlock); in snd_timer_user_params()
1855 struct snd_timer_user *tu; in snd_timer_user_status() local
1858 tu = file->private_data; in snd_timer_user_status()
1859 if (!tu->timeri) in snd_timer_user_status()
1862 status.tstamp = tu->tstamp; in snd_timer_user_status()
1863 status.resolution = snd_timer_resolution(tu->timeri); in snd_timer_user_status()
1864 status.lost = tu->timeri->lost; in snd_timer_user_status()
1865 status.overrun = tu->overrun; in snd_timer_user_status()
1866 spin_lock_irq(&tu->qlock); in snd_timer_user_status()
1867 status.queue = tu->qused; in snd_timer_user_status()
1868 spin_unlock_irq(&tu->qlock); in snd_timer_user_status()
1877 struct snd_timer_user *tu; in snd_timer_user_start() local
1879 tu = file->private_data; in snd_timer_user_start()
1880 if (!tu->timeri) in snd_timer_user_start()
1882 snd_timer_stop(tu->timeri); in snd_timer_user_start()
1883 tu->timeri->lost = 0; in snd_timer_user_start()
1884 tu->last_resolution = 0; in snd_timer_user_start()
1885 return (err = snd_timer_start(tu->timeri, tu->ticks)) < 0 ? err : 0; in snd_timer_user_start()
1891 struct snd_timer_user *tu; in snd_timer_user_stop() local
1893 tu = file->private_data; in snd_timer_user_stop()
1894 if (!tu->timeri) in snd_timer_user_stop()
1896 return (err = snd_timer_stop(tu->timeri)) < 0 ? err : 0; in snd_timer_user_stop()
1902 struct snd_timer_user *tu; in snd_timer_user_continue() local
1904 tu = file->private_data; in snd_timer_user_continue()
1905 if (!tu->timeri) in snd_timer_user_continue()
1908 if (!(tu->timeri->flags & SNDRV_TIMER_IFLG_PAUSED)) in snd_timer_user_continue()
1910 tu->timeri->lost = 0; in snd_timer_user_continue()
1911 return (err = snd_timer_continue(tu->timeri)) < 0 ? err : 0; in snd_timer_user_continue()
1917 struct snd_timer_user *tu; in snd_timer_user_pause() local
1919 tu = file->private_data; in snd_timer_user_pause()
1920 if (!tu->timeri) in snd_timer_user_pause()
1922 return (err = snd_timer_pause(tu->timeri)) < 0 ? err : 0; in snd_timer_user_pause()
1935 struct snd_timer_user *tu; in __snd_timer_user_ioctl() local
1939 tu = file->private_data; in __snd_timer_user_ioctl()
1949 if (tu->timeri) /* too late */ in __snd_timer_user_ioctl()
1953 old_tread = tu->tread; in __snd_timer_user_ioctl()
1954 tu->tread = xarg ? 1 : 0; in __snd_timer_user_ioctl()
1955 if (tu->tread != old_tread && in __snd_timer_user_ioctl()
1956 realloc_user_queue(tu, tu->queue_size) < 0) { in __snd_timer_user_ioctl()
1957 tu->tread = old_tread; in __snd_timer_user_ioctl()
1995 struct snd_timer_user *tu = file->private_data; in snd_timer_user_ioctl() local
1998 mutex_lock(&tu->ioctl_lock); in snd_timer_user_ioctl()
2000 mutex_unlock(&tu->ioctl_lock); in snd_timer_user_ioctl()
2006 struct snd_timer_user *tu; in snd_timer_user_fasync() local
2008 tu = file->private_data; in snd_timer_user_fasync()
2009 return fasync_helper(fd, file, on, &tu->fasync); in snd_timer_user_fasync()
2015 struct snd_timer_user *tu; in snd_timer_user_read() local
2020 tu = file->private_data; in snd_timer_user_read()
2021 unit = tu->tread ? sizeof(struct snd_timer_tread) : sizeof(struct snd_timer_read); in snd_timer_user_read()
2022 mutex_lock(&tu->ioctl_lock); in snd_timer_user_read()
2023 spin_lock_irq(&tu->qlock); in snd_timer_user_read()
2025 while (!tu->qused) { in snd_timer_user_read()
2035 add_wait_queue(&tu->qchange_sleep, &wait); in snd_timer_user_read()
2037 spin_unlock_irq(&tu->qlock); in snd_timer_user_read()
2038 mutex_unlock(&tu->ioctl_lock); in snd_timer_user_read()
2040 mutex_lock(&tu->ioctl_lock); in snd_timer_user_read()
2041 spin_lock_irq(&tu->qlock); in snd_timer_user_read()
2043 remove_wait_queue(&tu->qchange_sleep, &wait); in snd_timer_user_read()
2045 if (tu->disconnected) { in snd_timer_user_read()
2055 qhead = tu->qhead++; in snd_timer_user_read()
2056 tu->qhead %= tu->queue_size; in snd_timer_user_read()
2057 tu->qused--; in snd_timer_user_read()
2058 spin_unlock_irq(&tu->qlock); in snd_timer_user_read()
2060 if (tu->tread) { in snd_timer_user_read()
2061 if (copy_to_user(buffer, &tu->tqueue[qhead], in snd_timer_user_read()
2065 if (copy_to_user(buffer, &tu->queue[qhead], in snd_timer_user_read()
2070 spin_lock_irq(&tu->qlock); in snd_timer_user_read()
2077 spin_unlock_irq(&tu->qlock); in snd_timer_user_read()
2078 mutex_unlock(&tu->ioctl_lock); in snd_timer_user_read()
2085 struct snd_timer_user *tu; in snd_timer_user_poll() local
2087 tu = file->private_data; in snd_timer_user_poll()
2089 poll_wait(file, &tu->qchange_sleep, wait); in snd_timer_user_poll()
2092 spin_lock_irq(&tu->qlock); in snd_timer_user_poll()
2093 if (tu->qused) in snd_timer_user_poll()
2095 if (tu->disconnected) in snd_timer_user_poll()
2097 spin_unlock_irq(&tu->qlock); in snd_timer_user_poll()