Lines Matching defs:kirqfd

858 static void irqfd_deactivate(struct privcmd_kernel_irqfd *kirqfd)
862 list_del_init(&kirqfd->list);
863 queue_work(irqfd_cleanup_wq, &kirqfd->shutdown);
868 struct privcmd_kernel_irqfd *kirqfd =
872 eventfd_ctx_remove_wait_queue(kirqfd->eventfd, &kirqfd->wait, &cnt);
873 eventfd_ctx_put(kirqfd->eventfd);
874 kfree(kirqfd);
877 static void irqfd_inject(struct privcmd_kernel_irqfd *kirqfd)
882 eventfd_ctx_do_read(kirqfd->eventfd, &cnt);
885 rc = HYPERVISOR_dm_op(kirqfd->dom, 1, &kirqfd->xbufs);
889 if (rc && !kirqfd->error) {
891 kirqfd->dom);
894 kirqfd->error = rc;
900 struct privcmd_kernel_irqfd *kirqfd =
905 irqfd_inject(kirqfd);
909 irqfd_deactivate(kirqfd);
919 struct privcmd_kernel_irqfd *kirqfd =
922 add_wait_queue_priority(wqh, &kirqfd->wait);
927 struct privcmd_kernel_irqfd *kirqfd, *tmp;
933 kirqfd = kzalloc(sizeof(*kirqfd) + irqfd->size, GFP_KERNEL);
934 if (!kirqfd)
936 dm_op = kirqfd + 1;
943 kirqfd->xbufs.size = irqfd->size;
944 set_xen_guest_handle(kirqfd->xbufs.h, dm_op);
945 kirqfd->dom = irqfd->dom;
946 INIT_WORK(&kirqfd->shutdown, irqfd_shutdown);
954 kirqfd->eventfd = eventfd_ctx_fileget(f.file);
955 if (IS_ERR(kirqfd->eventfd)) {
956 ret = PTR_ERR(kirqfd->eventfd);
964 init_waitqueue_func_entry(&kirqfd->wait, irqfd_wakeup);
965 init_poll_funcptr(&kirqfd->pt, irqfd_poll_func);
970 if (kirqfd->eventfd == tmp->eventfd) {
977 list_add_tail(&kirqfd->list, &irqfds_list);
984 events = vfs_poll(f.file, &kirqfd->pt);
986 irqfd_inject(kirqfd);
989 * Do not drop the file until the kirqfd is fully initialized, otherwise
996 eventfd_ctx_put(kirqfd->eventfd);
1002 kfree(kirqfd);
1008 struct privcmd_kernel_irqfd *kirqfd;
1017 list_for_each_entry(kirqfd, &irqfds_list, list) {
1018 if (kirqfd->eventfd == eventfd) {
1019 irqfd_deactivate(kirqfd);
1071 struct privcmd_kernel_irqfd *kirqfd, *tmp;
1075 list_for_each_entry_safe(kirqfd, tmp, &irqfds_list, list)
1076 irqfd_deactivate(kirqfd);