/* input: han - handle to identify resources output: cb - pointer to first CBR dsr - pointer to first DSR  */
void gru_lock_async_resource(unsigned long han, void **cb, void **dsr)
/* input: han - handle to identify resources output: cb - pointer to first CBR dsr - pointer to first DSR  */
void gru_lock_async_resource(unsigned long han, void **cb, void **dsr)
{
	struct gru_blade_state *bs = ASYNC_HAN_TO_BS(han);
	int blade_id = ASYNC_HAN_TO_BID(han);
	int ncpus;
	gru_lock_kernel_context(blade_id);
	ncpus = uv_blade_nr_possible_cpus(blade_id);
	if (cb)
		*cb = bs->kernel_cb + ncpus * GRU_HANDLE_STRIDE;
	if (dsr)
		*dsr = bs->kernel_dsr + ncpus * GRU_NUM_KERNEL_DSR_BYTES;
}