Werner's Miscellanea
Sign in or create your account | Project List | Help
Werner's Miscellanea Commit Details
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 | ||
---|---|---|
312 | 312 | } |
313 | 313 | |
314 | 314 | |
315 | static void init_registers(struct fpvm_fragment *frag, | |
315 | static int init_registers(struct fpvm_fragment *frag, | |
316 | 316 | unsigned int *registers) |
317 | 317 | { |
318 | 318 | int i; |
... | ... | |
321 | 321 | |
322 | 322 | sc->regs = |
323 | 323 | calloc(frag->nbindings-frag->next_sur, sizeof(struct vm_reg)); |
324 | if (!sc->regs) | |
325 | return -1; | |
324 | 326 | |
325 | 327 | for (i = 0; i != frag->ninstructions; i++) { |
326 | 328 | mark(frag->code[i].opa); |
... | ... | |
332 | 334 | for (i = PFPU_SPREG_COUNT; i != PFPU_REG_COUNT; i++) |
333 | 335 | if (!sc->pfpu_regs[i].used) |
334 | 336 | list_add_tail(&sc->unallocated, &sc->pfpu_regs[i].more); |
337 | ||
338 | return 0; | |
335 | 339 | } |
336 | 340 | |
337 | 341 | |
... | ... | |
609 | 613 | } |
610 | 614 | |
611 | 615 | |
612 | static void init_scheduler_context(struct fpvm_fragment *frag, | |
616 | static int init_scheduler_context(struct fpvm_fragment *frag, | |
613 | 617 | unsigned int *reg) |
614 | 618 | { |
615 | 619 | sc = calloc(1, sizeof(*sc)); |
620 | if (!sc) | |
621 | return -1; | |
616 | 622 | |
617 | 623 | sc->frag = frag; |
618 | 624 | |
619 | init_registers(frag, reg); | |
625 | if (init_registers(frag, reg) < 0) { | |
626 | free(sc); | |
627 | return -1; | |
628 | } | |
629 | ||
620 | 630 | init_scheduler(frag); |
631 | return 0; | |
621 | 632 | } |
622 | 633 | |
623 | 634 | |
... | ... | |
627 | 638 | pfpu_instruction vecout; |
628 | 639 | int res; |
629 | 640 | |
630 | init_scheduler_context(frag, reg); | |
641 | if (init_scheduler_context(frag, reg) < 0) | |
642 | return -1; | |
631 | 643 | memset(code, 0, PFPU_PROGSIZE*sizeof(*code)); |
632 | 644 | res = schedule(code); |
633 | 645 |
Branches:
master