Lines Matching defs:pl
129 pal_t *pl;
137 pl = kmem_zalloc(sizeof(*pl), KM_SLEEP);
139 pl->sc_state = READ_WAITING;
140 mutex_init(&pl->lock, MUTEX_DEFAULT, IPL_NONE);
141 cv_init(&pl->sc_cv, "sc_cv");
142 selinit(&pl->psel);
144 return fd_clone(fp, fd, flag, &pollpal_fileops, pl);
150 pal_t * pl = fp->f_data;
151 KASSERT(pl != NULL);
153 if (pl->buf != NULL)
154 kmem_free(pl->buf, pl->buf_len);
156 seldestroy(&pl->psel);
157 cv_destroy(&pl->sc_cv);
158 mutex_destroy(&pl->lock);
159 kmem_free(pl, sizeof(*pl));
174 pal_t *pl = fp->f_data;
180 mutex_enter(&pl->lock);
181 cv_broadcast(&pl->sc_cv);
182 switch (pl->sc_state) {
184 pl->sc_state = WRITE_WAITING;
185 selnotify(&pl->psel, POLLOUT | POLLWRNORM, 0);
186 while (pl->sc_state == WRITE_WAITING) {
187 if (pl->buf) {
188 error = cv_wait_sig(&pl->sc_cv, &pl->lock);
194 pl->buf_len = uio->uio_iov->iov_len;
195 pl->buf = kmem_alloc(pl->buf_len, KM_SLEEP);
196 uiomove(pl->buf, pl->buf_len, uio);
207 mutex_exit(&pl->lock);
219 pal_t *pl = fp->f_data;
225 mutex_enter(&pl->lock);
226 cv_broadcast(&pl->sc_cv);
227 switch (pl->sc_state) {
233 pl->sc_state = READ_WAITING;
234 selnotify(&pl->psel, POLLIN | POLLRDNORM, 0);
235 while (pl->sc_state == READ_WAITING) {
236 if (!pl->buf) {
237 error = cv_wait_sig(&pl->sc_cv, &pl->lock);
243 uiomove(pl->buf, pl->buf_len, uio);
245 if (check_pal(pl->buf, pl->buf_len))
247 pl->buf);
250 pl->buf);
256 kmem_free(pl->buf, pl->buf_len);
257 pl->buf = NULL;
260 mutex_exit(&pl->lock);
267 pal_t *pl = fp->f_data;
272 mutex_enter(&pl->lock);
273 switch (pl->sc_state) {
280 selrecord(curlwp, &pl->psel);
289 selrecord(curlwp, &pl->psel);
294 mutex_exit(&pl->lock);