• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/infiniband/core/

Lines Matching refs:uobj

84 static void init_uobj(struct ib_uobject *uobj, u64 user_handle,
87 uobj->user_handle = user_handle;
88 uobj->context = context;
89 kref_init(&uobj->ref);
90 init_rwsem(&uobj->mutex);
91 lockdep_set_class(&uobj->mutex, key);
92 uobj->live = 0;
100 static void put_uobj(struct ib_uobject *uobj)
102 kref_put(&uobj->ref, release_uobj);
105 static void put_uobj_read(struct ib_uobject *uobj)
107 up_read(&uobj->mutex);
108 put_uobj(uobj);
111 static void put_uobj_write(struct ib_uobject *uobj)
113 up_write(&uobj->mutex);
114 put_uobj(uobj);
117 static int idr_add_uobj(struct idr *idr, struct ib_uobject *uobj)
126 ret = idr_get_new(idr, uobj, &uobj->id);
135 void idr_remove_uobj(struct idr *idr, struct ib_uobject *uobj)
138 idr_remove(idr, uobj->id);
145 struct ib_uobject *uobj;
148 uobj = idr_find(idr, id);
149 if (uobj) {
150 if (uobj->context == context)
151 kref_get(&uobj->ref);
153 uobj = NULL;
157 return uobj;
163 struct ib_uobject *uobj;
165 uobj = __idr_get_uobj(idr, id, context);
166 if (!uobj)
170 down_read_nested(&uobj->mutex, SINGLE_DEPTH_NESTING);
172 down_read(&uobj->mutex);
173 if (!uobj->live) {
174 put_uobj_read(uobj);
178 return uobj;
184 struct ib_uobject *uobj;
186 uobj = __idr_get_uobj(idr, id, context);
187 if (!uobj)
190 down_write(&uobj->mutex);
191 if (!uobj->live) {
192 put_uobj_write(uobj);
196 return uobj;
202 struct ib_uobject *uobj;
204 uobj = idr_read_uobj(idr, id, context, nested);
205 return uobj ? uobj->object : NULL;
478 struct ib_uobject *uobj;
492 uobj = kmalloc(sizeof *uobj, GFP_KERNEL);
493 if (!uobj)
496 init_uobj(uobj, 0, file->ucontext, &pd_lock_key);
497 down_write(&uobj->mutex);
507 pd->uobject = uobj;
510 uobj->object = pd;
511 ret = idr_add_uobj(&ib_uverbs_pd_idr, uobj);
516 resp.pd_handle = uobj->id;
525 list_add_tail(&uobj->list, &file->ucontext->pd_list);
528 uobj->live = 1;
530 up_write(&uobj->mutex);
535 idr_remove_uobj(&ib_uverbs_pd_idr, uobj);
541 put_uobj_write(uobj);
550 struct ib_uobject *uobj;
556 uobj = idr_write_uobj(&ib_uverbs_pd_idr, cmd.pd_handle, file->ucontext);
557 if (!uobj)
560 ret = ib_dealloc_pd(uobj->object);
562 uobj->live = 0;
564 put_uobj_write(uobj);
569 idr_remove_uobj(&ib_uverbs_pd_idr, uobj);
572 list_del(&uobj->list);
575 put_uobj(uobj);
587 struct ib_uobject *uobj;
613 uobj = kmalloc(sizeof *uobj, GFP_KERNEL);
614 if (!uobj)
617 init_uobj(uobj, 0, file->ucontext, &mr_lock_key);
618 down_write(&uobj->mutex);
635 mr->uobject = uobj;
639 uobj->object = mr;
640 ret = idr_add_uobj(&ib_uverbs_mr_idr, uobj);
647 resp.mr_handle = uobj->id;
658 list_add_tail(&uobj->list, &file->ucontext->mr_list);
661 uobj->live = 1;
663 up_write(&uobj->mutex);
668 idr_remove_uobj(&ib_uverbs_mr_idr, uobj);
677 put_uobj_write(uobj);
687 struct ib_uobject *uobj;
693 uobj = idr_write_uobj(&ib_uverbs_mr_idr, cmd.mr_handle, file->ucontext);
694 if (!uobj)
697 mr = uobj->object;
701 uobj->live = 0;
703 put_uobj_write(uobj);
708 idr_remove_uobj(&ib_uverbs_mr_idr, uobj);
711 list_del(&uobj->list);
714 put_uobj(uobj);
999 struct ib_uobject *uobj;
1008 uobj = idr_write_uobj(&ib_uverbs_cq_idr, cmd.cq_handle, file->ucontext);
1009 if (!uobj)
1011 cq = uobj->object;
1017 uobj->live = 0;
1019 put_uobj_write(uobj);
1024 idr_remove_uobj(&ib_uverbs_cq_idr, uobj);
1027 list_del(&uobj->list);
1036 put_uobj(uobj);
1378 struct ib_uobject *uobj;
1388 uobj = idr_write_uobj(&ib_uverbs_qp_idr, cmd.qp_handle, file->ucontext);
1389 if (!uobj)
1391 qp = uobj->object;
1392 obj = container_of(uobj, struct ib_uqp_object, uevent.uobject);
1395 put_uobj_write(uobj);
1401 uobj->live = 0;
1403 put_uobj_write(uobj);
1408 idr_remove_uobj(&ib_uverbs_qp_idr, uobj);
1411 list_del(&uobj->list);
1418 put_uobj(uobj);
1772 struct ib_uobject *uobj;
1784 uobj = kmalloc(sizeof *uobj, GFP_KERNEL);
1785 if (!uobj)
1788 init_uobj(uobj, cmd.user_handle, file->ucontext, &ah_lock_key);
1789 down_write(&uobj->mutex);
1815 ah->uobject = uobj;
1816 uobj->object = ah;
1818 ret = idr_add_uobj(&ib_uverbs_ah_idr, uobj);
1822 resp.ah_handle = uobj->id;
1833 list_add_tail(&uobj->list, &file->ucontext->ah_list);
1836 uobj->live = 1;
1838 up_write(&uobj->mutex);
1843 idr_remove_uobj(&ib_uverbs_ah_idr, uobj);
1852 put_uobj_write(uobj);
1861 struct ib_uobject *uobj;
1867 uobj = idr_write_uobj(&ib_uverbs_ah_idr, cmd.ah_handle, file->ucontext);
1868 if (!uobj)
1870 ah = uobj->object;
1874 uobj->live = 0;
1876 put_uobj_write(uobj);
1881 idr_remove_uobj(&ib_uverbs_ah_idr, uobj);
1884 list_del(&uobj->list);
1887 put_uobj(uobj);
2153 struct ib_uobject *uobj;
2161 uobj = idr_write_uobj(&ib_uverbs_srq_idr, cmd.srq_handle, file->ucontext);
2162 if (!uobj)
2164 srq = uobj->object;
2165 obj = container_of(uobj, struct ib_uevent_object, uobject);
2169 uobj->live = 0;
2171 put_uobj_write(uobj);
2176 idr_remove_uobj(&ib_uverbs_srq_idr, uobj);
2179 list_del(&uobj->list);
2187 put_uobj(uobj);