Lines Matching defs:mbus

21 static void mon_stop(struct mon_bus *mbus);
22 static void mon_dissolve(struct mon_bus *mbus, struct usb_bus *ubus);
34 * This must be called with mon_lock taken because of mbus->ref.
36 void mon_reader_add(struct mon_bus *mbus, struct mon_reader *r)
41 spin_lock_irqsave(&mbus->lock, flags);
42 if (mbus->nreaders == 0) {
43 if (mbus == &mon_bus0) {
50 mbus->u_bus->monitored = 1;
53 mbus->nreaders++;
54 list_add_tail(&r->r_link, &mbus->r_list);
55 spin_unlock_irqrestore(&mbus->lock, flags);
57 kref_get(&mbus->ref);
63 * This is called with mon_lock taken, so we can decrement mbus->ref.
65 void mon_reader_del(struct mon_bus *mbus, struct mon_reader *r)
69 spin_lock_irqsave(&mbus->lock, flags);
71 --mbus->nreaders;
72 if (mbus->nreaders == 0)
73 mon_stop(mbus);
74 spin_unlock_irqrestore(&mbus->lock, flags);
76 kref_put(&mbus->ref, mon_bus_drop);
81 static void mon_bus_submit(struct mon_bus *mbus, struct urb *urb)
86 spin_lock_irqsave(&mbus->lock, flags);
87 mbus->cnt_events++;
88 list_for_each_entry(r, &mbus->r_list, r_link)
90 spin_unlock_irqrestore(&mbus->lock, flags);
95 struct mon_bus *mbus;
97 mbus = ubus->mon_bus;
98 if (mbus != NULL)
99 mon_bus_submit(mbus, urb);
105 static void mon_bus_submit_error(struct mon_bus *mbus, struct urb *urb, int error)
110 spin_lock_irqsave(&mbus->lock, flags);
111 mbus->cnt_events++;
112 list_for_each_entry(r, &mbus->r_list, r_link)
114 spin_unlock_irqrestore(&mbus->lock, flags);
119 struct mon_bus *mbus;
121 mbus = ubus->mon_bus;
122 if (mbus != NULL)
123 mon_bus_submit_error(mbus, urb, error);
129 static void mon_bus_complete(struct mon_bus *mbus, struct urb *urb, int status)
134 spin_lock_irqsave(&mbus->lock, flags);
135 mbus->cnt_events++;
136 list_for_each_entry(r, &mbus->r_list, r_link)
138 spin_unlock_irqrestore(&mbus->lock, flags);
143 struct mon_bus *mbus;
145 mbus = ubus->mon_bus;
146 if (mbus != NULL)
147 mon_bus_complete(mbus, urb, status);
156 static void mon_stop(struct mon_bus *mbus)
160 if (mbus == &mon_bus0) {
161 list_for_each_entry(mbus, &mon_buses, bus_link) {
165 if (mbus->nreaders == 0 && (ubus = mbus->u_bus) != NULL)
173 if (mon_bus0.nreaders == 0 && (ubus = mbus->u_bus) != NULL) {
200 struct mon_bus *mbus = ubus->mon_bus;
203 list_del(&mbus->bus_link);
204 if (mbus->text_inited)
205 mon_text_del(mbus);
206 if (mbus->bin_inited)
207 mon_bin_del(mbus);
209 mon_dissolve(mbus, ubus);
210 kref_put(&mbus->ref, mon_bus_drop);
243 static void mon_dissolve(struct mon_bus *mbus, struct usb_bus *ubus)
252 mbus->u_bus = NULL;
262 struct mon_bus *mbus = container_of(r, struct mon_bus, ref);
263 kfree(mbus);
274 struct mon_bus *mbus;
276 mbus = kzalloc(sizeof(struct mon_bus), GFP_KERNEL);
277 if (mbus == NULL)
279 kref_init(&mbus->ref);
280 spin_lock_init(&mbus->lock);
281 INIT_LIST_HEAD(&mbus->r_list);
287 mbus->u_bus = ubus;
288 ubus->mon_bus = mbus;
290 mbus->text_inited = mon_text_add(mbus, ubus);
291 mbus->bin_inited = mon_bin_add(mbus, ubus);
294 list_add_tail(&mbus->bus_link, &mon_buses);
304 struct mon_bus *mbus = &mon_bus0;
306 kref_init(&mbus->ref);
307 spin_lock_init(&mbus->lock);
308 INIT_LIST_HEAD(&mbus->r_list);
310 mbus->text_inited = mon_text_add(mbus, NULL);
311 mbus->bin_inited = mon_bin_add(mbus, NULL);
324 struct mon_bus *mbus;
329 list_for_each_entry(mbus, &mon_buses, bus_link) {
330 if (mbus->u_bus->busnum == num) {
331 return mbus;
373 struct mon_bus *mbus;
383 mbus = list_entry(p, struct mon_bus, bus_link);
386 if (mbus->text_inited)
387 mon_text_del(mbus);
388 if (mbus->bin_inited)
389 mon_bin_del(mbus);
396 if (mbus->nreaders) {
399 mbus->nreaders, mbus->u_bus->busnum);
400 kref_get(&mbus->ref); /* Force leak */
403 mon_dissolve(mbus, mbus->u_bus);
404 kref_put(&mbus->ref, mon_bus_drop);
407 mbus = &mon_bus0;
408 if (mbus->text_inited)
409 mon_text_del(mbus);
410 if (mbus->bin_inited)
411 mon_bin_del(mbus);