Lines Matching defs:pf

149 	struct sndstat_file *pf;
151 pf = malloc(sizeof(*pf), M_DEVBUF, M_WAITOK | M_ZERO);
153 sbuf_new(&pf->sbuf, NULL, 4096, SBUF_AUTOEXTEND);
155 pf->fflags = flags;
156 TAILQ_INIT(&pf->userdev_list);
157 sx_init(&pf->lock, "sndstat_file");
160 TAILQ_INSERT_TAIL(&sndstat_filelist, pf, entry);
163 devfs_set_cdevpriv(pf, &sndstat_close);
171 * * pf->lock held
174 sndstat_remove_all_userdevs(struct sndstat_file *pf)
179 sx_xlocked(&pf->lock), ("%s: Called without pf->lock", __func__));
180 while ((ud = TAILQ_FIRST(&pf->userdev_list)) != NULL) {
181 TAILQ_REMOVE(&pf->userdev_list, ud, link);
194 struct sndstat_file *pf = (struct sndstat_file *)sndstat_file;
197 sbuf_delete(&pf->sbuf);
198 TAILQ_REMOVE(&sndstat_filelist, pf, entry);
201 free(pf->devs_nvlbuf, M_NVLIST);
202 sx_xlock(&pf->lock);
203 sndstat_remove_all_userdevs(pf);
204 sx_xunlock(&pf->lock);
205 sx_destroy(&pf->lock);
207 free(pf, M_DEVBUF);
213 struct sndstat_file *pf;
217 err = devfs_get_cdevpriv((void **)&pf);
226 if (pf->out_offset != 0) {
230 } else if (pf->in_offset == 0) {
231 err = sndstat_prepare(pf);
237 len = sbuf_len(&pf->sbuf) - pf->in_offset;
241 err = uiomove(sbuf_data(&pf->sbuf) + pf->in_offset, len, buf);
242 pf->in_offset += len;
251 struct sndstat_file *pf;
256 err = devfs_get_cdevpriv((void **)&pf);
269 if (pf->in_offset != 0) {
274 sx_xlock(&pf->lock);
275 sndstat_remove_all_userdevs(pf);
276 sx_xunlock(&pf->lock);
289 if (sbuf_bcat(&pf->sbuf, temp, len) < 0) {
294 sbuf_finish(&pf->sbuf);
299 str = sbuf_data(&pf->sbuf);
303 ud = sndstat_line2userdev(pf, line, strlen(line));
307 sx_xlock(&pf->lock);
308 TAILQ_INSERT_TAIL(&pf->userdev_list, ud, link);
309 sx_xunlock(&pf->lock);
312 pf->out_offset = sbuf_len(&pf->sbuf);
314 pf->out_offset = 0;
316 sbuf_clear(&pf->sbuf);
676 struct sndstat_file *pf;
701 TAILQ_FOREACH(pf, &sndstat_filelist, entry) {
704 sx_xlock(&pf->lock);
706 TAILQ_FOREACH(ud, &pf->userdev_list, link) {
711 sx_xunlock(&pf->lock);
719 sx_xunlock(&pf->lock);
724 sx_xunlock(&pf->lock);
736 sndstat_refresh_devs(struct sndstat_file *pf)
738 sx_xlock(&pf->lock);
739 free(pf->devs_nvlbuf, M_NVLIST);
740 pf->devs_nvlbuf = NULL;
741 pf->devs_nbytes = 0;
742 sx_unlock(&pf->lock);
748 sndstat_get_devs(struct sndstat_file *pf, void *arg_buf, size_t *arg_nbytes)
753 sx_xlock(&pf->lock);
755 if (pf->devs_nvlbuf == NULL) {
761 sx_xunlock(&pf->lock);
769 sx_xlock(&pf->lock);
776 sx_xunlock(&pf->lock);
782 free(pf->devs_nvlbuf, M_NVLIST);
783 pf->devs_nvlbuf = nvlbuf;
784 pf->devs_nbytes = nbytes;
790 *arg_nbytes = pf->devs_nbytes;
794 if (*arg_nbytes < pf->devs_nbytes) {
800 err = copyout(pf->devs_nvlbuf, arg_buf, pf->devs_nbytes);
804 *arg_nbytes = pf->devs_nbytes;
806 free(pf->devs_nvlbuf, M_NVLIST);
807 pf->devs_nvlbuf = NULL;
808 pf->devs_nbytes = 0;
811 sx_unlock(&pf->lock);
975 sndstat_add_user_devs(struct sndstat_file *pf, void *nvlbuf, size_t nbytes)
982 if ((pf->fflags & FWRITE) == 0) {
1007 sx_xlock(&pf->lock);
1013 sx_unlock(&pf->lock);
1016 TAILQ_INSERT_TAIL(&pf->userdev_list, ud, link);
1018 sx_unlock(&pf->lock);
1026 sndstat_flush_user_devs(struct sndstat_file *pf)
1028 if ((pf->fflags & FWRITE) == 0)
1031 sx_xlock(&pf->lock);
1032 sndstat_remove_all_userdevs(pf);
1033 sx_xunlock(&pf->lock);
1043 struct sndstat_file *pf;
1050 err = devfs_get_cdevpriv((void **)&pf);
1057 err = sndstat_get_devs(pf, arg->buf, &arg->nbytes);
1063 err = sndstat_get_devs(pf, (void *)(uintptr_t)arg32->buf,
1073 err = sndstat_add_user_devs(pf, arg->buf, arg->nbytes);
1078 err = sndstat_add_user_devs(pf, (void *)(uintptr_t)arg32->buf,
1083 err = sndstat_refresh_devs(pf);
1086 err = sndstat_flush_user_devs(pf);
1096 sndstat_line2userdev(struct sndstat_file *pf, const char *line, int n)
1374 struct sndstat_file *pf;
1406 TAILQ_FOREACH(pf, &sndstat_filelist, entry) {
1409 if (pf == pf_self)
1411 sx_xlock(&pf->lock);
1412 if (TAILQ_EMPTY(&pf->userdev_list)) {
1413 sx_unlock(&pf->lock);
1418 TAILQ_FOREACH(ud, &pf->userdev_list, link) {
1426 sx_unlock(&pf->lock);