Lines Matching refs:lchn

268 static void double_evtchn_lock(struct evtchn *lchn, struct evtchn *rchn)  in double_evtchn_lock()  argument
270 if ( lchn < rchn ) in double_evtchn_lock()
272 spin_lock(&lchn->lock); in double_evtchn_lock()
277 if ( lchn != rchn ) in double_evtchn_lock()
279 spin_lock(&lchn->lock); in double_evtchn_lock()
283 static void double_evtchn_unlock(struct evtchn *lchn, struct evtchn *rchn) in double_evtchn_unlock() argument
285 spin_unlock(&lchn->lock); in double_evtchn_unlock()
286 if ( lchn != rchn ) in double_evtchn_unlock()
292 struct evtchn *lchn, *rchn; in evtchn_bind_interdomain() local
319 lchn = evtchn_from_port(ld, lport); in evtchn_bind_interdomain()
328 rc = xsm_evtchn_interdomain(XSM_HOOK, ld, lchn, rd, rchn); in evtchn_bind_interdomain()
332 double_evtchn_lock(lchn, rchn); in evtchn_bind_interdomain()
334 lchn->u.interdomain.remote_dom = rd; in evtchn_bind_interdomain()
335 lchn->u.interdomain.remote_port = rport; in evtchn_bind_interdomain()
336 lchn->state = ECS_INTERDOMAIN; in evtchn_bind_interdomain()
337 evtchn_port_init(ld, lchn); in evtchn_bind_interdomain()
347 evtchn_port_set_pending(ld, lchn->notify_vcpu_id, lchn); in evtchn_bind_interdomain()
349 double_evtchn_unlock(lchn, rchn); in evtchn_bind_interdomain()
681 struct evtchn *lchn, *rchn; in evtchn_send() local
688 lchn = evtchn_from_port(ld, lport); in evtchn_send()
690 spin_lock(&lchn->lock); in evtchn_send()
693 if ( unlikely(consumer_is_xen(lchn)) ) in evtchn_send()
699 ret = xsm_evtchn_send(XSM_HOOK, ld, lchn); in evtchn_send()
703 switch ( lchn->state ) in evtchn_send()
706 rd = lchn->u.interdomain.remote_dom; in evtchn_send()
707 rport = lchn->u.interdomain.remote_port; in evtchn_send()
715 evtchn_port_set_pending(ld, lchn->notify_vcpu_id, lchn); in evtchn_send()
725 spin_unlock(&lchn->lock); in evtchn_send()
1252 struct evtchn *lchn, *rchn; in notify_via_xen_event_channel() local
1256 lchn = evtchn_from_port(ld, lport); in notify_via_xen_event_channel()
1258 spin_lock(&lchn->lock); in notify_via_xen_event_channel()
1260 if ( likely(lchn->state == ECS_INTERDOMAIN) ) in notify_via_xen_event_channel()
1262 ASSERT(consumer_is_xen(lchn)); in notify_via_xen_event_channel()
1263 rd = lchn->u.interdomain.remote_dom; in notify_via_xen_event_channel()
1264 rchn = evtchn_from_port(rd, lchn->u.interdomain.remote_port); in notify_via_xen_event_channel()
1268 spin_unlock(&lchn->lock); in notify_via_xen_event_channel()