Lines Matching full:watch
59 * New watch events happening in this time can be ignored by firing all watches
81 /* List of pending watch callback events, and a lock to protect it. */
85 /* Protect watch (de)register against save/restore. */
777 /* Register callback to watch this node. */
778 int register_xenbus_watch(struct xenbus_watch *watch) in register_xenbus_watch() argument
781 char token[sizeof(watch) * 2 + 1]; in register_xenbus_watch()
784 sprintf(token, "%lX", (long)watch); in register_xenbus_watch()
786 watch->nr_pending = 0; in register_xenbus_watch()
792 list_add(&watch->list, &watches); in register_xenbus_watch()
795 err = xs_watch(watch->node, token); in register_xenbus_watch()
799 list_del(&watch->list); in register_xenbus_watch()
809 void unregister_xenbus_watch(struct xenbus_watch *watch) in unregister_xenbus_watch() argument
812 char token[sizeof(watch) * 2 + 1]; in unregister_xenbus_watch()
815 sprintf(token, "%lX", (long)watch); in unregister_xenbus_watch()
821 list_del(&watch->list); in unregister_xenbus_watch()
824 err = xs_unwatch(watch->node, token); in unregister_xenbus_watch()
826 pr_warn("Failed to release watch %s: %i\n", watch->node, err); in unregister_xenbus_watch()
835 /* Cancel pending watch events. */ in unregister_xenbus_watch()
837 if (watch->nr_pending) { in unregister_xenbus_watch()
839 if (event->handle != watch) in unregister_xenbus_watch()
844 watch->nr_pending = 0; in unregister_xenbus_watch()
863 struct xenbus_watch *watch; in xs_resume() local
864 char token[sizeof(watch) * 2 + 1]; in xs_resume()
873 list_for_each_entry(watch, &watches, list) { in xs_resume()
874 sprintf(token, "%lX", (long)watch); in xs_resume()
875 xs_watch(watch->node, token); in xs_resume()