Lines Matching defs:service

51  * struct service_range - container for all bindings of a service range
52 * @lower: service range lower bound
53 * @upper: service range upper bound
54 * @tree_node: member of service range RB tree
71 * struct tipc_service - container for all published instances of a service type
72 * @type: 32 bit 'type' value for service
73 * @publ_cnt: increasing counter for publications in this service
74 * @ranges: rb tree containing all service ranges for this service
76 * @subscriptions: list of subscriptions for this service type
77 * @lock: spinlock controlling access to pertaining service ranges/publications
86 spinlock_t lock; /* Covers service range list */
102 * service_range_foreach_match - iterate over tipc service rbtree for each
104 * @sr: the service range pointer as a loop cursor
105 * @sc: the pointer to tipc service which holds the service range rbtree
118 * service_range_match_first - find first service range matching a range
119 * @n: the root node of service range rbtree for searching
122 * Return: the leftmost service range node in the rbtree that overlaps the
167 * service_range_match_next - find next service range matching a range
168 * @n: a node in service range rbtree from which the searching starts
171 * Return: the next service range node to the given node in the rbtree that
247 * tipc_service_create - create a service structure for the specified 'type'
253 struct tipc_service *service = kzalloc(sizeof(*service), GFP_ATOMIC);
255 if (!service) {
260 spin_lock_init(&service->lock);
261 service->type = type;
262 service->ranges = RB_ROOT;
263 INIT_HLIST_NODE(&service->service_list);
264 INIT_LIST_HEAD(&service->subscriptions);
265 hlist_add_head_rcu(&service->service_list, hd);
266 return service;
269 /* tipc_service_find_range - find service range matching publication parameters
363 * tipc_service_remove_publ - remove a publication from a service
396 * issue the prescribed number of events if there is any service
399 static void tipc_service_subscribe(struct tipc_service *service,
415 list_add(&sub->service_list, &service->subscriptions);
421 service_range_foreach_match(sr, service, ns.lower, ns.upper) {
448 struct tipc_service *service;
451 hlist_for_each_entry_rcu(service, service_head, service_list) {
452 if (service->type == type)
453 return service;
513 /* Remove service range item if this was its last publication */
519 /* Delete service item if this no more publications and subscriptions */
530 * tipc_nametbl_translate - perform service instance to socket translation
722 /* tipc_nametbl_publish - add service binding to name table
758 * tipc_nametbl_withdraw - withdraw a service binding
841 /* Delete service item if no more publications and subscriptions */
873 * tipc_service_delete - purge all publications for a service and delete it
899 struct tipc_service *service;
910 hlist_for_each_entry_rcu(service, service_head, service_list) {
911 tipc_service_delete(net, service);
921 struct tipc_service *service,
959 if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_TYPE, service->type))
1018 struct tipc_service *service = NULL;
1033 service = tipc_service_find(net, *last_type);
1034 if (!service)
1037 hlist_for_each_entry_rcu(service, head, service_list)
1039 if (!service)
1043 hlist_for_each_entry_from_rcu(service, service_list) {
1044 spin_lock_bh(&service->lock);
1045 err = __tipc_nl_service_range_list(msg, service,
1050 *last_type = service->type;
1051 spin_unlock_bh(&service->lock);
1054 spin_unlock_bh(&service->lock);