Date:2011-09-26 21:55:04 (12 years 6 months ago)
Author:Werner Almesberger
Commit:24a9b85ce0ea6fca3d2d8fee650e6b0bf7f7c4b9
Message:m1/perf/sched.c: return -1 if malloc fails

Files: m1/perf/sched.c (5 diffs)

Change Details

m1/perf/sched.c
312312}
313313
314314
315static void init_registers(struct fpvm_fragment *frag,
315static int init_registers(struct fpvm_fragment *frag,
316316    unsigned int *registers)
317317{
318318    int i;
...... 
321321
322322    sc->regs =
323323        calloc(frag->nbindings-frag->next_sur, sizeof(struct vm_reg));
324    if (!sc->regs)
325        return -1;
324326
325327    for (i = 0; i != frag->ninstructions; i++) {
326328        mark(frag->code[i].opa);
...... 
332334    for (i = PFPU_SPREG_COUNT; i != PFPU_REG_COUNT; i++)
333335        if (!sc->pfpu_regs[i].used)
334336            list_add_tail(&sc->unallocated, &sc->pfpu_regs[i].more);
337
338    return 0;
335339}
336340
337341
...... 
609613}
610614
611615
612static void init_scheduler_context(struct fpvm_fragment *frag,
616static int init_scheduler_context(struct fpvm_fragment *frag,
613617    unsigned int *reg)
614618{
615619    sc = calloc(1, sizeof(*sc));
620    if (!sc)
621        return -1;
616622
617623    sc->frag = frag;
618624
619    init_registers(frag, reg);
625    if (init_registers(frag, reg) < 0) {
626        free(sc);
627        return -1;
628    }
629
620630    init_scheduler(frag);
631    return 0;
621632}
622633
623634
...... 
627638    pfpu_instruction vecout;
628639    int res;
629640
630    init_scheduler_context(frag, reg);
641    if (init_scheduler_context(frag, reg) < 0)
642        return -1;
631643    memset(code, 0, PFPU_PROGSIZE*sizeof(*code));
632644    res = schedule(code);
633645

Archive Download the corresponding diff file

Branches:
master



interactive