myxce/src/lib/misc.c

101 lines
1.8 KiB
C

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include "controller.capnp.h"
#include "misc.h"
#include "utils.h"
#include "xce/types.h"
int reset_resval(xce_val_t* val)
{
if (val == NULL) {
return -EINVAL;
}
switch (val->which) {
case Value_u_ivalue32:
val->u.ivalue32 = 0;
break;
case Value_u_uvalue32:
val->u.uvalue32 = 0;
break;
case Value_u_ivalue64:
val->u.ivalue64 = 0;
break;
case Value_u_uvalue64:
val->u.uvalue64 = 0;
break;
case Value_u_fvalue:
val->u.fvalue = 0.0;
break;
case Value_u_bvalue:
val->u.bvalue = 0;
break;
case Value_u_svalue:
val->u.svalue = NULL;
break;
default:
break;
}
return 1;
}
void free_res_account(xce_res_account_t* acct)
{
if (acct == NULL) {
return;
}
FREEUP(acct->resname);
FREEUP(acct);
}
void free_host_account(xce_host_account_t* acct)
{
if (acct == NULL) {
return;
}
if (acct->accounts != NULL) {
int i;
for (i = 0; i < acct->naccount; i++) {
free_res_account(acct->accounts[i]);
}
FREEUP(acct->accounts);
}
FREEUP(acct);
}
void free_job_account(xce_job_account_t* acct)
{
if (acct == NULL) {
return;
}
if (acct->accounts != NULL) {
int i;
for (i = 0; i < acct->nhosts; i++) {
free_host_account(acct->accounts[i]);
}
FREEUP(acct->accounts);
}
if (acct->accounts_shared != NULL) {
int i;
for (i = 0; i < acct->nres_shared; i++) {
free_res_account(acct->accounts_shared[i]);
}
FREEUP(acct->accounts_shared);
}
FREEUP(acct);
}