const struct fres_block *sb = &source->blocks[type];
struct fres_block *db = &dest->blocks[type];
db->state = FRES_BLOCK_EMPTY;
- switch (source->blocks[type].state) {
+ switch (sb->state) {
case FRES_BLOCK_EMPTY:
/* nothing to do */
break;
errno = EINVAL;
return -1;
}
+ if (!block_registry[type]) {
+ errno = FRES_ERR_BLOCK_NOT_REGISTERED;
+ return -1;
+ }
container->blocks[type].u.data = block;
container->blocks[type].state = FRES_BLOCK_DATA;
enum fres_error {
FRES_ERR_FCB_NOT_RUNNING = FRES_ERR_BASE_VALUE,
FRES_ERR_FORB_EXCEPTION,
+ FRES_ERR_BLOCK_NOT_REGISTERED,
};
int fres_strerror (int error, char *message, size_t size);
{
struct dummy_data *data = priv;
struct fres_sa_contract *c;
+ int ret;
printf("Admission test:\n");
data->some_data++;
dummy_sched = malloc(sizeof(*dummy_sched));
if (!dummy_sched) return -1;
dummy_sched->priority = 100 - fosa_rel_time_to_msec(basic->budget);
- fres_contract_add_block(c->contract, FRES_BLOCK_DUMMY_SCHED, dummy_sched);
+ ret = fres_contract_add_block(c->contract, FRES_BLOCK_DUMMY_SCHED, dummy_sched);
+ if (ret) {
+ fprintf(stderr, "Cannpt add dummy_sched block\n");
+ return -1;
+ }
} else {
dummy_sched = fres_contract_get_block(c->contract, FRES_BLOCK_DUMMY_SCHED);
+ if (!dummy_sched) {
+ fprintf(stderr, "Dummy_sched is not present\n");
+ return -1;
+ }
}
printf(" %s contract: id=%s, period=%ld ms, budget=%ld ms, priority=%d\n",
/* Register fres_block_dummy_sched to contract handling
* functions */
- fres_block_register_dummy();
+ //fres_block_register_dummy();
ret = frm_register_and_run(orb, &frm);