Lines Matching refs:mevp

193 mevent_kq_filter(struct mevent *mevp)  in mevent_kq_filter()  argument
199 if (mevp->me_type == EVF_READ) in mevent_kq_filter()
202 if (mevp->me_type == EVF_WRITE) in mevent_kq_filter()
205 if (mevp->me_type == EVF_TIMER) in mevent_kq_filter()
208 if (mevp->me_type == EVF_SIGNAL) in mevent_kq_filter()
211 if (mevp->me_type == EVF_VNODE) in mevent_kq_filter()
218 mevent_kq_flags(struct mevent *mevp) in mevent_kq_flags() argument
222 retval = mevp->me_state; in mevent_kq_flags()
224 if (mevp->me_type == EVF_VNODE) in mevent_kq_flags()
231 mevent_kq_fflags(struct mevent *mevp) in mevent_kq_fflags() argument
237 switch (mevp->me_type) { in mevent_kq_fflags()
239 if ((mevp->me_fflags & EVFF_ATTRIB) != 0) in mevent_kq_fflags()
253 mevent_populate(struct mevent *mevp, struct kevent *kev) in mevent_populate() argument
255 if (mevp->me_type == EVF_TIMER) { in mevent_populate()
256 kev->ident = mevp->me_timid; in mevent_populate()
257 kev->data = mevp->me_msecs; in mevent_populate()
259 kev->ident = mevp->me_fd; in mevent_populate()
262 kev->filter = mevent_kq_filter(mevp); in mevent_populate()
263 kev->flags = mevent_kq_flags(mevp); in mevent_populate()
264 kev->fflags = mevent_kq_fflags(mevp); in mevent_populate()
265 kev->udata = mevp; in mevent_populate()
271 struct mevent *mevp, *tmpp; in mevent_build() local
278 LIST_FOREACH_SAFE(mevp, &change_head, me_list, tmpp) { in mevent_build()
279 if (mevp->me_closefd) { in mevent_build()
284 close(mevp->me_fd); in mevent_build()
286 assert((mevp->me_state & EV_ADD) == 0); in mevent_build()
287 mevent_populate(mevp, &kev[i]); in mevent_build()
291 mevp->me_cq = 0; in mevent_build()
292 LIST_REMOVE(mevp, me_list); in mevent_build()
294 if (mevp->me_state & EV_DELETE) { in mevent_build()
295 free(mevp); in mevent_build()
297 LIST_INSERT_HEAD(&global_head, mevp, me_list); in mevent_build()
311 struct mevent *mevp; in mevent_handle() local
315 mevp = kev[i].udata; in mevent_handle()
319 (*mevp->me_func)(mevp->me_fd, mevp->me_type, mevp->me_param); in mevent_handle()
326 mevent_clarify_state(struct mevent *mevp) in mevent_clarify_state() argument
328 const int state = mevp->me_state; in mevent_clarify_state()
332 mevp->me_state = EV_DELETE; in mevent_clarify_state()
346 mevp->me_state = EV_DISABLE; in mevent_clarify_state()
356 struct mevent *mevp = param; in mevent_poll_file_attrib() local
359 if (fstat(mevp->me_poll.mp_fd, &st) != 0) { in mevent_poll_file_attrib()
369 if (mevp->me_poll.mp_size != st.st_size) { in mevent_poll_file_attrib()
370 mevp->me_poll.mp_size = st.st_size; in mevent_poll_file_attrib()
372 (*mevp->me_poll.mp_func)(mevp->me_poll.mp_fd, EVF_VNODE, in mevent_poll_file_attrib()
373 mevp->me_poll.mp_param); in mevent_poll_file_attrib()
378 mevent_update_one_readwrite(struct mevent *mevp) in mevent_update_one_readwrite() argument
380 int portfd = mevp->me_notify.portnfy_port; in mevent_update_one_readwrite()
382 mevp->me_auto_requeue = B_FALSE; in mevent_update_one_readwrite()
384 switch (mevp->me_state) { in mevent_update_one_readwrite()
387 const int events = (mevp->me_type == EVF_READ) ? in mevent_update_one_readwrite()
390 if (port_associate(portfd, PORT_SOURCE_FD, mevp->me_fd, in mevent_update_one_readwrite()
391 events, mevp) != 0) { in mevent_update_one_readwrite()
394 mevp->me_fd, mevp, strerror(errno)); in mevent_update_one_readwrite()
405 mevp->me_fd) != 0 && errno != ENOENT) { in mevent_update_one_readwrite()
408 portfd, mevp->me_fd, mevp, strerror(errno)); in mevent_update_one_readwrite()
413 mevp->me_state); in mevent_update_one_readwrite()
419 mevent_update_one_timer(struct mevent *mevp) in mevent_update_one_timer() argument
421 mevp->me_auto_requeue = B_TRUE; in mevent_update_one_timer()
423 switch (mevp->me_state) { in mevent_update_one_timer()
428 mevp->me_sigev.sigev_notify = SIGEV_PORT; in mevent_update_one_timer()
429 mevp->me_sigev.sigev_value.sival_ptr = &mevp->me_notify; in mevent_update_one_timer()
431 if (timer_create(CLOCK_REALTIME, &mevp->me_sigev, in mevent_update_one_timer()
432 &mevp->me_timid) != 0) { in mevent_update_one_timer()
439 it.it_value.tv_sec = mevp->me_msecs / MILLISEC; in mevent_update_one_timer()
441 MSEC2NSEC(mevp->me_msecs % MILLISEC); in mevent_update_one_timer()
445 if (timer_settime(mevp->me_timid, 0, &it, NULL) != 0) { in mevent_update_one_timer()
453 if (timer_delete(mevp->me_timid) != 0) { in mevent_update_one_timer()
457 mevp->me_timid = -1; in mevent_update_one_timer()
461 mevp->me_state); in mevent_update_one_timer()
467 mevent_update_one_vnode(struct mevent *mevp) in mevent_update_one_vnode() argument
469 switch (mevp->me_state) { in mevent_update_one_vnode()
475 if ((mevp->me_fflags & EVFF_ATTRIB) != 0) in mevent_update_one_vnode()
491 if (fstat(mevp->me_fd, &st) != 0) { in mevent_update_one_vnode()
493 mevp->me_fd, strerror(errno)); in mevent_update_one_vnode()
497 mevp->me_poll.mp_fd = mevp->me_fd; in mevent_update_one_vnode()
498 mevp->me_poll.mp_size = st.st_size; in mevent_update_one_vnode()
500 mevp->me_poll.mp_func = mevp->me_func; in mevent_update_one_vnode()
501 mevp->me_poll.mp_param = mevp->me_param; in mevent_update_one_vnode()
502 mevp->me_func = mevent_poll_file_attrib; in mevent_update_one_vnode()
503 mevp->me_param = mevp; in mevent_update_one_vnode()
505 mevp->me_type = EVF_TIMER; in mevent_update_one_vnode()
506 mevp->me_timid = -1; in mevent_update_one_vnode()
507 mevp->me_msecs = mevent_file_poll_interval_ms; in mevent_update_one_vnode()
508 mevent_update_one_timer(mevp); in mevent_update_one_vnode()
520 mevp->me_state); in mevent_update_one_vnode()
526 mevent_update_one(struct mevent *mevp) in mevent_update_one() argument
528 switch (mevp->me_type) { in mevent_update_one()
531 mevent_update_one_readwrite(mevp); in mevent_update_one()
534 mevent_update_one_timer(mevp); in mevent_update_one()
537 mevent_update_one_vnode(mevp); in mevent_update_one()
542 __func__, mevp->me_type); in mevent_update_one()
548 mevent_populate(struct mevent *mevp) in mevent_populate() argument
550 mevp->me_notify.portnfy_port = mfd; in mevent_populate()
551 mevp->me_notify.portnfy_user = mevp; in mevent_populate()
557 struct mevent *mevp, *tmpp; in mevent_update_pending() local
561 LIST_FOREACH_SAFE(mevp, &change_head, me_list, tmpp) { in mevent_update_pending()
562 mevent_populate(mevp); in mevent_update_pending()
563 if (mevp->me_closefd) { in mevent_update_pending()
568 (void) close(mevp->me_fd); in mevent_update_pending()
569 mevp->me_fd = -1; in mevent_update_pending()
571 if (mevent_clarify_state(mevp)) { in mevent_update_pending()
572 mevent_update_one(mevp); in mevent_update_pending()
576 mevp->me_cq = 0; in mevent_update_pending()
577 LIST_REMOVE(mevp, me_list); in mevent_update_pending()
579 if (mevp->me_state & EV_DELETE) { in mevent_update_pending()
580 free(mevp); in mevent_update_pending()
582 LIST_INSERT_HEAD(&global_head, mevp, me_list); in mevent_update_pending()
592 struct mevent *mevp = pe->portev_user; in mevent_handle_pe() local
594 (*mevp->me_func)(mevp->me_fd, mevp->me_type, mevp->me_param); in mevent_handle_pe()
597 if (!mevp->me_cq && !mevp->me_auto_requeue) { in mevent_handle_pe()
598 mevent_update_one(mevp); in mevent_handle_pe()
612 struct mevent *lp, *mevp; in mevent_add_state() local
621 mevp = NULL; in mevent_add_state()
647 mevp = calloc(1, sizeof(struct mevent)); in mevent_add_state()
648 if (mevp == NULL) { in mevent_add_state()
653 mevp->me_msecs = tfd; in mevent_add_state()
655 mevp->me_timid = mevent_timid++; in mevent_add_state()
657 mevp->me_timid = -1; in mevent_add_state()
660 mevp->me_fd = tfd; in mevent_add_state()
661 mevp->me_type = type; in mevent_add_state()
662 mevp->me_func = func; in mevent_add_state()
663 mevp->me_param = param; in mevent_add_state()
664 mevp->me_state = state; in mevent_add_state()
665 mevp->me_fflags = fflags; in mevent_add_state()
672 mevent_populate(mevp, &kev); in mevent_add_state()
675 free(mevp); in mevent_add_state()
676 mevp = NULL; in mevent_add_state()
679 mevp->me_state &= ~EV_ADD; in mevent_add_state()
681 mevent_populate(mevp); in mevent_add_state()
682 if (mevent_clarify_state(mevp)) in mevent_add_state()
683 mevent_update_one(mevp); in mevent_add_state()
686 LIST_INSERT_HEAD(&global_head, mevp, me_list); in mevent_add_state()
691 return (mevp); in mevent_add_state()