Lines Matching refs:nmh
740 static int o2net_handler_cmp(struct o2net_msg_handler *nmh, u32 msg_type,
743 int ret = memcmp(&nmh->nh_key, &key, sizeof(key));
746 ret = memcmp(&nmh->nh_msg_type, &msg_type, sizeof(msg_type));
757 struct o2net_msg_handler *nmh, *ret = NULL;
762 nmh = rb_entry(parent, struct o2net_msg_handler, nh_node);
763 cmp = o2net_handler_cmp(nmh, msg_type, key);
770 ret = nmh;
785 struct o2net_msg_handler *nmh;
786 nmh = container_of(kref, struct o2net_msg_handler, nh_kref);
788 kfree(nmh);
791 static void o2net_handler_put(struct o2net_msg_handler *nmh)
793 kref_put(&nmh->nh_kref, o2net_handler_kref_release);
803 struct o2net_msg_handler *nmh = NULL;
827 nmh = kzalloc(sizeof(struct o2net_msg_handler), GFP_NOFS);
828 if (nmh == NULL) {
833 nmh->nh_func = func;
834 nmh->nh_func_data = data;
835 nmh->nh_post_func = post_func;
836 nmh->nh_msg_type = msg_type;
837 nmh->nh_max_len = max_len;
838 nmh->nh_key = key;
841 kref_init(&nmh->nh_kref);
842 INIT_LIST_HEAD(&nmh->nh_unregister_item);
848 rb_link_node(&nmh->nh_node, parent, p);
849 rb_insert_color(&nmh->nh_node, &o2net_handler_tree);
850 list_add_tail(&nmh->nh_unregister_item, unreg_list);
864 kfree(nmh);
872 struct o2net_msg_handler *nmh, *n;
875 list_for_each_entry_safe(nmh, n, list, nh_unregister_item) {
877 nmh->nh_func, nmh->nh_msg_type, nmh->nh_key);
878 rb_erase(&nmh->nh_node, &o2net_handler_tree);
879 list_del_init(&nmh->nh_unregister_item);
880 kref_put(&nmh->nh_kref, o2net_handler_kref_release);
888 struct o2net_msg_handler *nmh;
891 nmh = o2net_handler_tree_lookup(msg_type, key, NULL, NULL);
892 if (nmh)
893 kref_get(&nmh->nh_kref);
896 return nmh;
1174 struct o2net_msg_handler *nmh = NULL;
1206 nmh = o2net_handler_get(be16_to_cpu(hdr->msg_type),
1208 if (!nmh) {
1217 if (be16_to_cpu(hdr->data_len) > nmh->nh_max_len)
1226 handler_status = (nmh->nh_func)(hdr, sizeof(struct o2net_msg) +
1228 nmh->nh_func_data, &ret_data);
1243 if (nmh) {
1244 BUG_ON(ret_data != NULL && nmh->nh_post_func == NULL);
1245 if (nmh->nh_post_func)
1246 (nmh->nh_post_func)(handler_status, nmh->nh_func_data,
1251 if (nmh)
1252 o2net_handler_put(nmh);