Exemple #1
0
void
bmk_platform_cpu_block(bmk_time_t until)
{

	block_domain(until);
	minios_force_evtchn_callback();
}
Exemple #2
0
int xencons_ring_send_no_notify(struct consfront_dev *dev, const char *data, unsigned len)
{	
    int sent = 0;
	struct xencons_interface *intf;
	XENCONS_RING_IDX cons, prod;

	if (!dev)
            intf = xencons_interface();
        else
            intf = dev->ring;
        if (!intf)
            return sent;

    while (sent < len) {
	cons = intf->out_cons;
	prod = intf->out_prod;
	mb();
	BUG_ON((prod - cons) > sizeof(intf->out));

	while ((sent < len) && ((prod - cons) < sizeof(intf->out)))
		intf->out[MASK_XENCONS_IDX(prod++, intf->out)] = data[sent++];

	wmb();
	intf->out_prod = prod;

	if (sent < len) {
	    block_domain(MILLISECS(10));
	}
    }
    
    return sent;
}
Exemple #3
0
CAMLprim value
caml_block_domain(value v_until)
{
  CAMLparam1(v_until);
  block_domain((s_time_t)(Double_val(v_until) * 1000000000));
  CAMLreturn(Val_unit);
}