Lines Matching refs:entry
99 struct dbell_entry *entry; in vmci_dbell_get_priv_flags() local
107 entry = container_of(resource, struct dbell_entry, resource); in vmci_dbell_get_priv_flags()
108 *priv_flags = entry->priv_flags; in vmci_dbell_get_priv_flags()
145 static void dbell_index_table_add(struct dbell_entry *entry) in dbell_index_table_add() argument
150 vmci_resource_get(&entry->resource); in dbell_index_table_add()
194 entry->idx = new_notify_idx; in dbell_index_table_add()
195 bucket = VMCI_DOORBELL_HASH(entry->idx); in dbell_index_table_add()
196 hlist_add_head(&entry->node, &vmci_doorbell_it.entries[bucket]); in dbell_index_table_add()
205 static void dbell_index_table_remove(struct dbell_entry *entry) in dbell_index_table_remove() argument
209 hlist_del_init(&entry->node); in dbell_index_table_remove()
212 if (entry->idx == max_notify_idx - 1) { in dbell_index_table_remove()
225 last_notify_idx_released = entry->idx; in dbell_index_table_remove()
229 vmci_resource_put(&entry->resource); in dbell_index_table_remove()
290 struct dbell_entry *entry = container_of(work, in dbell_delayed_dispatch() local
293 entry->notify_cb(entry->client_data); in dbell_delayed_dispatch()
294 vmci_resource_put(&entry->resource); in dbell_delayed_dispatch()
302 struct dbell_entry *entry; in vmci_dbell_host_context_notify() local
319 entry = container_of(resource, struct dbell_entry, resource); in vmci_dbell_host_context_notify()
320 if (entry->run_delayed) { in vmci_dbell_host_context_notify()
321 schedule_work(&entry->work); in vmci_dbell_host_context_notify()
323 entry->notify_cb(entry->client_data); in vmci_dbell_host_context_notify()
417 struct dbell_entry *entry; in vmci_doorbell_create() local
425 entry = kmalloc(sizeof(*entry), GFP_KERNEL); in vmci_doorbell_create()
426 if (entry == NULL) { in vmci_doorbell_create()
462 entry->idx = 0; in vmci_doorbell_create()
463 INIT_HLIST_NODE(&entry->node); in vmci_doorbell_create()
464 entry->priv_flags = priv_flags; in vmci_doorbell_create()
465 INIT_WORK(&entry->work, dbell_delayed_dispatch); in vmci_doorbell_create()
466 entry->run_delayed = flags & VMCI_FLAG_DELAYED_CB; in vmci_doorbell_create()
467 entry->notify_cb = notify_cb; in vmci_doorbell_create()
468 entry->client_data = client_data; in vmci_doorbell_create()
469 atomic_set(&entry->active, 0); in vmci_doorbell_create()
471 result = vmci_resource_add(&entry->resource, in vmci_doorbell_create()
480 new_handle = vmci_resource_handle(&entry->resource); in vmci_doorbell_create()
482 dbell_index_table_add(entry); in vmci_doorbell_create()
483 result = dbell_link(new_handle, entry->idx); in vmci_doorbell_create()
487 atomic_set(&entry->active, 1); in vmci_doorbell_create()
495 dbell_index_table_remove(entry); in vmci_doorbell_create()
496 vmci_resource_remove(&entry->resource); in vmci_doorbell_create()
498 kfree(entry); in vmci_doorbell_create()
512 struct dbell_entry *entry; in vmci_doorbell_destroy() local
526 entry = container_of(resource, struct dbell_entry, resource); in vmci_doorbell_destroy()
531 dbell_index_table_remove(entry); in vmci_doorbell_destroy()
558 vmci_resource_put(&entry->resource); in vmci_doorbell_destroy()
559 vmci_resource_remove(&entry->resource); in vmci_doorbell_destroy()
561 kfree(entry); in vmci_doorbell_destroy()