Lines Matching defs:mi
45 struct mapping_item *mi;
52 hash_for_each_possible(ctx->ht, mi, node, hash_key) {
53 if (!memcmp(data, mi->data, ctx->data_size))
57 mi = kzalloc(sizeof(*mi) + ctx->data_size, GFP_KERNEL);
58 if (!mi)
61 memcpy(mi->data, data, ctx->data_size);
62 hash_add(ctx->ht, &mi->node, hash_key);
64 err = xa_alloc(&ctx->xarray, &mi->id, mi, XA_LIMIT(1, ctx->max_id),
69 ++mi->cnt;
70 *id = mi->id;
77 hash_del(&mi->node);
78 kfree(mi);
86 struct mapping_item *mi)
88 xa_erase(&ctx->xarray, mi->id);
89 kfree_rcu(mi, rcu);
93 struct mapping_item *mi)
96 mapping_remove_and_free(ctx, mi);
100 mi->timeout = jiffies + msecs_to_jiffies(MAPPING_GRACE_PERIOD);
103 list_add_tail(&mi->list, &ctx->pending_list);
112 struct mapping_item *mi;
116 mi = xa_load(&ctx->xarray, index);
117 if (!mi)
121 if (--mi->cnt > 0)
124 hash_del(&mi->node);
125 mapping_free_item(ctx, mi);
135 struct mapping_item *mi;
139 mi = xa_load(&ctx->xarray, index);
140 if (!mi)
143 memcpy(data, mi->data, ctx->data_size);
154 struct mapping_item *mi;
156 list_for_each_entry(mi, list, list)
157 mapping_remove_and_free(ctx, mi);
163 struct mapping_item *mi, *next;
170 list_for_each_entry_safe(mi, next, &ctx->pending_list, list) {
171 if (time_after(now, mi->timeout))
172 list_move(&mi->list, &pending_items);
174 time_before(mi->timeout, min_timeout))
175 min_timeout = mi->timeout;