char str[256];
size_t len;
- if (me)
+ if (me) {
snprintf(id, sizeof(id), "%"PRIuPTR, thread_get_id(me));
+ }
len = snprintf(str, sizeof(str), "\033[34m%.*s.\033[31m%u.%s\033[0m: ",
DISP_NAME_LEN, disp_name(), disp_get_core_id(), id);
if (len < sizeof(str)) {
err = alloc_dest_irq_cap(&irq_dest_cap);
if(err_is_fail(err)){
DEBUG_ERR(err, "Could not allocate dest irq cap");
+ free(state);
return err;
}
errval_t err;
size_t bufsize = SINGLE_SLOT_ALLOC_BUFLEN(L2_CNODE_SLOTS); // XXX?
- void *top_buf = malloc(bufsize);
- if (!top_buf) {
- return LIB_ERR_MALLOC_FAIL;
- }
-
ret->head = malloc(sizeof(struct slot_allocator_list));
if (!ret->head) {
return LIB_ERR_MALLOC_FAIL;
ret->head->next = NULL;
void *head_buf = malloc(bufsize);
if (!head_buf) {
+ free(ret->head);
return LIB_ERR_MALLOC_FAIL;
}
ret->reserve = malloc(sizeof(struct slot_allocator_list));
if (!ret->reserve) {
+ free(ret->head);
+ free(head_buf);
return LIB_ERR_MALLOC_FAIL;
}
void *reserve_buf = malloc(bufsize);
if (!reserve_buf) {
+ free(ret->head);
+ free(head_buf);
+ free(ret->reserve);
return LIB_ERR_MALLOC_FAIL;
}
+
size_t allocation_unit = sizeof(struct slot_allocator_list) + bufsize;
err = vspace_mmu_aware_init(&ret->mmu_state, allocation_unit * L2_CNODE_SLOTS * 2);
if (err_is_fail(err)) {
+ free(ret->head);
+ free(head_buf);
+ free(ret->reserve);
+ free(reserve_buf);
return err_push(err, LIB_ERR_VSPACE_MMU_AWARE_INIT);
}
struct cnoderef initial_cnode, reserve_cnode;
err = cnode_create_l2(&initial_cap, &initial_cnode);
if (err_is_fail(err)) {
+ free(ret->head);
+ free(head_buf);
+ free(ret->reserve);
+ free(reserve_buf);
+ vregion_destroy(&ret->mmu_state.vregion);
return err_push(err, LIB_ERR_CNODE_CREATE);
}
err = cnode_create_l2(&reserve_cap, &reserve_cnode);
if (err_is_fail(err)) {
+ free(head_buf);
+ free(ret->head);
+ free(reserve_buf);
+ free(ret->reserve);
+ vregion_destroy(&ret->mmu_state.vregion);
+ cap_destroy(initial_cap);
return err_push(err, LIB_ERR_CNODE_CREATE);
}
err = two_level_slot_alloc_init_raw(ret, initial_cap, initial_cnode,
if (err_is_fail(err)) {
DEBUG_ERR(err, "error allocating LDT segment for new thread");
free_thread(newthread);
+ free(stack);
return NULL;
}
#endif
acquire_spinlock(&thread_slabs_spinlock);
while (slab_freecount(&thread_slabs) < MAX_THREADS - 1) {
- struct capref frame;
size_t size;
void *buf;
errval_t err;
err = vspace_mmu_aware_map(&thread_slabs_vm, blocksize,
&buf, &size);
if (err_is_fail(err)) {
- slot_free(frame);
if (err_no(err) == LIB_ERR_VSPACE_MMU_AWARE_NO_SPACE) {
// we've wasted space with fragmentation
// cross our fingers and hope for the best...
if (err_is_fail(err)) {
free(memobj);
free(vregion);
+ } else {
+ *ret_memobj = (struct memobj *)memobj;
+ *ret_vregion = vregion;
}
- *ret_memobj = (struct memobj *)memobj;
- *ret_vregion = vregion;
-
return err;
}
err = vspace_map_anon_nomalloc(retaddr, memobj, vregion, size,
retsize, flags, 0);
- if (err_is_fail(err))
- {
+ if (err_is_fail(err)) {
free(memobj);
free(vregion);
+ } else {
+ *ret_memobj = (struct memobj *)memobj;
+ *ret_vregion = vregion;
}
- *ret_memobj = (struct memobj *)memobj;
- *ret_vregion = vregion;
-
return err;
}
if(coreid == my_core_id) {
printf("bfscope runs on the same core as the initiator of the flush request\n");
+ // we don't need the state in this case
+ free(state);
// Send message to bfscope directly
bfscope_intermon_flush_forward_handler(NULL, iref);
return;
errval_t err;
struct capability capability;
intermon_caprep_t caprep;
- coreid_t capowner;
+ coreid_t capowner = 0;
memset(&caprep, 0, sizeof(caprep));
bool null_cap = capref_is_null(cap);