• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /barrelfish-2018-10-04/lib/barrelfish/

Lines Matching refs:lc

27  * \param lc  Storage for channel state
29 void lmp_chan_init(struct lmp_chan *lc)
31 assert(lc != NULL);
32 lc->connstate = LMP_DISCONNECTED;
33 waitset_chanstate_init(&lc->send_waitset, CHANTYPE_LMP_OUT);
34 lc->endpoint = NULL;
36 lc->prev = lc->next = NULL;
46 struct lmp_chan *lc = (void *)conn_id;
48 assert(lc->connstate == LMP_BIND_WAIT);
51 lc->connstate = LMP_CONNECTED;
52 lc->remote_cap = endpoint;
56 assert(lc->bind_continuation.handler != NULL);
57 lc->bind_continuation.handler(lc->bind_continuation.st, success, lc);
62 struct lmp_chan *lc = arg;
63 struct monitor_binding *b = lc->monitor_binding;
67 err = b->tx_vtbl.bind_lmp_client_request(b, NOP_CONT, lc->iref,
68 (uintptr_t)lc, lc->buflen_words,
69 lc->local_cap);
74 err = b->register_send(b, b->waitset, MKCONT(send_bind_cont,lc));
78 lc->bind_continuation.handler(lc->bind_continuation.st,
86 * \param lc Storage for channel state
92 errval_t lmp_chan_bind(struct lmp_chan *lc, struct lmp_bind_continuation cont,
98 lmp_chan_init(lc);
101 lc->iref = iref;
102 lc->buflen_words = buflen_words;
103 lc->bind_continuation = cont;
106 err = slot_alloc(&lc->local_cap);
108 waitset_chanstate_destroy(&lc->send_waitset);
113 err = lmp_endpoint_create_in_slot(buflen_words, lc->local_cap,
114 &lc->endpoint);
116 slot_free(lc->local_cap);
117 waitset_chanstate_destroy(&lc->send_waitset);
122 lc->connstate = LMP_BIND_WAIT;
123 struct monitor_binding *mb = lc->monitor_binding = get_monitor_binding();
125 MKCLOSURE(send_bind_cont, lc));
131 void lmp_chan_destroy(struct lmp_chan *lc)
133 lc->connstate = LMP_DISCONNECTED;
134 cap_destroy(lc->local_cap);
136 if (lc->endpoint != NULL) {
137 lmp_endpoint_free(lc->endpoint);
141 if (waitset_chan_is_registered(&lc->send_waitset)) {
142 assert(lc->prev != NULL && lc->next != NULL);
145 if (lc->next == lc->prev) {
146 assert_disabled(lc->next == lc);
147 assert_disabled(disp->lmp_send_events_list == lc);
150 lc->prev->next = lc->next;
151 lc->next->prev = lc->prev;
156 lc->next = lc->prev = NULL;
160 waitset_chanstate_destroy(&lc->send_waitset);
165 struct lmp_chan *lc;
190 if (st->lc != NULL) {
191 lmp_chan_destroy(st->lc);
206 struct lmp_chan *lc = NULL;
211 err = e->lmp_connect_callback(e->connect_cb_st, buflen_words, endpoint, &lc);
217 assert(lc != NULL);
225 st->lc = lc;
229 st->args.conn_id = (uintptr_t)lc;
230 st->args.ep = lc->local_cap;
243 * \param lc Storage for channel state
247 errval_t lmp_chan_accept(struct lmp_chan *lc,
252 lmp_chan_init(lc);
253 lc->remote_cap = endpoint;
256 err = slot_alloc(&lc->local_cap);
262 err = lmp_endpoint_create_in_slot(buflen_words, lc->local_cap,
263 &lc->endpoint);
265 slot_free(lc->local_cap);
270 lc->connstate = LMP_CONNECTED;
281 * \param lc LMP channel
285 errval_t lmp_chan_register_send(struct lmp_chan *lc, struct waitset *ws,
288 assert(lc != NULL);
291 errval_t err = waitset_chan_register(ws, &lc->send_waitset, closure);
297 assert(lc->next == NULL && lc->prev == NULL);
301 dp->lmp_send_events_list = lc;
302 lc->next = lc->prev = lc;
304 lc->prev = dp->lmp_send_events_list->prev;
305 lc->next = dp->lmp_send_events_list;
306 lc->prev->next = lc;
307 lc->next->prev = lc;
317 * \param lc LMP channel
319 errval_t lmp_chan_deregister_send(struct lmp_chan *lc)
321 assert(lc != NULL);
322 errval_t err = waitset_chan_deregister(&lc->send_waitset);
328 assert(lc->next != NULL && lc->prev != NULL);
331 if (lc->next == lc->prev) {
332 assert_disabled(dp->lmp_send_events_list == lc);
335 lc->prev->next = lc->next;
336 lc->next->prev = lc->prev;
337 if (dp->lmp_send_events_list == lc) {
338 dp->lmp_send_events_list = lc->next;
342 lc->prev = lc->next = NULL;
352 * \param lc LMP channel
355 void lmp_chan_migrate_send(struct lmp_chan *lc, struct waitset *ws)
357 assert(lc != NULL);
358 waitset_chan_migrate(&lc->send_waitset, ws);
367 * \param lc LMP channel
369 errval_t lmp_chan_alloc_recv_slot(struct lmp_chan *lc)
378 lmp_chan_set_recv_slot(lc, slot);
394 struct lmp_chan *lc, *first = dp->lmp_send_events_list, *next;
397 for (lc = first; lc != NULL; lc = next) {
398 next = lc->next;
400 err = waitset_chan_trigger_disabled(&lc->send_waitset, handle);
403 lc->next = lc->prev = NULL;