Changes in / [436a0a5:88e43bc] in mainline
- Location:
- kernel
- Files:
-
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/abs32le/src/proc/thread.c
r436a0a5 r88e43bc 35 35 #include <proc/thread.h> 36 36 37 errno_t thread_create_arch(thread_t *t, thread_flags_t flags)37 void thread_create_arch(thread_t *t) 38 38 { 39 return EOK;40 39 } 41 40 -
kernel/arch/amd64/src/proc/thread.c
r436a0a5 r88e43bc 42 42 * 43 43 */ 44 errno_t thread_create_arch(thread_t *thread, thread_flags_t flags)44 void thread_create_arch(thread_t *thread) 45 45 { 46 46 /* … … 49 49 thread->arch.kstack_rsp = 50 50 (uintptr_t) &thread->kstack[PAGE_SIZE - sizeof(istate_t)]; 51 return EOK;52 51 } 53 52 -
kernel/arch/arm32/include/arch/proc/thread.h
r436a0a5 r88e43bc 42 42 #define thr_constructor_arch(t) 43 43 #define thr_destructor_arch(t) 44 #define thread_create_arch(t , flags) (EOK)44 #define thread_create_arch(t) 45 45 46 46 #endif -
kernel/arch/ia32/src/proc/thread.c
r436a0a5 r88e43bc 39 39 * @param t Thread to be initialized. 40 40 */ 41 errno_t thread_create_arch(thread_t *t, thread_flags_t flags)41 void thread_create_arch(thread_t *t) 42 42 { 43 return EOK;44 43 } 45 44 -
kernel/arch/ia64/include/arch/proc/thread.h
r436a0a5 r88e43bc 41 41 #define thr_constructor_arch(t) 42 42 #define thr_destructor_arch(t) 43 #define thread_create_arch(t , flags) (EOK)43 #define thread_create_arch(t) 44 44 45 45 #endif -
kernel/arch/mips32/include/arch/proc/thread.h
r436a0a5 r88e43bc 41 41 #define thr_constructor_arch(t) 42 42 #define thr_destructor_arch(t) 43 #define thread_create_arch(t , flags) (EOK)43 #define thread_create_arch(t) 44 44 45 45 #endif -
kernel/arch/ppc32/include/arch/proc/thread.h
r436a0a5 r88e43bc 41 41 #define thr_constructor_arch(t) 42 42 #define thr_destructor_arch(t) 43 #define thread_create_arch(t , flags) (EOK)43 #define thread_create_arch(t) 44 44 45 45 #endif -
kernel/arch/riscv64/src/proc/thread.c
r436a0a5 r88e43bc 35 35 #include <proc/thread.h> 36 36 37 errno_t thread_create_arch(thread_t *t, thread_flags_t flags)37 void thread_create_arch(thread_t *t) 38 38 { 39 return EOK;40 39 } 41 40 -
kernel/arch/sparc64/src/proc/thread.c
r436a0a5 r88e43bc 62 62 } 63 63 64 errno_t thread_create_arch(thread_t *t, thread_flags_t flags)64 void thread_create_arch(thread_t *t) 65 65 { 66 if (( flags & THREAD_FLAG_USPACE) && (!t->arch.uspace_window_buffer)) {66 if ((t->uspace) && (!t->arch.uspace_window_buffer)) { 67 67 /* 68 68 * The thread needs userspace window buffer and the object 69 69 * returned from the slab allocator doesn't have any. 70 70 */ 71 t->arch.uspace_window_buffer = slab_alloc(uwb_cache, FRAME_ATOMIC); 72 if (!t->arch.uspace_window_buffer) 73 return ENOMEM; 71 t->arch.uspace_window_buffer = slab_alloc(uwb_cache, 0); 74 72 } else { 75 73 uintptr_t uw_buf = (uintptr_t) t->arch.uspace_window_buffer; … … 82 80 UWB_ALIGNMENT); 83 81 } 84 return EOK;85 82 } 86 83 -
kernel/genarch/src/mm/asid_fifo.c
r436a0a5 r88e43bc 65 65 #if (!FIFO_STATIC) 66 66 fifo_create(free_asids); 67 if (!free_asids.fifo)68 panic("Not enough memory to allocate ASID FIFO");69 // TODO: There really is no reason not to statically allocate it70 // except to keep binary size low. Once kernel is a regular ELF71 // binary supporting .bss section (wip as of the late 2018),72 // the dynamic option should be removed.73 67 #endif 74 68 -
kernel/genarch/src/ofw/ofw_tree.c
r436a0a5 r88e43bc 386 386 static void ofw_tree_node_sysinfo(ofw_tree_node_t *node, const char *path) 387 387 { 388 char *cur_path = malloc(PATH_MAX_LEN); 389 if (!cur_path) 390 panic("Not enough memory to process OFW tree."); 388 char *cur_path = (char *) nfmalloc(PATH_MAX_LEN); 391 389 392 390 for (ofw_tree_node_t *cur = node; cur; cur = cur->peer) { -
kernel/generic/include/adt/fifo.h
r436a0a5 r88e43bc 115 115 */ 116 116 #define fifo_create(name) \ 117 name.fifo = malloc(sizeof(*name.fifo) * name.items)117 name.fifo = nfmalloc(sizeof(*name.fifo) * name.items) 118 118 119 119 #endif -
kernel/generic/include/ipc/ipc.h
r436a0a5 r88e43bc 47 47 struct answerbox; 48 48 struct task; 49 struct call;50 49 51 50 typedef enum { … … 68 67 struct task *caller; 69 68 struct answerbox *callee; 70 /* A call prepared for hangup ahead of time, so that it cannot fail. */71 struct call *hangup_call;72 69 ipc_phone_state_t state; 73 70 atomic_t active_calls; … … 174 171 extern void ipc_init(void); 175 172 176 extern call_t *ipc_call_alloc(void); 173 extern call_t *ipc_call_alloc(unsigned int); 174 extern void ipc_call_free(call_t *); 175 extern void ipc_call_hold(call_t *); 176 extern void ipc_call_release(call_t *); 177 177 178 178 extern errno_t ipc_call_sync(phone_t *, call_t *); -
kernel/generic/include/mm/as.h
r436a0a5 r88e43bc 325 325 326 326 /* Introspection functions. */ 327 extern as_area_info_t *as_get_area_info(as_t*, size_t *);327 extern void as_get_area_info(as_t *, as_area_info_t **, size_t *); 328 328 extern void as_print(as_t *); 329 329 -
kernel/generic/include/mm/slab.h
r436a0a5 r88e43bc 146 146 extern void free(void *); 147 147 148 extern void *nfmalloc(size_t) 149 __attribute__((malloc, returns_nonnull)); 150 148 151 #endif 149 152 -
kernel/generic/include/proc/thread.h
r436a0a5 r88e43bc 225 225 226 226 #ifndef thread_create_arch 227 extern errno_t thread_create_arch(thread_t *, thread_flags_t);227 extern void thread_create_arch(thread_t *); 228 228 #endif 229 229 -
kernel/generic/src/console/kconsole.c
r436a0a5 r88e43bc 219 219 const char *hint; 220 220 const char *help; 221 char *output = nfmalloc(MAX_CMDLINE); 221 222 size_t hints_to_show = MAX_TAB_HINTS - 1; 222 223 size_t total_hints_shown = 0; 223 224 bool continue_showing_hints = true; 224 225 char *output = malloc(MAX_CMDLINE);226 if (!output) {227 // TODO: fix the function so that it does not need allocation228 printf("Can't complete command, out of memory.\n");229 return 0;230 }231 225 232 226 output[0] = 0; … … 331 325 } 332 326 333 NO_TRACE static wchar_t *clever_readline(const char *prompt, indev_t *indev, 334 char *tmp) 327 NO_TRACE static wchar_t *clever_readline(const char *prompt, indev_t *indev) 335 328 { 336 329 printf("%s> ", prompt); … … 339 332 wchar_t *current = history[history_pos]; 340 333 current[0] = 0; 334 char *tmp = nfmalloc(STR_BOUNDS(MAX_CMDLINE)); 341 335 342 336 while (true) { … … 540 534 } 541 535 536 free(tmp); 542 537 return current; 543 538 } … … 814 809 printf("Type \"exit\" to leave the console.\n"); 815 810 816 char *buffer = malloc(STR_BOUNDS(MAX_CMDLINE)); 817 char *cmdline = malloc(STR_BOUNDS(MAX_CMDLINE)); 818 if (!buffer || !cmdline) { 819 // TODO: fix the function so that it does not need allocations 820 printf("Can't start console, out of memory.\n"); 821 free(buffer); 822 free(cmdline); 823 return; 824 } 825 811 char *cmdline = nfmalloc(STR_BOUNDS(MAX_CMDLINE)); 826 812 while (true) { 827 wchar_t *tmp = clever_readline((char *) prompt, stdin , buffer);813 wchar_t *tmp = clever_readline((char *) prompt, stdin); 828 814 size_t len = wstr_length(tmp); 829 815 if (!len) … … 841 827 (void) cmd_info->func(cmd_info->argv); 842 828 } 843 free(buffer);844 829 free(cmdline); 845 830 } -
kernel/generic/src/ipc/event.c
r436a0a5 r88e43bc 147 147 if (event->answerbox != NULL) { 148 148 if (!event->masked) { 149 call_t *call = ipc_call_alloc( );149 call_t *call = ipc_call_alloc(FRAME_ATOMIC); 150 150 151 151 if (call) { -
kernel/generic/src/ipc/ipc.c
r436a0a5 r88e43bc 108 108 * TASK->answerbox. 109 109 * 110 * @return Initialized kernel call structure with one reference, or NULL. 111 * 112 */ 113 call_t *ipc_call_alloc(void) 114 { 115 // TODO: Allocate call and kobject in single allocation 116 117 call_t *call = slab_alloc(call_cache, FRAME_ATOMIC); 110 * @param flags Parameters for slab_alloc (e.g FRAME_ATOMIC). 111 * 112 * @return If flags permit it, return NULL, or initialized kernel 113 * call structure with one reference. 114 * 115 */ 116 call_t *ipc_call_alloc(unsigned int flags) 117 { 118 call_t *call = slab_alloc(call_cache, flags); 118 119 if (!call) 119 120 return NULL; 120 121 121 kobject_t *kobj = (kobject_t *) malloc(sizeof(kobject_t)); 122 kobject_t *kobj; 123 if (flags & FRAME_ATOMIC) 124 kobj = (kobject_t *) malloc(sizeof(kobject_t)); 125 else 126 kobj = (kobject_t *) nfmalloc(sizeof(kobject_t)); 127 122 128 if (!kobj) { 123 129 slab_free(call_cache, call); … … 213 219 errno_t ipc_call_sync(phone_t *phone, call_t *request) 214 220 { 215 answerbox_t *mybox = slab_alloc(answerbox_cache, FRAME_ATOMIC); 216 if (!mybox) 217 return ENOMEM; 218 221 answerbox_t *mybox = slab_alloc(answerbox_cache, 0); 219 222 ipc_answerbox_init(mybox, TASK); 220 223 … … 480 483 kobject_put(phone->kobject); 481 484 482 call_t *call = phone->hangup_call; 483 phone->hangup_call = NULL; 484 assert(call); 485 485 call_t *call = ipc_call_alloc(0); 486 486 IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP); 487 487 call->request_method = IPC_M_PHONE_HUNGUP; … … 685 685 * to exist as soon as we release it. 686 686 */ 687 call_t *call = phone->hangup_call; 688 phone->hangup_call = NULL; 689 assert(call); 690 687 call_t *call = ipc_call_alloc(0); 691 688 IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP); 692 689 call->request_method = IPC_M_PHONE_HUNGUP; -
kernel/generic/src/ipc/ipcrsc.c
r436a0a5 r88e43bc 46 46 { 47 47 phone_t *phone = (phone_t *) arg; 48 if (phone->hangup_call)49 kobject_put(phone->hangup_call->kobject);50 48 slab_free(phone_cache, phone); 51 49 } … … 81 79 return ENOMEM; 82 80 } 83 call_t *hcall = ipc_call_alloc();84 if (!hcall) {85 cap_free(TASK, handle);86 slab_free(phone_cache, phone);87 free(kobj);88 return ENOMEM;89 }90 81 91 82 ipc_phone_init(phone, task); 92 83 phone->state = IPC_PHONE_CONNECTING; 93 phone->hangup_call = hcall;94 84 95 85 kobject_initialize(kobj, KOBJECT_TYPE_PHONE, phone, -
kernel/generic/src/ipc/irq.c
r436a0a5 r88e43bc 529 529 530 530 if (irq->notif_cfg.answerbox) { 531 call_t *call = ipc_call_alloc( );531 call_t *call = ipc_call_alloc(FRAME_ATOMIC); 532 532 if (!call) 533 533 return; … … 565 565 566 566 if (irq->notif_cfg.answerbox) { 567 call_t *call = ipc_call_alloc( );567 call_t *call = ipc_call_alloc(FRAME_ATOMIC); 568 568 if (!call) { 569 569 irq_spinlock_unlock(&irq->lock, true); -
kernel/generic/src/ipc/sysipc.c
r436a0a5 r88e43bc 267 267 * @return EOK on success. 268 268 * @return ENOENT if there is no such phone handle. 269 * @return ENOMEM if not enough memory to make the call270 269 * 271 270 */ … … 277 276 return ENOENT; 278 277 279 call_t *call = ipc_call_alloc(); 280 if (!call) { 281 kobject_put(kobj); 282 return ENOMEM; 283 } 284 278 call_t *call = ipc_call_alloc(0); 285 279 call->priv = priv; 286 280 memcpy(call->data.args, data->args, sizeof(data->args)); … … 379 373 } 380 374 381 call_t *call = ipc_call_alloc(); 382 if (!call) { 383 kobject_put(kobj); 384 return ENOMEM; 385 } 386 375 call_t *call = ipc_call_alloc(0); 387 376 IPC_SET_IMETHOD(call->data, imethod); 388 377 IPC_SET_ARG1(call->data, arg1); … … 431 420 } 432 421 433 call_t *call = ipc_call_alloc(); 434 if (!call) { 435 kobject_put(kobj); 436 return ENOMEM; 437 } 438 422 call_t *call = ipc_call_alloc(0); 439 423 errno_t rc = copy_from_uspace(&call->data.args, &data->args, 440 424 sizeof(call->data.args)); -
kernel/generic/src/lib/str.c
r436a0a5 r88e43bc 635 635 { 636 636 size_t size = str_size(src) + 1; 637 char *dest = malloc(size); 638 if (!dest) 639 return NULL; 637 char *dest = nfmalloc(size); 638 assert(dest); 640 639 641 640 str_cpy(dest, size, src); … … 669 668 size = n; 670 669 671 char *dest = malloc(size + 1); 672 if (!dest) 673 return NULL; 670 char *dest = nfmalloc(size + 1); 671 assert(dest); 674 672 675 673 str_ncpy(dest, size + 1, src, size); -
kernel/generic/src/main/kinit.c
r436a0a5 r88e43bc 120 120 thread = thread_create(kmp, NULL, TASK, 121 121 THREAD_FLAG_UNCOUNTED, "kmp"); 122 if (!thread) 122 if (thread != NULL) { 123 thread_wire(thread, &cpus[0]); 124 thread_ready(thread); 125 } else 123 126 panic("Unable to create kmp thread."); 124 127 125 thread_wire(thread, &cpus[0]);126 thread_ready(thread);127 128 thread_join(thread); 128 129 thread_detach(thread); -
kernel/generic/src/mm/as.c
r436a0a5 r88e43bc 151 151 as_t *as_create(unsigned int flags) 152 152 { 153 as_t *as = (as_t *) slab_alloc(as_cache, FRAME_ATOMIC); 154 if (!as) 155 return NULL; 156 153 as_t *as = (as_t *) slab_alloc(as_cache, 0); 157 154 (void) as_create_arch(as, 0); 158 155 … … 2240 2237 * 2241 2238 */ 2242 as_area_info_t *as_get_area_info(as_t *as, size_t *osize)2239 void as_get_area_info(as_t *as, as_area_info_t **obuf, size_t *osize) 2243 2240 { 2244 2241 mutex_lock(&as->lock); … … 2248 2245 2249 2246 size_t isize = area_cnt * sizeof(as_area_info_t); 2250 as_area_info_t *info = malloc(isize); 2251 if (!info) { 2252 mutex_unlock(&as->lock); 2253 return NULL; 2254 } 2247 as_area_info_t *info = nfmalloc(isize); 2255 2248 2256 2249 /* Record area data. */ … … 2274 2267 mutex_unlock(&as->lock); 2275 2268 2269 *obuf = info; 2276 2270 *osize = isize; 2277 return info;2278 2271 } 2279 2272 -
kernel/generic/src/mm/slab.c
r436a0a5 r88e43bc 667 667 size_t (*destructor)(void *obj), unsigned int flags) 668 668 { 669 slab_cache_t *cache = slab_alloc(&slab_cache_cache, FRAME_ATOMIC); 670 if (!cache) 671 panic("Not enough memory to allocate slab cache %s.", name); 672 669 slab_cache_t *cache = slab_alloc(&slab_cache_cache, 0); 673 670 _slab_cache_create(cache, name, size, align, constructor, destructor, 674 671 flags); … … 733 730 NO_TRACE static void _slab_free(slab_cache_t *cache, void *obj, slab_t *slab) 734 731 { 735 if (!obj)736 return;737 738 732 ipl_t ipl = interrupts_disable(); 739 733 … … 960 954 } 961 955 962 void *malloc(size_t size)956 static void *_malloc(size_t size, unsigned int flags) 963 957 { 964 958 assert(_slab_initialized); … … 970 964 uint8_t idx = fnzb(size - 1) - SLAB_MIN_MALLOC_W + 1; 971 965 972 return slab_alloc(malloc_caches[idx], FRAME_ATOMIC); 973 } 974 975 void *realloc(void *ptr, size_t size) 966 return slab_alloc(malloc_caches[idx], flags); 967 } 968 969 void *malloc(size_t size) 970 { 971 return _malloc(size, FRAME_ATOMIC); 972 } 973 974 /** Non-failing malloc. 975 * Never returns NULL, but may block forever if no memory is available. 976 */ 977 void *nfmalloc(size_t size) 978 { 979 return _malloc(size, 0); 980 } 981 982 static void *_realloc(void *ptr, size_t size, unsigned int flags) 976 983 { 977 984 assert(_slab_initialized); … … 985 992 uint8_t idx = fnzb(size - 1) - SLAB_MIN_MALLOC_W + 1; 986 993 987 new_ptr = slab_alloc(malloc_caches[idx], FRAME_ATOMIC);994 new_ptr = slab_alloc(malloc_caches[idx], flags); 988 995 } else 989 996 new_ptr = NULL; … … 1000 1007 } 1001 1008 1009 void *realloc(void *ptr, size_t size) 1010 { 1011 return _realloc(ptr, size, FRAME_ATOMIC); 1012 } 1013 1002 1014 void free(void *ptr) 1003 1015 { -
kernel/generic/src/proc/scheduler.c
r436a0a5 r88e43bc 134 134 void scheduler_fpu_lazy_request(void) 135 135 { 136 restart: 136 137 fpu_enable(); 137 138 irq_spinlock_lock(&CPU->lock, false); … … 152 153 fpu_context_restore(THREAD->saved_fpu_context); 153 154 } else { 155 /* Allocate FPU context */ 156 if (!THREAD->saved_fpu_context) { 157 /* Might sleep */ 158 irq_spinlock_unlock(&THREAD->lock, false); 159 irq_spinlock_unlock(&CPU->lock, false); 160 THREAD->saved_fpu_context = 161 (fpu_context_t *) slab_alloc(fpu_context_cache, 0); 162 163 /* We may have switched CPUs during slab_alloc */ 164 goto restart; 165 } 154 166 fpu_init(); 155 167 THREAD->fpu_context_exists = true; -
kernel/generic/src/proc/task.c
r436a0a5 r88e43bc 199 199 task_t *task_create(as_t *as, const char *name) 200 200 { 201 task_t *task = (task_t *) slab_alloc(task_cache, FRAME_ATOMIC);202 if ( !task)201 task_t *task = (task_t *) slab_alloc(task_cache, 0); 202 if (task == NULL) { 203 203 return NULL; 204 } 204 205 205 206 task_create_arch(task); -
kernel/generic/src/proc/thread.c
r436a0a5 r88e43bc 165 165 166 166 #ifdef CONFIG_FPU 167 thread->saved_fpu_context = slab_alloc(fpu_context_cache, 168 FRAME_ATOMIC | kmflags); 167 #ifdef CONFIG_FPU_LAZY 168 thread->saved_fpu_context = NULL; 169 #else /* CONFIG_FPU_LAZY */ 170 thread->saved_fpu_context = slab_alloc(fpu_context_cache, kmflags); 169 171 if (!thread->saved_fpu_context) 170 172 return ENOMEM; 173 #endif /* CONFIG_FPU_LAZY */ 171 174 #endif /* CONFIG_FPU */ 172 175 … … 197 200 if (!stack_phys) { 198 201 #ifdef CONFIG_FPU 199 assert(thread->saved_fpu_context);200 slab_free(fpu_context_cache, thread->saved_fpu_context);202 if (thread->saved_fpu_context) 203 slab_free(fpu_context_cache, thread->saved_fpu_context); 201 204 #endif 202 205 return ENOMEM; … … 223 226 224 227 #ifdef CONFIG_FPU 225 assert(thread->saved_fpu_context);226 slab_free(fpu_context_cache, thread->saved_fpu_context);228 if (thread->saved_fpu_context) 229 slab_free(fpu_context_cache, thread->saved_fpu_context); 227 230 #endif 228 231 … … 339 342 thread_flags_t flags, const char *name) 340 343 { 341 thread_t *thread = (thread_t *) slab_alloc(thread_cache, FRAME_ATOMIC);344 thread_t *thread = (thread_t *) slab_alloc(thread_cache, 0); 342 345 if (!thread) 343 346 return NULL; 344 345 if (thread_create_arch(thread, flags) != EOK) {346 slab_free(thread_cache, thread);347 return NULL;348 }349 347 350 348 /* Not needed, but good for debugging */ … … 409 407 udebug_thread_initialize(&thread->udebug); 410 408 #endif 409 410 /* Might depend on previous initialization */ 411 thread_create_arch(thread); 411 412 412 413 if ((flags & THREAD_FLAG_NOATTACH) != THREAD_FLAG_NOATTACH) … … 653 654 654 655 return waitq_sleep_timeout(&thread->join_wq, usec, flags, NULL); 655 656 // FIXME: join should deallocate the thread.657 // Current code calls detach after join, that's contrary to how658 // join is used in other threading APIs.659 656 } 660 657 -
kernel/generic/src/sysinfo/sysinfo.c
r436a0a5 r88e43bc 204 204 205 205 *psubtree = 206 (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, FRAME_ATOMIC); 207 if (!*psubtree) 208 return NULL; 206 (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, 0); 207 assert(*psubtree); 209 208 210 209 /* Fill in item name up to the delimiter */ 211 210 (*psubtree)->name = str_ndup(name, i); 212 if (!(*psubtree)->name) { 213 slab_free(sysinfo_item_cache, *psubtree); 214 return NULL; 215 } 211 assert((*psubtree)->name); 216 212 217 213 /* Create subtree items */ 218 214 if (name[i] == '.') { 219 215 (*psubtree)->subtree_type = SYSINFO_SUBTREE_TABLE; 220 sysinfo_item_t *item =sysinfo_create_path(name + i + 1,216 return sysinfo_create_path(name + i + 1, 221 217 &((*psubtree)->subtree.table)); 222 if (!item) {223 free((*psubtree)->name);224 slab_free(sysinfo_item_cache, *psubtree);225 }226 return item;227 218 } 228 219 … … 280 271 281 272 sysinfo_item_t *item = 282 (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, FRAME_ATOMIC); 283 if (!item) 284 return NULL; 273 (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, 0); 274 assert(item); 285 275 286 276 cur->next = item; … … 288 278 /* Fill in item name up to the delimiter */ 289 279 item->name = str_ndup(name, i); 290 if (!item->name) { 291 slab_free(sysinfo_item_cache, item); 292 return NULL; 293 } 280 assert(item->name); 294 281 295 282 /* Create subtree items */ 296 283 if (name[i] == '.') { 297 284 item->subtree_type = SYSINFO_SUBTREE_TABLE; 298 sysinfo_item_t *sub = sysinfo_create_path( 299 name + i + 1, &(item->subtree.table)); 300 if (!sub) { 301 free(item->name); 302 slab_free(sysinfo_item_cache, item); 303 return NULL; 304 } 305 return sub; 285 return sysinfo_create_path(name + i + 1, 286 &(item->subtree.table)); 306 287 } 307 288 … … 337 318 item->val_type = SYSINFO_VAL_VAL; 338 319 item->val.val = val; 339 } else {340 printf("Could not set sysinfo item %s.\n", name);341 320 } 342 321 … … 371 350 item->val.data.data = data; 372 351 item->val.data.size = size; 373 } else {374 printf("Could not set sysinfo item %s.\n", name);375 352 } 376 353 … … 401 378 item->val.gen_val.fn = fn; 402 379 item->val.gen_val.data = data; 403 } else {404 printf("Could not set sysinfo item %s.\n", name);405 380 } 406 381 … … 436 411 item->val.gen_data.fn = fn; 437 412 item->val.gen_data.data = data; 438 } else {439 printf("Could not set sysinfo item %s.\n", name);440 413 } 441 414 … … 461 434 if (item != NULL) 462 435 item->val_type = SYSINFO_VAL_UNDEFINED; 463 else464 printf("Could not set sysinfo item %s.\n", name);465 436 466 437 mutex_unlock(&sysinfo_lock); … … 495 466 item->subtree.generator.fn = fn; 496 467 item->subtree.generator.data = data; 497 } else {498 printf("Could not set sysinfo item %s.\n", name);499 468 } 500 469 … … 685 654 return ret; 686 655 687 // TODO: Change this so that allocation is not needed. 688 char *path = malloc(size + 1); 689 if (!path) 690 return ret; 656 char *path = (char *) nfmalloc(size + 1); 657 assert(path); 691 658 692 659 if ((copy_from_uspace(path, ptr, size + 1) == 0) && … … 796 763 return ret; 797 764 798 // TODO: Change this so that allocation is not needed. 799 char *path = malloc(size + 1); 800 if (!path) 801 return ret; 765 char *path = (char *) nfmalloc(size + 1); 766 assert(path); 802 767 803 768 if ((copy_from_uspace(path, ptr, size + 1) == 0) && -
kernel/generic/src/udebug/udebug_ipc.c
r436a0a5 r88e43bc 266 266 size_t data_size; 267 267 size_t buf_size; 268 as_area_info_t*data;268 void *data; 269 269 270 270 uspace_addr = IPC_GET_ARG2(call->data); /* Destination address */ … … 274 274 * Read area list. 275 275 */ 276 data = as_get_area_info(AS, &data_size); 277 if (!data) { 278 IPC_SET_RETVAL(call->data, ENOMEM); 279 ipc_answer(&TASK->kb.box, call); 280 return; 281 } 276 as_get_area_info(AS, (as_area_info_t **) &data, &data_size); 282 277 283 278 /* Copy MAX(buf_size, data_size) bytes */ … … 302 297 303 298 IPC_SET_ARG3(call->data, data_size); 304 call->buffer = (uint8_t *)data;299 call->buffer = data; 305 300 306 301 ipc_answer(&TASK->kb.box, call); -
kernel/test/mm/slab1.c
r436a0a5 r88e43bc 50 50 51 51 for (i = 0; i < count; i++) { 52 data[i] = slab_alloc(cache, FRAME_ATOMIC); 53 if (data[i]) 54 memsetb(data[i], size, 0); 52 data[i] = slab_alloc(cache, 0); 53 memsetb(data[i], size, 0); 55 54 } 56 55 … … 67 66 68 67 for (i = 0; i < count; i++) { 69 data[i] = slab_alloc(cache, FRAME_ATOMIC); 70 if (data[i]) 71 memsetb(data[i], size, 0); 68 data[i] = slab_alloc(cache, 0); 69 memsetb(data[i], size, 0); 72 70 } 73 71 … … 84 82 85 83 for (i = count / 2; i < count; i++) { 86 data[i] = slab_alloc(cache, FRAME_ATOMIC); 87 if (data[i]) 88 memsetb(data[i], size, 0); 84 data[i] = slab_alloc(cache, 0); 85 memsetb(data[i], size, 0); 89 86 } 90 87 … … 134 131 for (j = 0; j < 10; j++) { 135 132 for (i = 0; i < THR_MEM_COUNT; i++) 136 thr_data[offs][i] = slab_alloc(thr_cache, FRAME_ATOMIC);133 thr_data[offs][i] = slab_alloc(thr_cache, 0); 137 134 for (i = 0; i < THR_MEM_COUNT / 2; i++) 138 135 slab_free(thr_cache, thr_data[offs][i]); 139 136 for (i = 0; i < THR_MEM_COUNT / 2; i++) 140 thr_data[offs][i] = slab_alloc(thr_cache, FRAME_ATOMIC);137 thr_data[offs][i] = slab_alloc(thr_cache, 0); 141 138 for (i = 0; i < THR_MEM_COUNT; i++) 142 139 slab_free(thr_cache, thr_data[offs][i]);
Note:
See TracChangeset
for help on using the changeset viewer.