Пример #1
0
/**
 * rsvn_add_params  -  Populate parameters for a RESERVE request
 * @resv:	the reservation to add to
 * @width:	mppwidth > 0
 * @depth:	mppdepth >= 0 (0 meaning 'use defaults')
 * @nppn:	mppnppn  >= 0 (0 meaning 'use defaults')
 * @mem_mb:	mppmem   >= 0 (0 meaning 'use defaults', else size in MB)
 * @mppnodes:	comma-separated nodelist (will be freed if not NULL)
 * @accel:	accelerator parameters (will be freed if not NULL)
 */
static int _rsvn_add_params(struct basil_reservation *resv,
			    uint32_t width, uint32_t depth, uint32_t nppn,
			    uint32_t mem_mb, char *mppnodes, uint32_t nppcu,
			    struct basil_accel_param *accel)
{
	struct basil_rsvn_param *rp = xmalloc(sizeof(*rp));

	if (rp == NULL)
		return -1;

	rp->arch  = BNA_XT;	/* "XT" is the only supported architecture */
	rp->width = width;
	rp->depth = depth;
	rp->nppn  = nppn;
	rp->nodes = mppnodes;
	rp->nppcu = nppcu;
	rp->accel = accel;

	if (mem_mb && _rsvn_add_mem_param(rp, mem_mb) < 0) {
		rsvn_free_param(rp);
		return -1;
	}

	if (resv->params)
		rp->next = resv->params;
	resv->params = rp;

	return 0;
}
Пример #2
0
void free_rsvn(struct basil_reservation *r)
{
	if (r) {
		rsvn_free_param(r->params);
		free_nodespec(r->rsvd_nodes);
		free(r);
	}
}
Пример #3
0
void rsvn_free_param(struct basil_rsvn_param *p)
{
	if (p) {
		rsvn_free_param(p->next);
		rsvn_free_param_mem(p->memory);
		rsvn_free_param_accel(p->accel);
		free_basil_label(p->labels);
		free(p->nodes);
		free(p);
	}
}