• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/infiniband/core/

Lines Matching refs:uobj

85 static void init_uobj(struct ib_uobject *uobj, u64 user_handle,
88 uobj->user_handle = user_handle;
89 uobj->context = context;
90 kref_init(&uobj->ref);
91 init_rwsem(&uobj->mutex);
92 lockdep_set_class(&uobj->mutex, key);
93 uobj->live = 0;
101 static void put_uobj(struct ib_uobject *uobj)
103 kref_put(&uobj->ref, release_uobj);
106 static void put_uobj_read(struct ib_uobject *uobj)
108 up_read(&uobj->mutex);
109 put_uobj(uobj);
112 static void put_uobj_write(struct ib_uobject *uobj)
114 up_write(&uobj->mutex);
115 put_uobj(uobj);
118 static int idr_add_uobj(struct idr *idr, struct ib_uobject *uobj)
127 ret = idr_get_new(idr, uobj, &uobj->id);
136 void idr_remove_uobj(struct idr *idr, struct ib_uobject *uobj)
139 idr_remove(idr, uobj->id);
146 struct ib_uobject *uobj;
149 uobj = idr_find(idr, id);
150 if (uobj)
151 kref_get(&uobj->ref);
154 return uobj;
160 struct ib_uobject *uobj;
162 uobj = __idr_get_uobj(idr, id, context);
163 if (!uobj)
167 down_read_nested(&uobj->mutex, SINGLE_DEPTH_NESTING);
169 down_read(&uobj->mutex);
170 if (!uobj->live) {
171 put_uobj_read(uobj);
175 return uobj;
181 struct ib_uobject *uobj;
183 uobj = __idr_get_uobj(idr, id, context);
184 if (!uobj)
187 down_write(&uobj->mutex);
188 if (!uobj->live) {
189 put_uobj_write(uobj);
193 return uobj;
199 struct ib_uobject *uobj;
201 uobj = idr_read_uobj(idr, id, context, nested);
202 return uobj ? uobj->object : NULL;
468 struct ib_uobject *uobj;
482 uobj = kmalloc(sizeof *uobj, GFP_KERNEL);
483 if (!uobj)
486 init_uobj(uobj, 0, file->ucontext, &pd_lock_key);
487 down_write(&uobj->mutex);
497 pd->uobject = uobj;
500 uobj->object = pd;
501 ret = idr_add_uobj(&ib_uverbs_pd_idr, uobj);
506 resp.pd_handle = uobj->id;
515 list_add_tail(&uobj->list, &file->ucontext->pd_list);
518 uobj->live = 1;
520 up_write(&uobj->mutex);
525 idr_remove_uobj(&ib_uverbs_pd_idr, uobj);
531 put_uobj_write(uobj);
540 struct ib_uobject *uobj;
546 uobj = idr_write_uobj(&ib_uverbs_pd_idr, cmd.pd_handle, file->ucontext);
547 if (!uobj)
550 ret = ib_dealloc_pd(uobj->object);
552 uobj->live = 0;
554 put_uobj_write(uobj);
559 idr_remove_uobj(&ib_uverbs_pd_idr, uobj);
562 list_del(&uobj->list);
565 put_uobj(uobj);
577 struct ib_uobject *uobj;
603 uobj = kmalloc(sizeof *uobj, GFP_KERNEL);
604 if (!uobj)
607 init_uobj(uobj, 0, file->ucontext, &mr_lock_key);
608 down_write(&uobj->mutex);
625 mr->uobject = uobj;
629 uobj->object = mr;
630 ret = idr_add_uobj(&ib_uverbs_mr_idr, uobj);
637 resp.mr_handle = uobj->id;
648 list_add_tail(&uobj->list, &file->ucontext->mr_list);
651 uobj->live = 1;
653 up_write(&uobj->mutex);
658 idr_remove_uobj(&ib_uverbs_mr_idr, uobj);
667 put_uobj_write(uobj);
677 struct ib_uobject *uobj;
683 uobj = idr_write_uobj(&ib_uverbs_mr_idr, cmd.mr_handle, file->ucontext);
684 if (!uobj)
687 mr = uobj->object;
691 uobj->live = 0;
693 put_uobj_write(uobj);
698 idr_remove_uobj(&ib_uverbs_mr_idr, uobj);
701 list_del(&uobj->list);
704 put_uobj(uobj);
968 struct ib_uobject *uobj;
977 uobj = idr_write_uobj(&ib_uverbs_cq_idr, cmd.cq_handle, file->ucontext);
978 if (!uobj)
980 cq = uobj->object;
986 uobj->live = 0;
988 put_uobj_write(uobj);
993 idr_remove_uobj(&ib_uverbs_cq_idr, uobj);
996 list_del(&uobj->list);
1005 put_uobj(uobj);
1346 struct ib_uobject *uobj;
1356 uobj = idr_write_uobj(&ib_uverbs_qp_idr, cmd.qp_handle, file->ucontext);
1357 if (!uobj)
1359 qp = uobj->object;
1360 obj = container_of(uobj, struct ib_uqp_object, uevent.uobject);
1363 put_uobj_write(uobj);
1369 uobj->live = 0;
1371 put_uobj_write(uobj);
1376 idr_remove_uobj(&ib_uverbs_qp_idr, uobj);
1379 list_del(&uobj->list);
1386 put_uobj(uobj);
1731 struct ib_uobject *uobj;
1743 uobj = kmalloc(sizeof *uobj, GFP_KERNEL);
1744 if (!uobj)
1747 init_uobj(uobj, cmd.user_handle, file->ucontext, &ah_lock_key);
1748 down_write(&uobj->mutex);
1774 ah->uobject = uobj;
1775 uobj->object = ah;
1777 ret = idr_add_uobj(&ib_uverbs_ah_idr, uobj);
1781 resp.ah_handle = uobj->id;
1792 list_add_tail(&uobj->list, &file->ucontext->ah_list);
1795 uobj->live = 1;
1797 up_write(&uobj->mutex);
1802 idr_remove_uobj(&ib_uverbs_ah_idr, uobj);
1811 put_uobj_write(uobj);
1820 struct ib_uobject *uobj;
1826 uobj = idr_write_uobj(&ib_uverbs_ah_idr, cmd.ah_handle, file->ucontext);
1827 if (!uobj)
1829 ah = uobj->object;
1833 uobj->live = 0;
1835 put_uobj_write(uobj);
1840 idr_remove_uobj(&ib_uverbs_ah_idr, uobj);
1843 list_del(&uobj->list);
1846 put_uobj(uobj);
2112 struct ib_uobject *uobj;
2120 uobj = idr_write_uobj(&ib_uverbs_srq_idr, cmd.srq_handle, file->ucontext);
2121 if (!uobj)
2123 srq = uobj->object;
2124 obj = container_of(uobj, struct ib_uevent_object, uobject);
2128 uobj->live = 0;
2130 put_uobj_write(uobj);
2135 idr_remove_uobj(&ib_uverbs_srq_idr, uobj);
2138 list_del(&uobj->list);
2146 put_uobj(uobj);