]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/ofed/include/rdma/ib_peer_mem.h
Merge ACPICA 20150515.
[FreeBSD/FreeBSD.git] / sys / ofed / include / rdma / ib_peer_mem.h
1 #if !defined(IB_PEER_MEM_H)
2 #define IB_PEER_MEM_H
3
4 #include <rdma/peer_mem.h>
5
6
7 struct invalidation_ctx;
8 struct ib_ucontext;
9
10 struct ib_peer_memory_statistics {
11         unsigned long num_alloc_mrs;
12         unsigned long num_dealloc_mrs;
13         unsigned long num_reg_pages;
14         unsigned long num_dereg_pages;
15         unsigned long num_free_callbacks;
16 };
17
18 struct ib_peer_memory_client {
19         const struct peer_memory_client *peer_mem;
20
21         struct list_head        core_peer_list;
22         struct list_head    core_ticket_list;
23         unsigned long last_ticket;
24 #ifdef __FreeBSD__
25         int holdcount;
26         int needwakeup;
27         struct cv peer_cv;
28 #else
29         struct srcu_struct peer_srcu;
30 #endif
31         struct mutex lock;
32         struct kobject *kobj;
33         struct attribute_group peer_mem_attr_group;
34         struct ib_peer_memory_statistics stats;
35 };
36
37 struct core_ticket {
38         unsigned long key;
39         void *context;
40         struct list_head   ticket_list;
41 };
42
43 struct ib_peer_memory_client *ib_get_peer_client(struct ib_ucontext *context, unsigned long addr,
44                                                   size_t size, void **peer_client_context,
45                                                   int *srcu_key);
46
47 void ib_put_peer_client(struct ib_peer_memory_client *ib_peer_client,
48                                 void *peer_client_context,
49                                 int srcu_key);
50
51 unsigned long ib_peer_insert_context(struct ib_peer_memory_client *ib_peer_client,
52                                 void *context);
53 int ib_peer_remove_context(struct ib_peer_memory_client *ib_peer_client,
54                                 unsigned long key);
55 struct core_ticket *ib_peer_search_context(struct ib_peer_memory_client *ib_peer_client,
56                                                 unsigned long key);
57 #endif
58
59