Lines Matching refs:watch
61 /* Queued watch events. */
66 } watch;
100 /* Protect watch (de)register against save/restore. */
110 /* List of pending watch callback events, and a lock to protect it. */
622 /* Register callback to watch this node. */
623 int register_xenbus_watch(struct xenbus_watch *watch)
626 char token[sizeof(watch) * 2 + 1];
629 sprintf(token, "%lX", (long)watch);
635 list_add(&watch->list, &watches);
638 err = xs_watch(watch->node, token);
643 list_del(&watch->list);
653 void unregister_xenbus_watch(struct xenbus_watch *watch)
656 char token[sizeof(watch) * 2 + 1];
659 sprintf(token, "%lX", (long)watch);
665 list_del(&watch->list);
668 err = xs_unwatch(watch->node, token);
671 "XENBUS Failed to release watch %s: %i\n",
672 watch->node, err);
681 /* Cancel pending watch events. */
684 if (msg->u.watch.handle != watch)
687 kfree(msg->u.watch.vec);
707 struct xenbus_watch *watch;
708 char token[sizeof(watch) * 2 + 1];
717 list_for_each_entry(watch, &watches, list) {
718 sprintf(token, "%lX", (long)watch);
719 xs_watch(watch->node, token);
755 msg->u.watch.handle->callback(
756 msg->u.watch.handle,
757 (const char **)msg->u.watch.vec,
758 msg->u.watch.vec_size);
759 kfree(msg->u.watch.vec);
819 msg->u.watch.vec = split(body, msg->hdr.len,
820 &msg->u.watch.vec_size);
821 if (IS_ERR(msg->u.watch.vec)) {
822 err = PTR_ERR(msg->u.watch.vec);
828 msg->u.watch.handle = find_watch(
829 msg->u.watch.vec[XS_WATCH_TOKEN]);
830 if (msg->u.watch.handle != NULL) {
836 kfree(msg->u.watch.vec);