Lines Matching defs:nmh

741 static int o2net_handler_cmp(struct o2net_msg_handler *nmh, u32 msg_type,
744 int ret = memcmp(&nmh->nh_key, &key, sizeof(key));
747 ret = memcmp(&nmh->nh_msg_type, &msg_type, sizeof(msg_type));
758 struct o2net_msg_handler *nmh, *ret = NULL;
763 nmh = rb_entry(parent, struct o2net_msg_handler, nh_node);
764 cmp = o2net_handler_cmp(nmh, msg_type, key);
771 ret = nmh;
786 struct o2net_msg_handler *nmh;
787 nmh = container_of(kref, struct o2net_msg_handler, nh_kref);
789 kfree(nmh);
792 static void o2net_handler_put(struct o2net_msg_handler *nmh)
794 kref_put(&nmh->nh_kref, o2net_handler_kref_release);
804 struct o2net_msg_handler *nmh = NULL;
828 nmh = kzalloc(sizeof(struct o2net_msg_handler), GFP_NOFS);
829 if (nmh == NULL) {
834 nmh->nh_func = func;
835 nmh->nh_func_data = data;
836 nmh->nh_post_func = post_func;
837 nmh->nh_msg_type = msg_type;
838 nmh->nh_max_len = max_len;
839 nmh->nh_key = key;
842 kref_init(&nmh->nh_kref);
843 INIT_LIST_HEAD(&nmh->nh_unregister_item);
849 rb_link_node(&nmh->nh_node, parent, p);
850 rb_insert_color(&nmh->nh_node, &o2net_handler_tree);
851 list_add_tail(&nmh->nh_unregister_item, unreg_list);
865 kfree(nmh);
873 struct o2net_msg_handler *nmh, *n;
876 list_for_each_entry_safe(nmh, n, list, nh_unregister_item) {
878 nmh->nh_func, nmh->nh_msg_type, nmh->nh_key);
879 rb_erase(&nmh->nh_node, &o2net_handler_tree);
880 list_del_init(&nmh->nh_unregister_item);
881 kref_put(&nmh->nh_kref, o2net_handler_kref_release);
889 struct o2net_msg_handler *nmh;
892 nmh = o2net_handler_tree_lookup(msg_type, key, NULL, NULL);
893 if (nmh)
894 kref_get(&nmh->nh_kref);
897 return nmh;
1176 struct o2net_msg_handler *nmh = NULL;
1207 nmh = o2net_handler_get(be16_to_cpu(hdr->msg_type),
1209 if (!nmh) {
1218 if (be16_to_cpu(hdr->data_len) > nmh->nh_max_len)
1227 handler_status = (nmh->nh_func)(hdr, sizeof(struct o2net_msg) +
1229 nmh->nh_func_data, &ret_data);
1244 if (nmh) {
1245 BUG_ON(ret_data != NULL && nmh->nh_post_func == NULL);
1246 if (nmh->nh_post_func)
1247 (nmh->nh_post_func)(handler_status, nmh->nh_func_data,
1252 if (nmh)
1253 o2net_handler_put(nmh);