Lines Matching defs:mc_st

70     struct capsend_mc_st *mc_st;
78 struct capsend_mc_st *mc_st = msg_st->mc_st;
83 if (mc_st->do_send) {
84 err = mc_st->send_fn(b, &mc_st->caprep, mc_st);
96 if (!--mc_st->num_queued) {
98 free(mc_st->msg_st_arr);
99 mc_st->msg_st_arr = NULL;
100 if (!mc_st->do_send || !mc_st->num_pending) {
102 free(mc_st);
108 capsend_mc_enqueue(struct capsend_mc_st *mc_st, coreid_t dest)
113 struct capsend_mc_msg_st *msg_st = &mc_st->msg_st_arr[mc_st->num_queued];
115 msg_st->mc_st = mc_st;
121 mc_st->num_queued++;
122 if (mc_st->num_pending >= 0) {
124 mc_st->num_pending++;
131 capsend_mc_init(struct capsend_mc_st *mc_st, struct capability *cap,
135 mc_st->num_queued = 0;
136 mc_st->num_pending = track_pending ? 0 : -1;
137 mc_st->do_send = true;
138 mc_st->send_fn = send_fn;
140 capability_to_caprep(cap, &mc_st->caprep);
142 mc_st->msg_st_arr = calloc(num_dests, sizeof(*mc_st->msg_st_arr));
143 if (!mc_st->msg_st_arr) {
425 struct capsend_mc_st mc_st;
432 find_descendants_send_cont(struct intermon_binding *b, intermon_caprep_t *caprep, struct capsend_mc_st *mc_st)
435 lvaddr_t lst = (lvaddr_t)mc_st;
451 struct find_descendants_mc_st *mc_st;
452 mc_st = malloc(sizeof(*mc_st));
453 if (!mc_st) {
457 mc_st->result_fn = result_fn;
458 mc_st->st = st;
459 mc_st->have_result = false;
462 (struct capsend_mc_st*)mc_st, NULL);
539 struct find_descendants_mc_st *mc_st = (struct find_descendants_mc_st*)lst;
543 if (!mc_st->have_result) {
544 mc_st->have_result = true;
545 mc_st->result_fn(SYS_ERR_OK, mc_st->st);
552 if (capsend_handle_mc_reply(&mc_st->mc_st)) {
553 if (!mc_st->have_result) {
554 mc_st->result_fn(SYS_ERR_CAP_NOT_FOUND, mc_st->st);
556 free(mc_st);
566 struct capsend_mc_st mc_st;
577 check_retypeable_send_cont(struct intermon_binding *b, intermon_caprep_t *caprep, struct capsend_mc_st *mc_st)
580 lvaddr_t lst = (lvaddr_t)mc_st;
581 struct check_retypeable_mc_st *rst = (struct check_retypeable_mc_st *)mc_st;
600 struct check_retypeable_mc_st *mc_st;
601 mc_st = malloc(sizeof(*mc_st));
602 if (!mc_st) {
607 mc_st->result_fn = result_fn;
608 mc_st->st = st;
609 mc_st->offset = offset;
610 mc_st->objsize = objsize;
611 mc_st->count = count;
612 mc_st->have_result = false;
616 (struct capsend_mc_st*)mc_st, NULL);
694 struct check_retypeable_mc_st *mc_st = (struct check_retypeable_mc_st*)lst;
698 if (!mc_st->have_result) {
701 mc_st->have_result = true;
702 mc_st->result_fn(status, mc_st->st);
706 if (capsend_handle_mc_reply(&mc_st->mc_st)) {
710 if (!mc_st->have_result) {
713 mc_st->result_fn(status, mc_st->st);
715 free(mc_st);
918 struct capsend_mc_st *mc_st)
922 return capsend_broadcast(mc_st, NULL, cap, send_fn);
928 struct capsend_mc_st *mc_st,
933 return capsend_broadcast(mc_st, dests, cap, send_fn);