Changeset bc73be3 in mainline for kernel/generic/src
- Timestamp:
- 2019-06-27T08:51:20Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8add15e0
- Parents:
- ad40b74b (diff), aeba767 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- kernel/generic/src
- Files:
-
- 1 added
- 36 edited
-
adt/hash_table.c (modified) (3 diffs)
-
cap/cap.c (modified) (4 diffs)
-
console/kconsole.c (modified) (7 diffs)
-
ddi/ddi.c (modified) (11 diffs)
-
ddi/irq.c (modified) (3 diffs)
-
interrupt/interrupt.c (modified) (6 diffs)
-
ipc/event.c (modified) (1 diff)
-
ipc/ipc.c (modified) (6 diffs)
-
ipc/irq.c (modified) (2 diffs)
-
ipc/kbox.c (modified) (2 diffs)
-
ipc/ops/conctmeto.c (modified) (4 diffs)
-
ipc/ops/concttome.c (modified) (4 diffs)
-
ipc/ops/dataread.c (modified) (6 diffs)
-
ipc/ops/datawrite.c (modified) (3 diffs)
-
ipc/ops/debug.c (modified) (1 diff)
-
ipc/ops/pagein.c (modified) (3 diffs)
-
ipc/ops/sharein.c (modified) (2 diffs)
-
ipc/ops/shareout.c (modified) (3 diffs)
-
ipc/ops/stchngath.c (modified) (7 diffs)
-
ipc/sysipc.c (modified) (16 diffs)
-
lib/elf.c (modified) (9 diffs)
-
lib/ra.c (modified) (1 diff)
-
lib/str.c (modified) (4 diffs)
-
lib/strtol.c (added)
-
main/kinit.c (modified) (1 diff)
-
main/main.c (modified) (1 diff)
-
mm/as.c (modified) (24 diffs)
-
mm/backend_user.c (modified) (3 diffs)
-
mm/frame.c (modified) (19 diffs)
-
mm/page.c (modified) (4 diffs)
-
mm/slab.c (modified) (18 diffs)
-
proc/current.c (modified) (1 diff)
-
proc/program.c (modified) (4 diffs)
-
sysinfo/sysinfo.c (modified) (10 diffs)
-
udebug/udebug.c (modified) (6 diffs)
-
udebug/udebug_ipc.c (modified) (23 diffs)
-
udebug/udebug_ops.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/adt/hash_table.c
rad40b74b rbc73be3 51 51 #include <adt/hash_table.h> 52 52 #include <adt/list.h> 53 #include <assert.h> 53 54 #include <stdlib.h> 54 #include <assert.h>55 55 #include <str.h> 56 56 … … 245 245 * 246 246 */ 247 ht_link_t *hash_table_find(const hash_table_t *h, void *key)247 ht_link_t *hash_table_find(const hash_table_t *h, const void *key) 248 248 { 249 249 assert(h && h->bucket); … … 306 306 * @return Returns the number of removed items. 307 307 */ 308 size_t hash_table_remove(hash_table_t *h, void *key)308 size_t hash_table_remove(hash_table_t *h, const void *key) 309 309 { 310 310 assert(h && h->bucket); -
kernel/generic/src/cap/cap.c
rad40b74b rbc73be3 98 98 { 99 99 cap_t *cap = hash_table_get_inst(item, cap_t, caps_link); 100 return hash_mix( CAP_HANDLE_RAW(cap->handle));101 } 102 103 static size_t caps_key_hash( void *key)104 { 105 c ap_handle_t *handle = (cap_handle_t *)key;106 return hash_mix( CAP_HANDLE_RAW(*handle));107 } 108 109 static bool caps_key_equal( void *key, const ht_link_t *item)110 { 111 c ap_handle_t *handle = (cap_handle_t *)key;100 return hash_mix(cap_handle_raw(cap->handle)); 101 } 102 103 static size_t caps_key_hash(const void *key) 104 { 105 const cap_handle_t *handle = key; 106 return hash_mix(cap_handle_raw(*handle)); 107 } 108 109 static bool caps_key_equal(const void *key, const ht_link_t *item) 110 { 111 const cap_handle_t *handle = key; 112 112 cap_t *cap = hash_table_get_inst(item, cap_t, caps_link); 113 113 return *handle == cap->handle; … … 232 232 assert(mutex_locked(&task->cap_info->lock)); 233 233 234 if (( CAP_HANDLE_RAW(handle) < CAPS_START) ||235 ( CAP_HANDLE_RAW(handle) > CAPS_LAST))234 if ((cap_handle_raw(handle) < CAPS_START) || 235 (cap_handle_raw(handle) > CAPS_LAST)) 236 236 return NULL; 237 237 ht_link_t *link = hash_table_find(&task->cap_info->caps, &handle); … … 383 383 void cap_free(task_t *task, cap_handle_t handle) 384 384 { 385 assert( CAP_HANDLE_RAW(handle) >= CAPS_START);386 assert( CAP_HANDLE_RAW(handle) <= CAPS_LAST);385 assert(cap_handle_raw(handle) >= CAPS_START); 386 assert(cap_handle_raw(handle) <= CAPS_LAST); 387 387 388 388 mutex_lock(&task->cap_info->lock); … … 392 392 393 393 hash_table_remove_item(&task->cap_info->caps, &cap->caps_link); 394 ra_free(task->cap_info->handles, CAP_HANDLE_RAW(handle), 1);394 ra_free(task->cap_info->handles, cap_handle_raw(handle), 1); 395 395 slab_free(cap_cache, cap); 396 396 mutex_unlock(&task->cap_info->lock); -
kernel/generic/src/console/kconsole.c
rad40b74b rbc73be3 156 156 157 157 /** Print count times a character */ 158 NO_TRACE static void print_cc(wchar_t ch, size_t count)158 _NO_TRACE static void print_cc(wchar_t ch, size_t count) 159 159 { 160 160 size_t i; … … 203 203 * 204 204 */ 205 NO_TRACE static int cmdtab_compl(char *input, size_t size, indev_t *indev,205 _NO_TRACE static int cmdtab_compl(char *input, size_t size, indev_t *indev, 206 206 hints_enum_func_t hints_enum) 207 207 { … … 290 290 } 291 291 292 NO_TRACE static cmd_info_t *parse_cmd(const wchar_t *cmdline)292 _NO_TRACE static cmd_info_t *parse_cmd(const wchar_t *cmdline) 293 293 { 294 294 size_t start = 0; … … 331 331 } 332 332 333 NO_TRACE static wchar_t *clever_readline(const char *prompt, indev_t *indev,333 _NO_TRACE static wchar_t *clever_readline(const char *prompt, indev_t *indev, 334 334 char *tmp) 335 335 { … … 548 548 } 549 549 550 NO_TRACE static bool parse_int_arg(const char *text, size_t len,550 _NO_TRACE static bool parse_int_arg(const char *text, size_t len, 551 551 sysarg_t *result) 552 552 { … … 637 637 * 638 638 */ 639 NO_TRACE static bool parse_argument(const char *cmdline, size_t size,639 _NO_TRACE static bool parse_argument(const char *cmdline, size_t size, 640 640 size_t *start, size_t *end) 641 641 { … … 674 674 * 675 675 */ 676 NO_TRACE static cmd_info_t *parse_cmdline(const char *cmdline, size_t size)676 _NO_TRACE static cmd_info_t *parse_cmdline(const char *cmdline, size_t size) 677 677 { 678 678 size_t start = 0; -
kernel/generic/src/ddi/ddi.c
rad40b74b rbc73be3 46 46 #include <mm/frame.h> 47 47 #include <mm/as.h> 48 #include <mm/km.h> 48 49 #include <mm/page.h> 49 50 #include <synch/mutex.h> … … 56 57 #include <trace.h> 57 58 #include <bitops.h> 59 #include <arch/asm.h> 58 60 59 61 /** This lock protects the @c pareas ordered dictionary. */ … … 121 123 * 122 124 */ 123 NO_TRACE static errno_t physmem_map(uintptr_t phys, size_t pages,125 _NO_TRACE static errno_t physmem_map(uintptr_t phys, size_t pages, 124 126 unsigned int flags, uintptr_t *virt, uintptr_t bound) 125 127 { … … 227 229 } 228 230 229 NO_TRACE static errno_t physmem_unmap(uintptr_t virt)231 _NO_TRACE static errno_t physmem_unmap(uintptr_t virt) 230 232 { 231 233 assert(TASK); … … 312 314 * 313 315 */ 314 NO_TRACE static errno_t iospace_enable(task_id_t id, uintptr_t ioaddr, size_t size)316 _NO_TRACE static errno_t iospace_enable(task_id_t id, uintptr_t ioaddr, size_t size) 315 317 { 316 318 /* … … 353 355 * 354 356 */ 355 NO_TRACE static errno_t iospace_disable(task_id_t id, uintptr_t ioaddr, size_t size)357 _NO_TRACE static errno_t iospace_disable(task_id_t id, uintptr_t ioaddr, size_t size) 356 358 { 357 359 /* … … 413 415 } 414 416 415 NO_TRACE static errno_t dmamem_map(uintptr_t virt, size_t size, unsigned int map_flags,417 _NO_TRACE static errno_t dmamem_map(uintptr_t virt, size_t size, unsigned int map_flags, 416 418 unsigned int flags, uintptr_t *phys) 417 419 { … … 422 424 } 423 425 424 NO_TRACE static errno_t dmamem_map_anonymous(size_t size, uintptr_t constraint,426 _NO_TRACE static errno_t dmamem_map_anonymous(size_t size, uintptr_t constraint, 425 427 unsigned int map_flags, unsigned int flags, uintptr_t *phys, 426 428 uintptr_t *virt, uintptr_t bound) … … 451 453 } 452 454 453 NO_TRACE static errno_t dmamem_unmap(uintptr_t virt, size_t size)455 _NO_TRACE static errno_t dmamem_unmap(uintptr_t virt, size_t size) 454 456 { 455 457 // TODO: implement unlocking & unmap … … 457 459 } 458 460 459 NO_TRACE static errno_t dmamem_unmap_anonymous(uintptr_t virt)461 _NO_TRACE static errno_t dmamem_unmap_anonymous(uintptr_t virt) 460 462 { 461 463 return as_area_destroy(TASK->as, virt); … … 527 529 return dmamem_unmap_anonymous(virt); 528 530 } 531 void *pio_map(void *phys, size_t size) 532 { 533 #ifdef IO_SPACE_BOUNDARY 534 if (phys < IO_SPACE_BOUNDARY) 535 return phys; 536 #endif 537 return (void *) km_map((uintptr_t) phys, size, KM_NATURAL_ALIGNMENT, 538 PAGE_READ | PAGE_WRITE | PAGE_NOT_CACHEABLE); 539 } 540 541 void pio_unmap(void *phys, void *virt, size_t size) 542 { 543 #ifdef IO_SPACE_BOUNDARY 544 if (phys < IO_SPACE_BOUNDARY) 545 return; 546 #endif 547 km_unmap((uintptr_t) virt, size); 548 } 529 549 530 550 /** @} -
kernel/generic/src/ddi/irq.c
rad40b74b rbc73be3 73 73 74 74 static size_t irq_ht_hash(const ht_link_t *); 75 static size_t irq_ht_key_hash( void *);75 static size_t irq_ht_key_hash(const void *); 76 76 static bool irq_ht_equal(const ht_link_t *, const ht_link_t *); 77 static bool irq_ht_key_equal( void *, const ht_link_t *);77 static bool irq_ht_key_equal(const void *, const ht_link_t *); 78 78 79 79 static hash_table_ops_t irq_ht_ops = { … … 208 208 209 209 /** Return the hash of the key. */ 210 size_t irq_ht_key_hash( void *key)211 { 212 inr_t *inr = (inr_t *)key;210 size_t irq_ht_key_hash(const void *key) 211 { 212 const inr_t *inr = key; 213 213 return hash_mix(*inr); 214 214 } … … 223 223 224 224 /** Return true if the key is equal to the item's lookup key. */ 225 bool irq_ht_key_equal( void *key, const ht_link_t *item)226 { 227 inr_t *inr = (inr_t *)key;225 bool irq_ht_key_equal(const void *key, const ht_link_t *item) 226 { 227 const inr_t *inr = key; 228 228 irq_t *irq = hash_table_get_inst(item, irq_t, link); 229 229 return irq->inr == *inr; -
kernel/generic/src/interrupt/interrupt.c
rad40b74b rbc73be3 99 99 * 100 100 */ 101 NO_TRACE void exc_dispatch(unsigned int n, istate_t *istate)101 _NO_TRACE void exc_dispatch(unsigned int n, istate_t *istate) 102 102 { 103 103 #if (IVT_ITEMS > 0) … … 159 159 * 160 160 */ 161 NO_TRACE static void exc_undef(unsigned int n, istate_t *istate)161 _NO_TRACE static void exc_undef(unsigned int n, istate_t *istate) 162 162 { 163 163 fault_if_from_uspace(istate, "Unhandled exception %u.", n); … … 165 165 } 166 166 167 static NO_TRACE void167 static _NO_TRACE void 168 168 fault_from_uspace_core(istate_t *istate, const char *fmt, va_list args) 169 169 { … … 185 185 * 186 186 */ 187 NO_TRACE void fault_from_uspace(istate_t *istate, const char *fmt, ...)187 _NO_TRACE void fault_from_uspace(istate_t *istate, const char *fmt, ...) 188 188 { 189 189 va_list args; … … 197 197 * 198 198 */ 199 NO_TRACE void fault_if_from_uspace(istate_t *istate, const char *fmt, ...)199 _NO_TRACE void fault_if_from_uspace(istate_t *istate, const char *fmt, ...) 200 200 { 201 201 if (!istate_from_uspace(istate)) … … 233 233 * 234 234 */ 235 NO_TRACE static int cmd_exc_print(cmd_arg_t *argv)235 _NO_TRACE static int cmd_exc_print(cmd_arg_t *argv) 236 236 { 237 237 bool excs_all; -
kernel/generic/src/ipc/event.c
rad40b74b rbc73be3 153 153 call->priv = ++event->counter; 154 154 155 IPC_SET_IMETHOD(call->data, event->imethod);156 IPC_SET_ARG1(call->data, a1);157 IPC_SET_ARG2(call->data, a2);158 IPC_SET_ARG3(call->data, a3);159 IPC_SET_ARG4(call->data, a4);160 IPC_SET_ARG5(call->data, a5);155 ipc_set_imethod(&call->data, event->imethod); 156 ipc_set_arg1(&call->data, a1); 157 ipc_set_arg2(&call->data, a2); 158 ipc_set_arg3(&call->data, a3); 159 ipc_set_arg4(&call->data, a4); 160 ipc_set_arg5(&call->data, a5); 161 161 162 162 call->data.task_id = TASK ? TASK->taskid : 0; -
kernel/generic/src/ipc/ipc.c
rad40b74b rbc73be3 387 387 { 388 388 _ipc_call_actions_internal(phone, call, false); 389 IPC_SET_RETVAL(call->data, err);389 ipc_set_retval(&call->data, err); 390 390 _ipc_answer_free_call(call, false); 391 391 } … … 485 485 assert(call); 486 486 487 IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP);487 ipc_set_imethod(&call->data, IPC_M_PHONE_HUNGUP); 488 488 call->request_method = IPC_M_PHONE_HUNGUP; 489 489 call->flags |= IPC_CALL_DISCARD_ANSWER; … … 634 634 635 635 ipc_data_t old = call->data; 636 IPC_SET_RETVAL(call->data, EHANGUP);636 ipc_set_retval(&call->data, EHANGUP); 637 637 answer_preprocess(call, &old); 638 638 _ipc_answer_free_call(call, true); … … 690 690 assert(call); 691 691 692 IPC_SET_IMETHOD(call->data, IPC_M_PHONE_HUNGUP);692 ipc_set_imethod(&call->data, IPC_M_PHONE_HUNGUP); 693 693 call->request_method = IPC_M_PHONE_HUNGUP; 694 694 call->flags |= IPC_CALL_DISCARD_ANSWER; … … 909 909 printf("%-8" PRIun " %-6" PRIun " %-6" PRIun " %-6" PRIun 910 910 " %-6" PRIun " %-6" PRIun " %-7x", 911 IPC_GET_IMETHOD(call->data), IPC_GET_ARG1(call->data),912 IPC_GET_ARG2(call->data), IPC_GET_ARG3(call->data),913 IPC_GET_ARG4(call->data), IPC_GET_ARG5(call->data),911 ipc_get_imethod(&call->data), ipc_get_arg1(&call->data), 912 ipc_get_arg2(&call->data), ipc_get_arg3(&call->data), 913 ipc_get_arg4(&call->data), ipc_get_arg5(&call->data), 914 914 call->flags); 915 915 … … 931 931 mutex_lock(&phone->lock); 932 932 if (phone->state != IPC_PHONE_FREE) { 933 printf("%-11d %7" PRIun " ", (int) CAP_HANDLE_RAW(cap->handle),933 printf("%-11d %7" PRIun " ", (int) cap_handle_raw(cap->handle), 934 934 atomic_load(&phone->active_calls)); 935 935 -
kernel/generic/src/ipc/irq.c
rad40b74b rbc73be3 539 539 540 540 /* Set up args */ 541 IPC_SET_IMETHOD(call->data, irq->notif_cfg.imethod);542 IPC_SET_ARG1(call->data, irq->notif_cfg.scratch[1]);543 IPC_SET_ARG2(call->data, irq->notif_cfg.scratch[2]);544 IPC_SET_ARG3(call->data, irq->notif_cfg.scratch[3]);545 IPC_SET_ARG4(call->data, irq->notif_cfg.scratch[4]);546 IPC_SET_ARG5(call->data, irq->notif_cfg.scratch[5]);541 ipc_set_imethod(&call->data, irq->notif_cfg.imethod); 542 ipc_set_arg1(&call->data, irq->notif_cfg.scratch[1]); 543 ipc_set_arg2(&call->data, irq->notif_cfg.scratch[2]); 544 ipc_set_arg3(&call->data, irq->notif_cfg.scratch[3]); 545 ipc_set_arg4(&call->data, irq->notif_cfg.scratch[4]); 546 ipc_set_arg5(&call->data, irq->notif_cfg.scratch[5]); 547 547 548 548 send_call(irq, call); … … 576 576 call->priv = ++irq->notif_cfg.counter; 577 577 578 IPC_SET_IMETHOD(call->data, irq->notif_cfg.imethod);579 IPC_SET_ARG1(call->data, a1);580 IPC_SET_ARG2(call->data, a2);581 IPC_SET_ARG3(call->data, a3);582 IPC_SET_ARG4(call->data, a4);583 IPC_SET_ARG5(call->data, a5);578 ipc_set_imethod(&call->data, irq->notif_cfg.imethod); 579 ipc_set_arg1(&call->data, a1); 580 ipc_set_arg2(&call->data, a2); 581 ipc_set_arg3(&call->data, a3); 582 ipc_set_arg4(&call->data, a4); 583 ipc_set_arg5(&call->data, a5); 584 584 585 585 send_call(irq, call); -
kernel/generic/src/ipc/kbox.c
rad40b74b rbc73be3 121 121 122 122 LOG("Continue with hangup message."); 123 IPC_SET_RETVAL(call->data, 0);123 ipc_set_retval(&call->data, 0); 124 124 ipc_answer(&TASK->kb.box, call); 125 125 … … 174 174 continue; /* Try again. */ 175 175 176 switch ( IPC_GET_IMETHOD(call->data)) {176 switch (ipc_get_imethod(&call->data)) { 177 177 178 178 case IPC_M_DEBUG: -
kernel/generic/src/ipc/ops/conctmeto.c
rad40b74b rbc73be3 59 59 60 60 /* Remember the handle */ 61 IPC_SET_ARG5(call->data, (sysarg_t) phandle);61 ipc_set_arg5(&call->data, (sysarg_t) phandle); 62 62 63 63 return EOK; … … 66 66 static errno_t request_forget(call_t *call) 67 67 { 68 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(call->data);68 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(&call->data); 69 69 70 if ( CAP_HANDLE_RAW(phandle) < 0)70 if (cap_handle_raw(phandle) < 0) 71 71 return EOK; 72 72 … … 88 88 89 89 /* Set the recipient-assigned label */ 90 pobj->phone->label = IPC_GET_ARG5(answer->data);90 pobj->phone->label = ipc_get_arg5(&answer->data); 91 91 92 92 /* Restore phone handle in answer's ARG5 */ 93 IPC_SET_ARG5(answer->data, IPC_GET_ARG5(*olddata));93 ipc_set_arg5(&answer->data, ipc_get_arg5(olddata)); 94 94 95 95 /* If the user accepted the call, connect */ 96 if ( IPC_GET_RETVAL(answer->data) == EOK) {96 if (ipc_get_retval(&answer->data) == EOK) { 97 97 /* Hand over reference from pobj to the answerbox */ 98 98 (void) ipc_phone_connect(pobj->phone, &TASK->answerbox); … … 107 107 static errno_t answer_process(call_t *answer) 108 108 { 109 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(answer->data);109 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(&answer->data); 110 110 /* Move the reference from answer->priv to pobj */ 111 111 kobject_t *pobj = (kobject_t *) answer->priv; 112 112 answer->priv = 0; 113 113 114 if ( IPC_GET_RETVAL(answer->data)) {115 if ( CAP_HANDLE_RAW(phandle) >= 0) {114 if (ipc_get_retval(&answer->data)) { 115 if (cap_handle_raw(phandle) >= 0) { 116 116 /* 117 117 * Cleanup the unpublished capability and drop -
kernel/generic/src/ipc/ops/concttome.c
rad40b74b rbc73be3 49 49 * Set the sender-assigned label to the new phone. 50 50 */ 51 pobj->phone->label = IPC_GET_ARG5(call->data);51 pobj->phone->label = ipc_get_arg5(&call->data); 52 52 } 53 53 call->priv = (sysarg_t) pobj; 54 IPC_SET_ARG5(call->data, CAP_HANDLE_RAW(phandle));54 ipc_set_arg5(&call->data, cap_handle_raw(phandle)); 55 55 return 0; 56 56 } … … 58 58 static errno_t answer_cleanup(call_t *answer, ipc_data_t *olddata) 59 59 { 60 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(*olddata);60 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(olddata); 61 61 kobject_t *pobj = (kobject_t *) answer->priv; 62 62 63 if ( CAP_HANDLE_VALID(phandle)) {63 if (cap_handle_valid(phandle)) { 64 64 kobject_put(pobj); 65 65 cap_free(TASK, phandle); … … 71 71 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata) 72 72 { 73 cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(*olddata);73 cap_phone_handle_t phandle = (cap_handle_t) ipc_get_arg5(olddata); 74 74 kobject_t *pobj = (kobject_t *) answer->priv; 75 75 76 if ( IPC_GET_RETVAL(answer->data) != EOK) {76 if (ipc_get_retval(&answer->data) != EOK) { 77 77 /* The connection was not accepted */ 78 78 answer_cleanup(answer, olddata); 79 } else if ( CAP_HANDLE_VALID(phandle)) {79 } else if (cap_handle_valid(phandle)) { 80 80 /* 81 81 * The connection was accepted … … 94 94 } else { 95 95 /* The answerbox is shutting down. */ 96 IPC_SET_RETVAL(answer->data, ENOENT);96 ipc_set_retval(&answer->data, ENOENT); 97 97 answer_cleanup(answer, olddata); 98 98 } 99 99 } else { 100 IPC_SET_RETVAL(answer->data, ELIMIT);100 ipc_set_retval(&answer->data, ELIMIT); 101 101 } 102 102 -
kernel/generic/src/ipc/ops/dataread.c
rad40b74b rbc73be3 43 43 static errno_t request_preprocess(call_t *call, phone_t *phone) 44 44 { 45 size_t size = IPC_GET_ARG2(call->data);45 size_t size = ipc_get_arg2(&call->data); 46 46 47 47 if (size > DATA_XFER_LIMIT) { 48 int flags = IPC_GET_ARG3(call->data);48 int flags = ipc_get_arg3(&call->data); 49 49 50 50 if (flags & IPC_XF_RESTRICT) 51 IPC_SET_ARG2(call->data, DATA_XFER_LIMIT);51 ipc_set_arg2(&call->data, DATA_XFER_LIMIT); 52 52 else 53 53 return ELIMIT; … … 61 61 assert(!answer->buffer); 62 62 63 if (! IPC_GET_RETVAL(answer->data)) {63 if (!ipc_get_retval(&answer->data)) { 64 64 /* The recipient agreed to send data. */ 65 uintptr_t src = IPC_GET_ARG1(answer->data);66 uintptr_t dst = IPC_GET_ARG1(*olddata);67 size_t max_size = IPC_GET_ARG2(*olddata);68 size_t size = IPC_GET_ARG2(answer->data);65 uintptr_t src = ipc_get_arg1(&answer->data); 66 uintptr_t dst = ipc_get_arg1(olddata); 67 size_t max_size = ipc_get_arg2(olddata); 68 size_t size = ipc_get_arg2(&answer->data); 69 69 70 70 if (size && size <= max_size) { … … 73 73 * information is not lost. 74 74 */ 75 IPC_SET_ARG1(answer->data, dst);75 ipc_set_arg1(&answer->data, dst); 76 76 77 77 answer->buffer = malloc(size); 78 78 if (!answer->buffer) { 79 IPC_SET_RETVAL(answer->data, ENOMEM);79 ipc_set_retval(&answer->data, ENOMEM); 80 80 return EOK; 81 81 } … … 83 83 (void *) src, size); 84 84 if (rc) { 85 IPC_SET_RETVAL(answer->data, rc);85 ipc_set_retval(&answer->data, rc); 86 86 /* 87 87 * answer->buffer will be cleaned up in … … 91 91 } 92 92 } else if (!size) { 93 IPC_SET_RETVAL(answer->data, EOK);93 ipc_set_retval(&answer->data, EOK); 94 94 } else { 95 IPC_SET_RETVAL(answer->data, ELIMIT);95 ipc_set_retval(&answer->data, ELIMIT); 96 96 } 97 97 } … … 103 103 { 104 104 if (answer->buffer) { 105 uintptr_t dst = IPC_GET_ARG1(answer->data);106 size_t size = IPC_GET_ARG2(answer->data);105 uintptr_t dst = ipc_get_arg1(&answer->data); 106 size_t size = ipc_get_arg2(&answer->data); 107 107 errno_t rc; 108 108 109 109 rc = copy_to_uspace((void *) dst, answer->buffer, size); 110 110 if (rc) 111 IPC_SET_RETVAL(answer->data, rc);111 ipc_set_retval(&answer->data, rc); 112 112 } 113 113 -
kernel/generic/src/ipc/ops/datawrite.c
rad40b74b rbc73be3 43 43 static errno_t request_preprocess(call_t *call, phone_t *phone) 44 44 { 45 uintptr_t src = IPC_GET_ARG1(call->data);46 size_t size = IPC_GET_ARG2(call->data);45 uintptr_t src = ipc_get_arg1(&call->data); 46 size_t size = ipc_get_arg2(&call->data); 47 47 48 48 if (size > DATA_XFER_LIMIT) { 49 int flags = IPC_GET_ARG3(call->data);49 int flags = ipc_get_arg3(&call->data); 50 50 51 51 if (flags & IPC_XF_RESTRICT) { 52 52 size = DATA_XFER_LIMIT; 53 IPC_SET_ARG2(call->data, size);53 ipc_set_arg2(&call->data, size); 54 54 } else 55 55 return ELIMIT; … … 75 75 assert(answer->buffer); 76 76 77 if (! IPC_GET_RETVAL(answer->data)) {77 if (!ipc_get_retval(&answer->data)) { 78 78 /* The recipient agreed to receive data. */ 79 uintptr_t dst = (uintptr_t) IPC_GET_ARG1(answer->data);80 size_t size = (size_t) IPC_GET_ARG2(answer->data);81 size_t max_size = (size_t) IPC_GET_ARG2(*olddata);79 uintptr_t dst = (uintptr_t)ipc_get_arg1(&answer->data); 80 size_t size = (size_t)ipc_get_arg2(&answer->data); 81 size_t max_size = (size_t)ipc_get_arg2(olddata); 82 82 83 83 if (size <= max_size) { … … 85 85 answer->buffer, size); 86 86 if (rc) 87 IPC_SET_RETVAL(answer->data, rc);87 ipc_set_retval(&answer->data, rc); 88 88 } else { 89 IPC_SET_RETVAL(answer->data, ELIMIT);89 ipc_set_retval(&answer->data, ELIMIT); 90 90 } 91 91 } -
kernel/generic/src/ipc/ops/debug.c
rad40b74b rbc73be3 47 47 { 48 48 if (answer->buffer) { 49 uintptr_t dst = IPC_GET_ARG1(answer->data);50 size_t size = IPC_GET_ARG2(answer->data);49 uintptr_t dst = ipc_get_arg1(&answer->data); 50 size_t size = ipc_get_arg2(&answer->data); 51 51 errno_t rc; 52 52 53 53 rc = copy_to_uspace((void *) dst, answer->buffer, size); 54 54 if (rc) 55 IPC_SET_RETVAL(answer->data, rc);55 ipc_set_retval(&answer->data, rc); 56 56 } 57 57 -
kernel/generic/src/ipc/ops/pagein.c
rad40b74b rbc73be3 68 68 return EOK; 69 69 70 if (! IPC_GET_RETVAL(answer->data)) {70 if (!ipc_get_retval(&answer->data)) { 71 71 72 72 pte_t pte; … … 74 74 75 75 page_table_lock(AS, true); 76 bool found = page_mapping_find(AS, IPC_GET_ARG1(answer->data),76 bool found = page_mapping_find(AS, ipc_get_arg1(&answer->data), 77 77 false, &pte); 78 78 if (found & PTE_PRESENT(&pte)) { … … 86 86 frame_reference_add(ADDR2PFN(frame)); 87 87 } 88 IPC_SET_ARG1(answer->data, frame);88 ipc_set_arg1(&answer->data, frame); 89 89 } else { 90 IPC_SET_RETVAL(answer->data, ENOENT);90 ipc_set_retval(&answer->data, ENOENT); 91 91 } 92 92 page_table_unlock(AS, true); -
kernel/generic/src/ipc/ops/sharein.c
rad40b74b rbc73be3 43 43 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata) 44 44 { 45 if (! IPC_GET_RETVAL(answer->data)) {45 if (!ipc_get_retval(&answer->data)) { 46 46 irq_spinlock_lock(&answer->sender->lock, true); 47 47 as_t *as = answer->sender->as; … … 49 49 50 50 uintptr_t dst_base = (uintptr_t) -1; 51 errno_t rc = as_area_share(AS, IPC_GET_ARG1(answer->data),52 IPC_GET_ARG1(*olddata), as, IPC_GET_ARG2(answer->data),53 &dst_base, IPC_GET_ARG2(*olddata));54 IPC_SET_ARG5(answer->data, dst_base);55 IPC_SET_RETVAL(answer->data, rc);51 errno_t rc = as_area_share(AS, ipc_get_arg1(&answer->data), 52 ipc_get_arg1(olddata), as, ipc_get_arg2(&answer->data), 53 &dst_base, ipc_get_arg2(olddata)); 54 ipc_set_arg5(&answer->data, dst_base); 55 ipc_set_retval(&answer->data, rc); 56 56 } 57 57 -
kernel/generic/src/ipc/ops/shareout.c
rad40b74b rbc73be3 44 44 static errno_t request_preprocess(call_t *call, phone_t *phone) 45 45 { 46 size_t size = as_area_get_size( IPC_GET_ARG1(call->data));46 size_t size = as_area_get_size(ipc_get_arg1(&call->data)); 47 47 48 48 if (!size) 49 49 return EPERM; 50 IPC_SET_ARG2(call->data, size);50 ipc_set_arg2(&call->data, size); 51 51 52 52 return EOK; … … 57 57 errno_t rc = EOK; 58 58 59 if (! IPC_GET_RETVAL(answer->data)) {59 if (!ipc_get_retval(&answer->data)) { 60 60 /* Accepted, handle as_area receipt */ 61 61 … … 65 65 66 66 uintptr_t dst_base = (uintptr_t) -1; 67 rc = as_area_share(as, IPC_GET_ARG1(*olddata),68 IPC_GET_ARG2(*olddata), AS, IPC_GET_ARG3(*olddata),69 &dst_base, IPC_GET_ARG1(answer->data));67 rc = as_area_share(as, ipc_get_arg1(olddata), 68 ipc_get_arg2(olddata), AS, ipc_get_arg3(olddata), 69 &dst_base, ipc_get_arg1(&answer->data)); 70 70 71 71 if (rc == EOK) { 72 rc = copy_to_uspace((void *) IPC_GET_ARG2(answer->data),72 rc = copy_to_uspace((void *) ipc_get_arg2(&answer->data), 73 73 &dst_base, sizeof(dst_base)); 74 74 } 75 75 76 IPC_SET_RETVAL(answer->data, rc);76 ipc_set_retval(&answer->data, rc); 77 77 } 78 78 -
kernel/generic/src/ipc/ops/stchngath.c
rad40b74b rbc73be3 46 46 47 47 kobject_t *sender_obj = kobject_get(TASK, 48 (cap_handle_t) IPC_GET_ARG5(call->data), KOBJECT_TYPE_PHONE);48 (cap_handle_t) ipc_get_arg5(&call->data), KOBJECT_TYPE_PHONE); 49 49 if (!sender_obj) 50 50 return ENOENT; … … 62 62 63 63 /* Remember the third party task hash. */ 64 IPC_SET_ARG5(call->data, (sysarg_t) other_task_s);64 ipc_set_arg5(&call->data, (sysarg_t) other_task_s); 65 65 66 66 kobject_put(sender_obj); … … 72 72 errno_t rc = EOK; 73 73 74 if (! IPC_GET_RETVAL(answer->data)) {74 if (!ipc_get_retval(&answer->data)) { 75 75 /* The recipient authorized the change of state. */ 76 76 task_t *other_task_s; … … 78 78 79 79 kobject_t *recipient_obj = kobject_get(TASK, 80 (cap_handle_t) IPC_GET_ARG1(answer->data),80 (cap_handle_t) ipc_get_arg1(&answer->data), 81 81 KOBJECT_TYPE_PHONE); 82 82 if (!recipient_obj) { 83 IPC_SET_RETVAL(answer->data, ENOENT);83 ipc_set_retval(&answer->data, ENOENT); 84 84 return ENOENT; 85 85 } … … 88 88 if (recipient_obj->phone->state != IPC_PHONE_CONNECTED) { 89 89 mutex_unlock(&recipient_obj->phone->lock); 90 IPC_SET_RETVAL(answer->data, EINVAL);90 ipc_set_retval(&answer->data, EINVAL); 91 91 kobject_put(recipient_obj); 92 92 return EINVAL; … … 94 94 95 95 other_task_r = recipient_obj->phone->callee->task; 96 other_task_s = (task_t *) IPC_GET_ARG5(*olddata);96 other_task_s = (task_t *) ipc_get_arg5(olddata); 97 97 98 98 /* … … 101 101 */ 102 102 if (other_task_r != other_task_s) { 103 IPC_SET_RETVAL(answer->data, EINVAL);103 ipc_set_retval(&answer->data, EINVAL); 104 104 rc = EINVAL; 105 105 } else { 106 106 rc = event_task_notify_5(other_task_r, 107 107 EVENT_TASK_STATE_CHANGE, false, 108 IPC_GET_ARG1(*olddata),109 IPC_GET_ARG2(*olddata),110 IPC_GET_ARG3(*olddata),108 ipc_get_arg1(olddata), 109 ipc_get_arg2(olddata), 110 ipc_get_arg3(olddata), 111 111 LOWER32(olddata->task_id), 112 112 UPPER32(olddata->task_id)); 113 IPC_SET_RETVAL(answer->data, rc);113 ipc_set_retval(&answer->data, rc); 114 114 } 115 115 -
kernel/generic/src/ipc/sysipc.c
rad40b74b rbc73be3 131 131 static inline bool answer_need_old(call_t *call) 132 132 { 133 switch ( IPC_GET_IMETHOD(call->data)) {133 switch (ipc_get_imethod(&call->data)) { 134 134 case IPC_M_CONNECT_TO_ME: 135 135 case IPC_M_CONNECT_ME_TO: … … 192 192 spinlock_unlock(&answer->forget_lock); 193 193 194 if ((errno_t) IPC_GET_RETVAL(answer->data) == EHANGUP) {194 if ((errno_t) ipc_get_retval(&answer->data) == EHANGUP) { 195 195 phone_t *phone = answer->caller_phone; 196 196 mutex_lock(&phone->lock); … … 223 223 static errno_t request_preprocess(call_t *call, phone_t *phone) 224 224 { 225 call->request_method = IPC_GET_IMETHOD(call->data);225 call->request_method = ipc_get_imethod(&call->data); 226 226 return SYSIPC_OP(request_preprocess, call, phone); 227 227 } … … 238 238 static void process_answer(call_t *call) 239 239 { 240 if (((errno_t) IPC_GET_RETVAL(call->data) == EHANGUP) &&240 if (((errno_t) ipc_get_retval(&call->data) == EHANGUP) && 241 241 (call->flags & IPC_CALL_FORWARDED)) 242 IPC_SET_RETVAL(call->data, EFORWARD);242 ipc_set_retval(&call->data, EFORWARD); 243 243 244 244 SYSIPC_OP(answer_process, call); … … 326 326 process_answer(call); 327 327 } else 328 IPC_SET_RETVAL(call->data, rc);328 ipc_set_retval(&call->data, rc); 329 329 330 330 memcpy(data->args, call->data.args, sizeof(data->args)); … … 385 385 } 386 386 387 IPC_SET_IMETHOD(call->data, imethod);388 IPC_SET_ARG1(call->data, arg1);389 IPC_SET_ARG2(call->data, arg2);390 IPC_SET_ARG3(call->data, arg3);387 ipc_set_imethod(&call->data, imethod); 388 ipc_set_arg1(&call->data, arg1); 389 ipc_set_arg2(&call->data, arg2); 390 ipc_set_arg3(&call->data, arg3); 391 391 392 392 /* … … 394 394 * the limits of the fast version. 395 395 */ 396 IPC_SET_ARG5(call->data, 0);396 ipc_set_arg5(&call->data, 0); 397 397 398 398 /* Set the user-defined label */ … … 505 505 } 506 506 507 if (!method_is_forwardable( IPC_GET_IMETHOD(call->data))) {507 if (!method_is_forwardable(ipc_get_imethod(&call->data))) { 508 508 rc = EPERM; 509 509 goto error; … … 518 518 * If the interface and method is immutable, don't change anything. 519 519 */ 520 if (!method_is_immutable( IPC_GET_IMETHOD(call->data))) {521 if (method_is_system( IPC_GET_IMETHOD(call->data))) {522 if ( IPC_GET_IMETHOD(call->data) ==520 if (!method_is_immutable(ipc_get_imethod(&call->data))) { 521 if (method_is_system(ipc_get_imethod(&call->data))) { 522 if (ipc_get_imethod(&call->data) == 523 523 IPC_M_CONNECT_TO_ME) { 524 524 kobject_put((kobject_t *) call->priv); 525 525 call->priv = 0; 526 526 cap_free(TASK, 527 (cap_handle_t) IPC_GET_ARG5(call->data));527 (cap_handle_t) ipc_get_arg5(&call->data)); 528 528 } 529 529 530 IPC_SET_ARG1(call->data, imethod);531 IPC_SET_ARG2(call->data, arg1);532 IPC_SET_ARG3(call->data, arg2);530 ipc_set_arg1(&call->data, imethod); 531 ipc_set_arg2(&call->data, arg1); 532 ipc_set_arg3(&call->data, arg2); 533 533 534 534 if (slow) 535 IPC_SET_ARG4(call->data, arg3);535 ipc_set_arg4(&call->data, arg3); 536 536 537 537 /* … … 540 540 */ 541 541 } else { 542 IPC_SET_IMETHOD(call->data, imethod);543 IPC_SET_ARG1(call->data, arg1);544 IPC_SET_ARG2(call->data, arg2);542 ipc_set_imethod(&call->data, imethod); 543 ipc_set_arg1(&call->data, arg1); 544 ipc_set_arg2(&call->data, arg2); 545 545 if (slow) { 546 IPC_SET_ARG3(call->data, arg3);547 IPC_SET_ARG4(call->data, arg4);548 IPC_SET_ARG5(call->data, arg5);546 ipc_set_arg3(&call->data, arg3); 547 ipc_set_arg4(&call->data, arg4); 548 ipc_set_arg5(&call->data, arg5); 549 549 } 550 550 } … … 563 563 564 564 error: 565 IPC_SET_RETVAL(call->data, EFORWARD);565 ipc_set_retval(&call->data, EFORWARD); 566 566 (void) answer_preprocess(call, need_old ? &old : NULL); 567 567 if (after_forward) … … 632 632 633 633 return sys_ipc_forward_common(chandle, phandle, 634 IPC_GET_IMETHOD(newdata), IPC_GET_ARG1(newdata),635 IPC_GET_ARG2(newdata), IPC_GET_ARG3(newdata),636 IPC_GET_ARG4(newdata), IPC_GET_ARG5(newdata), mode, true);634 ipc_get_imethod(&newdata), ipc_get_arg1(&newdata), 635 ipc_get_arg2(&newdata), ipc_get_arg3(&newdata), 636 ipc_get_arg4(&newdata), ipc_get_arg5(&newdata), mode, true); 637 637 } 638 638 … … 671 671 saved = false; 672 672 673 IPC_SET_RETVAL(call->data, retval);674 IPC_SET_ARG1(call->data, arg1);675 IPC_SET_ARG2(call->data, arg2);676 IPC_SET_ARG3(call->data, arg3);677 IPC_SET_ARG4(call->data, arg4);673 ipc_set_retval(&call->data, retval); 674 ipc_set_arg1(&call->data, arg1); 675 ipc_set_arg2(&call->data, arg2); 676 ipc_set_arg3(&call->data, arg3); 677 ipc_set_arg4(&call->data, arg4); 678 678 679 679 /* … … 681 681 * the limits of the fast version. 682 682 */ 683 IPC_SET_ARG5(call->data, 0);683 ipc_set_arg5(&call->data, 0); 684 684 errno_t rc = answer_preprocess(call, saved ? &saved_data : NULL); 685 685 … … 841 841 842 842 error: 843 if ( CAP_HANDLE_VALID(handle))843 if (cap_handle_valid(handle)) 844 844 cap_free(TASK, handle); 845 845 … … 858 858 saved = false; 859 859 860 IPC_SET_RETVAL(call->data, EPARTY);860 ipc_set_retval(&call->data, EPARTY); 861 861 (void) answer_preprocess(call, saved ? &saved_data : NULL); 862 862 call->flags |= IPC_CALL_AUTO_REPLY; -
kernel/generic/src/lib/elf.c
rad40b74b rbc73be3 50 50 #include <lib/elf_load.h> 51 51 52 static const char *error_codes[] = { 53 "no error", 54 "invalid image", 55 "address space error", 56 "incompatible image", 57 "unsupported image type", 58 "irrecoverable error" 59 }; 60 61 static int load_segment(elf_segment_header_t *, elf_header_t *, as_t *); 52 static errno_t load_segment(elf_segment_header_t *, elf_header_t *, as_t *); 62 53 63 54 /** ELF loader … … 67 58 * @param flags A combination of ELD_F_* 68 59 * 69 * @return E E_OK on success60 * @return EOK on success 70 61 * 71 62 */ 72 unsigned int elf_load(elf_header_t *header, as_t *as)63 errno_t elf_load(elf_header_t *header, as_t *as) 73 64 { 74 65 /* Identify ELF */ … … 77 68 (header->e_ident[EI_MAG2] != ELFMAG2) || 78 69 (header->e_ident[EI_MAG3] != ELFMAG3)) 79 return E E_INVALID;70 return EINVAL; 80 71 81 72 /* Identify ELF compatibility */ … … 85 76 (header->e_version != EV_CURRENT) || 86 77 (header->e_ident[EI_CLASS] != ELF_CLASS)) 87 return E E_INCOMPATIBLE;78 return EINVAL; 88 79 89 80 if (header->e_phentsize != sizeof(elf_segment_header_t)) 90 return E E_INCOMPATIBLE;81 return EINVAL; 91 82 92 83 /* Check if the object type is supported. */ 93 84 if (header->e_type != ET_EXEC) 94 return E E_UNSUPPORTED;85 return ENOTSUP; 95 86 96 87 /* Check if the ELF image starts on a page boundary */ 97 88 if (ALIGN_UP((uintptr_t) header, PAGE_SIZE) != (uintptr_t) header) 98 return E E_UNSUPPORTED;89 return ENOTSUP; 99 90 100 91 /* Walk through all segment headers and process them. */ … … 108 99 continue; 109 100 110 int rc = load_segment(seghdr, header, as);111 if (rc != E E_OK)101 errno_t rc = load_segment(seghdr, header, as); 102 if (rc != EOK) 112 103 return rc; 113 104 } 114 105 115 return EE_OK; 116 } 117 118 /** Print error message according to error code. 119 * 120 * @param rc Return code returned by elf_load(). 121 * 122 * @return NULL terminated description of error. 123 * 124 */ 125 const char *elf_error(unsigned int rc) 126 { 127 assert(rc < sizeof(error_codes) / sizeof(char *)); 128 129 return error_codes[rc]; 106 return EOK; 130 107 } 131 108 … … 136 113 * @param as Address space into wich the ELF is being loaded. 137 114 * 138 * @return E E_OK on success, error code otherwise.115 * @return EOK on success, error code otherwise. 139 116 * 140 117 */ 141 int load_segment(elf_segment_header_t *entry, elf_header_t *elf, as_t *as)118 errno_t load_segment(elf_segment_header_t *entry, elf_header_t *elf, as_t *as) 142 119 { 143 120 mem_backend_data_t backend_data; … … 146 123 if ((entry->p_offset % entry->p_align) != 147 124 (entry->p_vaddr % entry->p_align)) 148 return E E_INVALID;125 return EINVAL; 149 126 } 150 127 … … 177 154 AS_AREA_ATTR_NONE, &elf_backend, &backend_data, &base, 0); 178 155 if (!area) 179 return E E_MEMORY;156 return ENOMEM; 180 157 181 158 /* … … 184 161 */ 185 162 186 return E E_OK;163 return EOK; 187 164 } 188 165 -
kernel/generic/src/lib/ra.c
rad40b74b rbc73be3 67 67 68 68 /** Return the hash of the key */ 69 static size_t used_key_hash( void *key)70 { 71 uintptr_t *base = (uintptr_t *)key;69 static size_t used_key_hash(const void *key) 70 { 71 const uintptr_t *base = key; 72 72 return hash_mix(*base); 73 73 } 74 74 75 75 /** Return true if the key is equal to the item's lookup key */ 76 static bool used_key_equal( void *key, const ht_link_t *item)77 { 78 uintptr_t *base = (uintptr_t *)key;76 static bool used_key_equal(const void *key, const ht_link_t *item) 77 { 78 const uintptr_t *base = key; 79 79 ra_segment_t *seg = hash_table_get_inst(item, ra_segment_t, uh_link); 80 80 return seg->base == *base; -
kernel/generic/src/lib/str.c
rad40b74b rbc73be3 1 1 /* 2 2 * Copyright (c) 2001-2004 Jakub Jermar 3 * Copyright (c) 2005 Martin Decky 4 * Copyright (c) 2008 Jiri Svoboda 5 * Copyright (c) 2011 Martin Sucha 6 * Copyright (c) 2011 Oleg Romanenko 3 7 * All rights reserved. 4 8 * … … 103 107 104 108 #include <str.h> 105 #include <cpu.h> 106 #include <arch/asm.h> 107 #include <arch.h> 109 110 #include <assert.h> 108 111 #include <errno.h> 112 #include <stdbool.h> 113 #include <stddef.h> 114 #include <stdint.h> 115 #include <stdlib.h> 116 109 117 #include <align.h> 110 #include <assert.h>111 118 #include <macros.h> 112 #include <stdlib.h>113 119 114 120 /** Check the condition if wchar_t is signed */ … … 616 622 } 617 623 624 /** Convert wide string to string. 625 * 626 * Convert wide string @a src to string. The output is written to the buffer 627 * specified by @a dest and @a size. @a size must be non-zero and the string 628 * written will always be well-formed. 629 * 630 * @param dest Destination buffer. 631 * @param size Size of the destination buffer. 632 * @param src Source wide string. 633 */ 634 void wstr_to_str(char *dest, size_t size, const wchar_t *src) 635 { 636 wchar_t ch; 637 size_t src_idx; 638 size_t dest_off; 639 640 /* There must be space for a null terminator in the buffer. */ 641 assert(size > 0); 642 643 src_idx = 0; 644 dest_off = 0; 645 646 while ((ch = src[src_idx++]) != 0) { 647 if (chr_encode(ch, dest, &dest_off, size - 1) != EOK) 648 break; 649 } 650 651 dest[dest_off] = '\0'; 652 } 653 654 /** Find first occurence of character in string. 655 * 656 * @param str String to search. 657 * @param ch Character to look for. 658 * 659 * @return Pointer to character in @a str or NULL if not found. 660 */ 661 char *str_chr(const char *str, wchar_t ch) 662 { 663 wchar_t acc; 664 size_t off = 0; 665 size_t last = 0; 666 667 while ((acc = str_decode(str, &off, STR_NO_LIMIT)) != 0) { 668 if (acc == ch) 669 return (char *) (str + last); 670 last = off; 671 } 672 673 return NULL; 674 } 675 676 /** Insert a wide character into a wide string. 677 * 678 * Insert a wide character into a wide string at position 679 * @a pos. The characters after the position are shifted. 680 * 681 * @param str String to insert to. 682 * @param ch Character to insert to. 683 * @param pos Character index where to insert. 684 * @param max_pos Characters in the buffer. 685 * 686 * @return True if the insertion was sucessful, false if the position 687 * is out of bounds. 688 * 689 */ 690 bool wstr_linsert(wchar_t *str, wchar_t ch, size_t pos, size_t max_pos) 691 { 692 size_t len = wstr_length(str); 693 694 if ((pos > len) || (pos + 1 > max_pos)) 695 return false; 696 697 size_t i; 698 for (i = len; i + 1 > pos; i--) 699 str[i + 1] = str[i]; 700 701 str[pos] = ch; 702 703 return true; 704 } 705 706 /** Remove a wide character from a wide string. 707 * 708 * Remove a wide character from a wide string at position 709 * @a pos. The characters after the position are shifted. 710 * 711 * @param str String to remove from. 712 * @param pos Character index to remove. 713 * 714 * @return True if the removal was sucessful, false if the position 715 * is out of bounds. 716 * 717 */ 718 bool wstr_remove(wchar_t *str, size_t pos) 719 { 720 size_t len = wstr_length(str); 721 722 if (pos >= len) 723 return false; 724 725 size_t i; 726 for (i = pos + 1; i <= len; i++) 727 str[i - 1] = str[i]; 728 729 return true; 730 } 731 618 732 /** Duplicate string. 619 733 * … … 675 789 str_ncpy(dest, size + 1, src, size); 676 790 return dest; 677 }678 679 /** Convert wide string to string.680 *681 * Convert wide string @a src to string. The output is written to the buffer682 * specified by @a dest and @a size. @a size must be non-zero and the string683 * written will always be well-formed.684 *685 * @param dest Destination buffer.686 * @param size Size of the destination buffer.687 * @param src Source wide string.688 */689 void wstr_to_str(char *dest, size_t size, const wchar_t *src)690 {691 wchar_t ch;692 size_t src_idx;693 size_t dest_off;694 695 /* There must be space for a null terminator in the buffer. */696 assert(size > 0);697 698 src_idx = 0;699 dest_off = 0;700 701 while ((ch = src[src_idx++]) != 0) {702 if (chr_encode(ch, dest, &dest_off, size - 1) != EOK)703 break;704 }705 706 dest[dest_off] = '\0';707 }708 709 /** Find first occurence of character in string.710 *711 * @param str String to search.712 * @param ch Character to look for.713 *714 * @return Pointer to character in @a str or NULL if not found.715 *716 */717 char *str_chr(const char *str, wchar_t ch)718 {719 wchar_t acc;720 size_t off = 0;721 size_t last = 0;722 723 while ((acc = str_decode(str, &off, STR_NO_LIMIT)) != 0) {724 if (acc == ch)725 return (char *) (str + last);726 last = off;727 }728 729 return NULL;730 }731 732 /** Insert a wide character into a wide string.733 *734 * Insert a wide character into a wide string at position735 * @a pos. The characters after the position are shifted.736 *737 * @param str String to insert to.738 * @param ch Character to insert to.739 * @param pos Character index where to insert.740 * @param max_pos Characters in the buffer.741 *742 * @return True if the insertion was sucessful, false if the position743 * is out of bounds.744 *745 */746 bool wstr_linsert(wchar_t *str, wchar_t ch, size_t pos, size_t max_pos)747 {748 size_t len = wstr_length(str);749 750 if ((pos > len) || (pos + 1 > max_pos))751 return false;752 753 size_t i;754 for (i = len; i + 1 > pos; i--)755 str[i + 1] = str[i];756 757 str[pos] = ch;758 759 return true;760 }761 762 /** Remove a wide character from a wide string.763 *764 * Remove a wide character from a wide string at position765 * @a pos. The characters after the position are shifted.766 *767 * @param str String to remove from.768 * @param pos Character index to remove.769 *770 * @return True if the removal was sucessful, false if the position771 * is out of bounds.772 *773 */774 bool wstr_remove(wchar_t *str, size_t pos)775 {776 size_t len = wstr_length(str);777 778 if (pos >= len)779 return false;780 781 size_t i;782 for (i = pos + 1; i <= len; i++)783 str[i - 1] = str[i];784 785 return true;786 }787 788 /** Convert string to uint64_t (internal variant).789 *790 * @param nptr Pointer to string.791 * @param endptr Pointer to the first invalid character is stored here.792 * @param base Zero or number between 2 and 36 inclusive.793 * @param neg Indication of unary minus is stored here.794 * @apram result Result of the conversion.795 *796 * @return EOK if conversion was successful.797 *798 */799 static errno_t str_uint(const char *nptr, char **endptr, unsigned int base,800 bool *neg, uint64_t *result)801 {802 assert(endptr != NULL);803 assert(neg != NULL);804 assert(result != NULL);805 806 *neg = false;807 const char *str = nptr;808 809 /* Ignore leading whitespace */810 while (isspace(*str))811 str++;812 813 if (*str == '-') {814 *neg = true;815 str++;816 } else if (*str == '+')817 str++;818 819 if (base == 0) {820 /* Decode base if not specified */821 base = 10;822 823 if (*str == '0') {824 base = 8;825 str++;826 827 switch (*str) {828 case 'b':829 case 'B':830 base = 2;831 str++;832 break;833 case 'o':834 case 'O':835 base = 8;836 str++;837 break;838 case 'd':839 case 'D':840 case 't':841 case 'T':842 base = 10;843 str++;844 break;845 case 'x':846 case 'X':847 base = 16;848 str++;849 break;850 default:851 str--;852 }853 }854 } else {855 /* Check base range */856 if ((base < 2) || (base > 36)) {857 *endptr = (char *) str;858 return EINVAL;859 }860 }861 862 *result = 0;863 const char *startstr = str;864 865 while (*str != 0) {866 unsigned int digit;867 868 if ((*str >= 'a') && (*str <= 'z'))869 digit = *str - 'a' + 10;870 else if ((*str >= 'A') && (*str <= 'Z'))871 digit = *str - 'A' + 10;872 else if ((*str >= '0') && (*str <= '9'))873 digit = *str - '0';874 else875 break;876 877 if (digit >= base)878 break;879 880 uint64_t prev = *result;881 *result = (*result) * base + digit;882 883 if (*result < prev) {884 /* Overflow */885 *endptr = (char *) str;886 return EOVERFLOW;887 }888 889 str++;890 }891 892 if (str == startstr) {893 /*894 * No digits were decoded => first invalid character is895 * the first character of the string.896 */897 str = nptr;898 }899 900 *endptr = (char *) str;901 902 if (str == nptr)903 return EINVAL;904 905 return EOK;906 }907 908 /** Convert string to uint64_t.909 *910 * @param nptr Pointer to string.911 * @param endptr If not NULL, pointer to the first invalid character912 * is stored here.913 * @param base Zero or number between 2 and 36 inclusive.914 * @param strict Do not allow any trailing characters.915 * @param result Result of the conversion.916 *917 * @return EOK if conversion was successful.918 *919 */920 errno_t str_uint64_t(const char *nptr, char **endptr, unsigned int base,921 bool strict, uint64_t *result)922 {923 assert(result != NULL);924 925 bool neg;926 char *lendptr;927 errno_t ret = str_uint(nptr, &lendptr, base, &neg, result);928 929 if (endptr != NULL)930 *endptr = (char *) lendptr;931 932 if (ret != EOK)933 return ret;934 935 /* Do not allow negative values */936 if (neg)937 return EINVAL;938 939 /*940 * Check whether we are at the end of941 * the string in strict mode942 */943 if ((strict) && (*lendptr != 0))944 return EINVAL;945 946 return EOK;947 791 } 948 792 -
kernel/generic/src/main/kinit.c
rad40b74b rbc73be3 291 291 log(LF_OTHER, LVL_ERROR, 292 292 "init[%zu]: Init binary load failed " 293 "(error %s, loader status % u)", i,294 str_error_name(rc), programs[i].loader_status);293 "(error %s, loader status %s)", i, 294 str_error_name(rc), str_error_name(programs[i].loader_status)); 295 295 } 296 296 } -
kernel/generic/src/main/main.c
rad40b74b rbc73be3 160 160 * 161 161 */ 162 NO_TRACE void main_bsp(void)162 _NO_TRACE void main_bsp(void) 163 163 { 164 164 config.cpu_count = 1; -
kernel/generic/src/mm/as.c
rad40b74b rbc73be3 127 127 static void used_space_shorten_ival(used_space_ival_t *, size_t); 128 128 129 NO_TRACE static errno_t as_constructor(void *obj, unsigned int flags)129 _NO_TRACE static errno_t as_constructor(void *obj, unsigned int flags) 130 130 { 131 131 as_t *as = (as_t *) obj; … … 137 137 } 138 138 139 NO_TRACE static size_t as_destructor(void *obj)139 _NO_TRACE static size_t as_destructor(void *obj) 140 140 { 141 141 return as_destructor_arch((as_t *) obj); … … 281 281 * 282 282 */ 283 NO_TRACE void as_hold(as_t *as)283 _NO_TRACE void as_hold(as_t *as) 284 284 { 285 285 refcount_up(&as->refcount); … … 294 294 * 295 295 */ 296 NO_TRACE void as_release(as_t *as)296 _NO_TRACE void as_release(as_t *as) 297 297 { 298 298 if (refcount_down(&as->refcount)) … … 340 340 * @return True if the two areas conflict, false otherwise. 341 341 */ 342 NO_TRACE static bool area_is_conflicting(uintptr_t addr,342 _NO_TRACE static bool area_is_conflicting(uintptr_t addr, 343 343 size_t count, bool guarded, as_area_t *area) 344 344 { … … 380 380 * 381 381 */ 382 NO_TRACE static bool check_area_conflicts(as_t *as, uintptr_t addr,382 _NO_TRACE static bool check_area_conflicts(as_t *as, uintptr_t addr, 383 383 size_t count, bool guarded, as_area_t *avoid) 384 384 { … … 474 474 * 475 475 */ 476 NO_TRACE static uintptr_t as_get_unmapped_area(as_t *as, uintptr_t bound,476 _NO_TRACE static uintptr_t as_get_unmapped_area(as_t *as, uintptr_t bound, 477 477 size_t size, bool guarded) 478 478 { … … 580 580 * @param pagemap Pagemap 581 581 */ 582 NO_TRACE void as_pagemap_initialize(as_pagemap_t *pagemap)582 _NO_TRACE void as_pagemap_initialize(as_pagemap_t *pagemap) 583 583 { 584 584 odict_initialize(&pagemap->map, as_pagemap_getkey, as_pagemap_cmp); … … 591 591 * @param pagemap Pagemap 592 592 */ 593 NO_TRACE void as_pagemap_finalize(as_pagemap_t *pagemap)593 _NO_TRACE void as_pagemap_finalize(as_pagemap_t *pagemap) 594 594 { 595 595 as_page_mapping_t *mapping = as_pagemap_first(pagemap); … … 606 606 * @return First mapping or @c NULL if there is none 607 607 */ 608 NO_TRACE as_page_mapping_t *as_pagemap_first(as_pagemap_t *pagemap)608 _NO_TRACE as_page_mapping_t *as_pagemap_first(as_pagemap_t *pagemap) 609 609 { 610 610 odlink_t *odlink; … … 622 622 * @return Next mapping or @c NULL if @a cur is the last one 623 623 */ 624 NO_TRACE as_page_mapping_t *as_pagemap_next(as_page_mapping_t *cur)624 _NO_TRACE as_page_mapping_t *as_pagemap_next(as_page_mapping_t *cur) 625 625 { 626 626 odlink_t *odlink; … … 640 640 * @return EOK on succcess or ENOENT if no mapping found 641 641 */ 642 NO_TRACE errno_t as_pagemap_find(as_pagemap_t *pagemap, uintptr_t vaddr,642 _NO_TRACE errno_t as_pagemap_find(as_pagemap_t *pagemap, uintptr_t vaddr, 643 643 uintptr_t *rframe) 644 644 { … … 663 663 * @param frame Physical frame address 664 664 */ 665 NO_TRACE void as_pagemap_insert(as_pagemap_t *pagemap, uintptr_t vaddr,665 _NO_TRACE void as_pagemap_insert(as_pagemap_t *pagemap, uintptr_t vaddr, 666 666 uintptr_t frame) 667 667 { … … 680 680 * @param mapping Mapping 681 681 */ 682 NO_TRACE void as_pagemap_remove(as_page_mapping_t *mapping)682 _NO_TRACE void as_pagemap_remove(as_page_mapping_t *mapping) 683 683 { 684 684 odict_remove(&mapping->lpagemap); … … 693 693 * 694 694 */ 695 NO_TRACE static void sh_info_remove_reference(share_info_t *sh_info)695 _NO_TRACE static void sh_info_remove_reference(share_info_t *sh_info) 696 696 { 697 697 bool dealloc = false; … … 861 861 * 862 862 */ 863 NO_TRACE static as_area_t *find_area_and_lock(as_t *as, uintptr_t va)863 _NO_TRACE static as_area_t *find_area_and_lock(as_t *as, uintptr_t va) 864 864 { 865 865 assert(mutex_locked(&as->lock)); … … 1305 1305 * 1306 1306 */ 1307 NO_TRACE bool as_area_check_access(as_area_t *area, pf_access_t access)1307 _NO_TRACE bool as_area_check_access(as_area_t *area, pf_access_t access) 1308 1308 { 1309 1309 assert(mutex_locked(&area->lock)); … … 1328 1328 * 1329 1329 */ 1330 NO_TRACE static unsigned int area_flags_to_page_flags(unsigned int aflags)1330 _NO_TRACE static unsigned int area_flags_to_page_flags(unsigned int aflags) 1331 1331 { 1332 1332 unsigned int flags = PAGE_USER | PAGE_PRESENT; … … 1698 1698 * 1699 1699 */ 1700 NO_TRACE unsigned int as_area_get_flags(as_area_t *area)1700 _NO_TRACE unsigned int as_area_get_flags(as_area_t *area) 1701 1701 { 1702 1702 assert(mutex_locked(&area->lock)); … … 1746 1746 * 1747 1747 */ 1748 NO_TRACE pte_t *page_table_create(unsigned int flags)1748 _NO_TRACE pte_t *page_table_create(unsigned int flags) 1749 1749 { 1750 1750 assert(as_operations); … … 1761 1761 * 1762 1762 */ 1763 NO_TRACE void page_table_destroy(pte_t *page_table)1763 _NO_TRACE void page_table_destroy(pte_t *page_table) 1764 1764 { 1765 1765 assert(as_operations); … … 1782 1782 * 1783 1783 */ 1784 NO_TRACE void page_table_lock(as_t *as, bool lock)1784 _NO_TRACE void page_table_lock(as_t *as, bool lock) 1785 1785 { 1786 1786 assert(as_operations); … … 1796 1796 * 1797 1797 */ 1798 NO_TRACE void page_table_unlock(as_t *as, bool unlock)1798 _NO_TRACE void page_table_unlock(as_t *as, bool unlock) 1799 1799 { 1800 1800 assert(as_operations); … … 1811 1811 * are locked, otherwise false. 1812 1812 */ 1813 NO_TRACE bool page_table_locked(as_t *as)1813 _NO_TRACE bool page_table_locked(as_t *as) 1814 1814 { 1815 1815 assert(as_operations); -
kernel/generic/src/mm/backend_user.c
rad40b74b rbc73be3 119 119 120 120 ipc_data_t data = { }; 121 IPC_SET_IMETHOD(data, IPC_M_PAGE_IN);122 IPC_SET_ARG1(data, upage - area->base);123 IPC_SET_ARG2(data, PAGE_SIZE);124 IPC_SET_ARG3(data, pager_info->id1);125 IPC_SET_ARG4(data, pager_info->id2);126 IPC_SET_ARG5(data, pager_info->id3);121 ipc_set_imethod(&data, IPC_M_PAGE_IN); 122 ipc_set_arg1(&data, upage - area->base); 123 ipc_set_arg2(&data, PAGE_SIZE); 124 ipc_set_arg3(&data, pager_info->id1); 125 ipc_set_arg4(&data, pager_info->id2); 126 ipc_set_arg5(&data, pager_info->id3); 127 127 128 128 errno_t rc = ipc_req_internal(pager_info->pager, &data, (sysarg_t) true); … … 136 136 } 137 137 138 if ( IPC_GET_RETVAL(data) != EOK)138 if (ipc_get_retval(&data) != EOK) 139 139 return AS_PF_FAULT; 140 140 … … 145 145 */ 146 146 147 uintptr_t frame = IPC_GET_ARG1(data);147 uintptr_t frame = ipc_get_arg1(&data); 148 148 page_mapping_insert(AS, upage, frame, as_area_get_flags(area)); 149 149 if (!used_space_insert(&area->used_space, upage, 1)) -
kernel/generic/src/mm/frame.c
rad40b74b rbc73be3 79 79 * 80 80 */ 81 NO_TRACE static void frame_initialize(frame_t *frame)81 _NO_TRACE static void frame_initialize(frame_t *frame) 82 82 { 83 83 frame->refcount = 0; … … 100 100 * 101 101 */ 102 NO_TRACE static size_t zones_insert_zone(pfn_t base, size_t count,102 _NO_TRACE static size_t zones_insert_zone(pfn_t base, size_t count, 103 103 zone_flags_t flags) 104 104 { … … 156 156 * 157 157 */ 158 NO_TRACE static size_t frame_total_free_get_internal(void)158 _NO_TRACE static size_t frame_total_free_get_internal(void) 159 159 { 160 160 size_t total = 0; … … 167 167 } 168 168 169 NO_TRACE size_t frame_total_free_get(void)169 _NO_TRACE size_t frame_total_free_get(void) 170 170 { 171 171 size_t total; … … 190 190 * 191 191 */ 192 NO_TRACE size_t find_zone(pfn_t frame, size_t count, size_t hint)192 _NO_TRACE size_t find_zone(pfn_t frame, size_t count, size_t hint) 193 193 { 194 194 if (hint >= zones.count) … … 211 211 212 212 /** @return True if zone can allocate specified number of frames */ 213 NO_TRACE static bool zone_can_alloc(zone_t *zone, size_t count,213 _NO_TRACE static bool zone_can_alloc(zone_t *zone, size_t count, 214 214 pfn_t constraint) 215 215 { … … 239 239 * 240 240 */ 241 NO_TRACE static size_t find_free_zone_all(size_t count, zone_flags_t flags,241 _NO_TRACE static size_t find_free_zone_all(size_t count, zone_flags_t flags, 242 242 pfn_t constraint, size_t hint) 243 243 { … … 265 265 * 266 266 */ 267 NO_TRACE static bool is_high_priority(pfn_t base, size_t count)267 _NO_TRACE static bool is_high_priority(pfn_t base, size_t count) 268 268 { 269 269 return (base + count <= FRAME_LOWPRIO); … … 285 285 * 286 286 */ 287 NO_TRACE static size_t find_free_zone_lowprio(size_t count, zone_flags_t flags,287 _NO_TRACE static size_t find_free_zone_lowprio(size_t count, zone_flags_t flags, 288 288 pfn_t constraint, size_t hint) 289 289 { … … 322 322 * 323 323 */ 324 NO_TRACE static size_t find_free_zone(size_t count, zone_flags_t flags,324 _NO_TRACE static size_t find_free_zone(size_t count, zone_flags_t flags, 325 325 pfn_t constraint, size_t hint) 326 326 { … … 346 346 347 347 /** Return frame from zone. */ 348 NO_TRACE static frame_t *zone_get_frame(zone_t *zone, size_t index)348 _NO_TRACE static frame_t *zone_get_frame(zone_t *zone, size_t index) 349 349 { 350 350 assert(index < zone->count); … … 366 366 * 367 367 */ 368 NO_TRACE static size_t zone_frame_alloc(zone_t *zone, size_t count,368 _NO_TRACE static size_t zone_frame_alloc(zone_t *zone, size_t count, 369 369 pfn_t constraint) 370 370 { … … 405 405 * 406 406 */ 407 NO_TRACE static size_t zone_frame_free(zone_t *zone, size_t index)407 _NO_TRACE static size_t zone_frame_free(zone_t *zone, size_t index) 408 408 { 409 409 assert(zone->flags & ZONE_AVAILABLE); … … 427 427 428 428 /** Mark frame in zone unavailable to allocation. */ 429 NO_TRACE static void zone_mark_unavailable(zone_t *zone, size_t index)429 _NO_TRACE static void zone_mark_unavailable(zone_t *zone, size_t index) 430 430 { 431 431 assert(zone->flags & ZONE_AVAILABLE); … … 453 453 * 454 454 */ 455 NO_TRACE static void zone_merge_internal(size_t z1, size_t z2, zone_t *old_z1,455 _NO_TRACE static void zone_merge_internal(size_t z1, size_t z2, zone_t *old_z1, 456 456 void *confdata) 457 457 { … … 507 507 * 508 508 */ 509 NO_TRACE static void return_config_frames(size_t znum, pfn_t pfn, size_t count)509 _NO_TRACE static void return_config_frames(size_t znum, pfn_t pfn, size_t count) 510 510 { 511 511 assert(zones.info[znum].flags & ZONE_AVAILABLE); … … 623 623 * 624 624 */ 625 NO_TRACE static void zone_construct(zone_t *zone, pfn_t start, size_t count,625 _NO_TRACE static void zone_construct(zone_t *zone, pfn_t start, size_t count, 626 626 zone_flags_t flags, void *confdata) 627 627 { … … 1037 1037 * 1038 1038 */ 1039 NO_TRACE void frame_reference_add(pfn_t pfn)1039 _NO_TRACE void frame_reference_add(pfn_t pfn) 1040 1040 { 1041 1041 irq_spinlock_lock(&zones.lock, true); … … 1056 1056 * 1057 1057 */ 1058 NO_TRACE void frame_mark_unavailable(pfn_t start, size_t count)1058 _NO_TRACE void frame_mark_unavailable(pfn_t start, size_t count) 1059 1059 { 1060 1060 irq_spinlock_lock(&zones.lock, true); -
kernel/generic/src/mm/page.c
rad40b74b rbc73be3 95 95 * 96 96 */ 97 NO_TRACE void page_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame,97 _NO_TRACE void page_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, 98 98 unsigned int flags) 99 99 { … … 120 120 * 121 121 */ 122 NO_TRACE void page_mapping_remove(as_t *as, uintptr_t page)122 _NO_TRACE void page_mapping_remove(as_t *as, uintptr_t page) 123 123 { 124 124 assert(page_table_locked(as)); … … 144 144 * the PTE is not guaranteed to be present. 145 145 */ 146 NO_TRACE bool page_mapping_find(as_t *as, uintptr_t page, bool nolock,146 _NO_TRACE bool page_mapping_find(as_t *as, uintptr_t page, bool nolock, 147 147 pte_t *pte) 148 148 { … … 165 165 * @param pte New PTE. 166 166 */ 167 NO_TRACE void page_mapping_update(as_t *as, uintptr_t page, bool nolock,167 _NO_TRACE void page_mapping_update(as_t *as, uintptr_t page, bool nolock, 168 168 pte_t *pte) 169 169 { -
kernel/generic/src/mm/slab.c
rad40b74b rbc73be3 158 158 * 159 159 */ 160 NO_TRACE static slab_t *slab_space_alloc(slab_cache_t *cache,160 _NO_TRACE static slab_t *slab_space_alloc(slab_cache_t *cache, 161 161 unsigned int flags) 162 162 { … … 206 206 * 207 207 */ 208 NO_TRACE static size_t slab_space_free(slab_cache_t *cache, slab_t *slab)208 _NO_TRACE static size_t slab_space_free(slab_cache_t *cache, slab_t *slab) 209 209 { 210 210 frame_free(KA2PA(slab->start), slab->cache->frames); … … 218 218 219 219 /** Map object to slab structure */ 220 NO_TRACE static slab_t *obj2slab(void *obj)220 _NO_TRACE static slab_t *obj2slab(void *obj) 221 221 { 222 222 return (slab_t *) frame_get_parent(ADDR2PFN(KA2PA(obj)), 0); … … 234 234 * 235 235 */ 236 NO_TRACE static size_t slab_obj_destroy(slab_cache_t *cache, void *obj,236 _NO_TRACE static size_t slab_obj_destroy(slab_cache_t *cache, void *obj, 237 237 slab_t *slab) 238 238 { … … 276 276 * 277 277 */ 278 NO_TRACE static void *slab_obj_create(slab_cache_t *cache, unsigned int flags)278 _NO_TRACE static void *slab_obj_create(slab_cache_t *cache, unsigned int flags) 279 279 { 280 280 irq_spinlock_lock(&cache->slablock, true); … … 332 332 * 333 333 */ 334 NO_TRACE static slab_magazine_t *get_mag_from_cache(slab_cache_t *cache,334 _NO_TRACE static slab_magazine_t *get_mag_from_cache(slab_cache_t *cache, 335 335 bool first) 336 336 { … … 357 357 * 358 358 */ 359 NO_TRACE static void put_mag_to_cache(slab_cache_t *cache,359 _NO_TRACE static void put_mag_to_cache(slab_cache_t *cache, 360 360 slab_magazine_t *mag) 361 361 { … … 373 373 * 374 374 */ 375 NO_TRACE static size_t magazine_destroy(slab_cache_t *cache,375 _NO_TRACE static size_t magazine_destroy(slab_cache_t *cache, 376 376 slab_magazine_t *mag) 377 377 { … … 392 392 * 393 393 */ 394 NO_TRACE static slab_magazine_t *get_full_current_mag(slab_cache_t *cache)394 _NO_TRACE static slab_magazine_t *get_full_current_mag(slab_cache_t *cache) 395 395 { 396 396 slab_magazine_t *cmag = cache->mag_cache[CPU->id].current; … … 429 429 * 430 430 */ 431 NO_TRACE static void *magazine_obj_get(slab_cache_t *cache)431 _NO_TRACE static void *magazine_obj_get(slab_cache_t *cache) 432 432 { 433 433 if (!CPU) … … 459 459 * 460 460 */ 461 NO_TRACE static slab_magazine_t *make_empty_current_mag(slab_cache_t *cache)461 _NO_TRACE static slab_magazine_t *make_empty_current_mag(slab_cache_t *cache) 462 462 { 463 463 slab_magazine_t *cmag = cache->mag_cache[CPU->id].current; … … 509 509 * 510 510 */ 511 NO_TRACE static int magazine_obj_put(slab_cache_t *cache, void *obj)511 _NO_TRACE static int magazine_obj_put(slab_cache_t *cache, void *obj) 512 512 { 513 513 if (!CPU) … … 538 538 * 539 539 */ 540 NO_TRACE static size_t comp_objects(slab_cache_t *cache)540 _NO_TRACE static size_t comp_objects(slab_cache_t *cache) 541 541 { 542 542 if (cache->flags & SLAB_CACHE_SLINSIDE) … … 550 550 * 551 551 */ 552 NO_TRACE static size_t badness(slab_cache_t *cache)552 _NO_TRACE static size_t badness(slab_cache_t *cache) 553 553 { 554 554 size_t objects = comp_objects(cache); … … 564 564 * 565 565 */ 566 NO_TRACE static bool make_magcache(slab_cache_t *cache)566 _NO_TRACE static bool make_magcache(slab_cache_t *cache) 567 567 { 568 568 assert(_slab_initialized >= 2); … … 585 585 * 586 586 */ 587 NO_TRACE static void _slab_cache_create(slab_cache_t *cache, const char *name,587 _NO_TRACE static void _slab_cache_create(slab_cache_t *cache, const char *name, 588 588 size_t size, size_t align, errno_t (*constructor)(void *obj, 589 589 unsigned int kmflag), size_t (*destructor)(void *obj), unsigned int flags) … … 660 660 * 661 661 */ 662 NO_TRACE static size_t _slab_reclaim(slab_cache_t *cache, unsigned int flags)662 _NO_TRACE static size_t _slab_reclaim(slab_cache_t *cache, unsigned int flags) 663 663 { 664 664 if (cache->flags & SLAB_CACHE_NOMAGAZINE) … … 707 707 * 708 708 */ 709 NO_TRACE static void _slab_free(slab_cache_t *cache, void *obj, slab_t *slab)709 _NO_TRACE static void _slab_free(slab_cache_t *cache, void *obj, slab_t *slab) 710 710 { 711 711 if (!obj) -
kernel/generic/src/proc/current.c
rad40b74b rbc73be3 70 70 * 71 71 */ 72 NO_TRACE void current_copy(current_t *src, current_t *dst)72 _NO_TRACE void current_copy(current_t *src, current_t *dst) 73 73 { 74 74 assert(src->magic == MAGIC); -
kernel/generic/src/proc/program.c
rad40b74b rbc73be3 48 48 #include <security/perm.h> 49 49 #include <lib/elf_load.h> 50 #include < errno.h>50 #include <str.h> 51 51 #include <log.h> 52 52 #include <syscall/copy.h> … … 76 76 return ENOMEM; 77 77 78 prg->loader_status = E E_OK;78 prg->loader_status = EOK; 79 79 prg->task = task_create(as, name); 80 80 if (!prg->task) { … … 149 149 150 150 prg->loader_status = elf_load((elf_header_t *) image_addr, as); 151 if (prg->loader_status != E E_OK) {151 if (prg->loader_status != EOK) { 152 152 as_release(as); 153 153 prg->task = NULL; … … 183 183 184 184 prg->loader_status = elf_load((elf_header_t *) program_loader, as); 185 if (prg->loader_status != E E_OK) {185 if (prg->loader_status != EOK) { 186 186 as_release(as); 187 187 log(LF_OTHER, LVL_ERROR, "Cannot spawn loader (%s)", 188 elf_error(prg->loader_status));188 str_error(prg->loader_status)); 189 189 return ENOENT; 190 190 } -
kernel/generic/src/sysinfo/sysinfo.c
rad40b74b rbc73be3 62 62 * 63 63 */ 64 NO_TRACE static errno_t sysinfo_item_constructor(void *obj, unsigned int kmflag)64 _NO_TRACE static errno_t sysinfo_item_constructor(void *obj, unsigned int kmflag) 65 65 { 66 66 sysinfo_item_t *item = (sysinfo_item_t *) obj; … … 82 82 * 83 83 */ 84 NO_TRACE static size_t sysinfo_item_destructor(void *obj)84 _NO_TRACE static size_t sysinfo_item_destructor(void *obj) 85 85 { 86 86 sysinfo_item_t *item = (sysinfo_item_t *) obj; … … 124 124 * 125 125 */ 126 NO_TRACE static sysinfo_item_t *sysinfo_find_item(const char *name,126 _NO_TRACE static sysinfo_item_t *sysinfo_find_item(const char *name, 127 127 sysinfo_item_t *subtree, sysinfo_return_t **ret, bool dry_run) 128 128 { … … 190 190 * 191 191 */ 192 NO_TRACE static sysinfo_item_t *sysinfo_create_path(const char *name,192 _NO_TRACE static sysinfo_item_t *sysinfo_create_path(const char *name, 193 193 sysinfo_item_t **psubtree) 194 194 { … … 508 508 * 509 509 */ 510 NO_TRACE static void sysinfo_indent(size_t spaces)510 _NO_TRACE static void sysinfo_indent(size_t spaces) 511 511 { 512 512 for (size_t i = 0; i < spaces; i++) … … 522 522 * 523 523 */ 524 NO_TRACE static void sysinfo_dump_internal(sysinfo_item_t *root, size_t spaces)524 _NO_TRACE static void sysinfo_dump_internal(sysinfo_item_t *root, size_t spaces) 525 525 { 526 526 /* Walk all siblings */ … … 622 622 * 623 623 */ 624 NO_TRACE static sysinfo_return_t sysinfo_get_item(const char *name,624 _NO_TRACE static sysinfo_return_t sysinfo_get_item(const char *name, 625 625 sysinfo_item_t **root, bool dry_run) 626 626 { … … 677 677 * 678 678 */ 679 NO_TRACE static sysinfo_return_t sysinfo_get_item_uspace(void *ptr, size_t size,679 _NO_TRACE static sysinfo_return_t sysinfo_get_item_uspace(void *ptr, size_t size, 680 680 bool dry_run) 681 681 { … … 720 720 * 721 721 */ 722 NO_TRACE static sysinfo_return_t sysinfo_get_keys(const char *name,722 _NO_TRACE static sysinfo_return_t sysinfo_get_keys(const char *name, 723 723 sysinfo_item_t **root, bool dry_run) 724 724 { … … 786 786 * 787 787 */ 788 NO_TRACE static sysinfo_return_t sysinfo_get_keys_uspace(void *ptr, size_t size,788 _NO_TRACE static sysinfo_return_t sysinfo_get_keys_uspace(void *ptr, size_t size, 789 789 bool dry_run) 790 790 { -
kernel/generic/src/udebug/udebug.c
rad40b74b rbc73be3 141 141 TASK->udebug.begin_call = NULL; 142 142 143 IPC_SET_RETVAL(db_call->data, 0);143 ipc_set_retval(&db_call->data, 0); 144 144 ipc_answer(&TASK->answerbox, db_call); 145 145 } else if (TASK->udebug.dt_state == UDEBUG_TS_ACTIVE) { … … 160 160 assert(go_call); 161 161 162 IPC_SET_RETVAL(go_call->data, 0);163 IPC_SET_ARG1(go_call->data, UDEBUG_EVENT_STOP);162 ipc_set_retval(&go_call->data, 0); 163 ipc_set_arg1(&go_call->data, UDEBUG_EVENT_STOP); 164 164 165 165 THREAD->udebug.cur_event = UDEBUG_EVENT_STOP; … … 243 243 THREAD->udebug.go_call = NULL; 244 244 245 IPC_SET_RETVAL(call->data, 0);246 IPC_SET_ARG1(call->data, etype);247 IPC_SET_ARG2(call->data, id);248 IPC_SET_ARG3(call->data, rc);245 ipc_set_retval(&call->data, 0); 246 ipc_set_arg1(&call->data, etype); 247 ipc_set_arg2(&call->data, id); 248 ipc_set_arg3(&call->data, rc); 249 249 250 250 THREAD->udebug.syscall_args[0] = a1; … … 314 314 315 315 THREAD->udebug.go_call = NULL; 316 IPC_SET_RETVAL(call->data, 0);317 IPC_SET_ARG1(call->data, UDEBUG_EVENT_THREAD_B);318 IPC_SET_ARG2(call->data, (sysarg_t) thread);316 ipc_set_retval(&call->data, 0); 317 ipc_set_arg1(&call->data, UDEBUG_EVENT_THREAD_B); 318 ipc_set_arg2(&call->data, (sysarg_t) thread); 319 319 320 320 /* … … 365 365 366 366 THREAD->udebug.go_call = NULL; 367 IPC_SET_RETVAL(call->data, 0);368 IPC_SET_ARG1(call->data, UDEBUG_EVENT_THREAD_E);367 ipc_set_retval(&call->data, 0); 368 ipc_set_arg1(&call->data, UDEBUG_EVENT_THREAD_E); 369 369 370 370 /* Prevent any further debug activity in thread. */ … … 428 428 LOG("Answer GO call with EVENT_FINISHED."); 429 429 430 IPC_SET_RETVAL(thread->udebug.go_call->data, 0);431 IPC_SET_ARG1(thread->udebug.go_call->data,430 ipc_set_retval(&thread->udebug.go_call->data, 0); 431 ipc_set_arg1(&thread->udebug.go_call->data, 432 432 UDEBUG_EVENT_FINISHED); 433 433 -
kernel/generic/src/udebug/udebug_ipc.c
rad40b74b rbc73be3 53 53 errno_t udebug_request_preprocess(call_t *call, phone_t *phone) 54 54 { 55 switch ( IPC_GET_ARG1(call->data)) {55 switch (ipc_get_arg1(&call->data)) { 56 56 /* future UDEBUG_M_REGS_WRITE, UDEBUG_M_MEM_WRITE: */ 57 57 default: … … 76 76 rc = udebug_begin(call, &active); 77 77 if (rc != EOK) { 78 IPC_SET_RETVAL(call->data, rc);78 ipc_set_retval(&call->data, rc); 79 79 ipc_answer(&TASK->kb.box, call); 80 80 return; … … 86 86 */ 87 87 if (active) { 88 IPC_SET_RETVAL(call->data, EOK);88 ipc_set_retval(&call->data, EOK); 89 89 ipc_answer(&TASK->kb.box, call); 90 90 } … … 102 102 rc = udebug_end(); 103 103 104 IPC_SET_RETVAL(call->data, rc);104 ipc_set_retval(&call->data, rc); 105 105 ipc_answer(&TASK->kb.box, call); 106 106 } … … 116 116 udebug_evmask_t mask; 117 117 118 mask = IPC_GET_ARG2(call->data);118 mask = ipc_get_arg2(&call->data); 119 119 rc = udebug_set_evmask(mask); 120 120 121 IPC_SET_RETVAL(call->data, rc);121 ipc_set_retval(&call->data, rc); 122 122 ipc_answer(&TASK->kb.box, call); 123 123 } … … 133 133 errno_t rc; 134 134 135 t = (thread_t *) IPC_GET_ARG2(call->data);135 t = (thread_t *)ipc_get_arg2(&call->data); 136 136 137 137 rc = udebug_go(t, call); 138 138 if (rc != EOK) { 139 IPC_SET_RETVAL(call->data, rc);139 ipc_set_retval(&call->data, rc); 140 140 ipc_answer(&TASK->kb.box, call); 141 141 return; … … 153 153 errno_t rc; 154 154 155 t = (thread_t *) IPC_GET_ARG2(call->data);155 t = (thread_t *)ipc_get_arg2(&call->data); 156 156 157 157 rc = udebug_stop(t, call); 158 IPC_SET_RETVAL(call->data, rc);158 ipc_set_retval(&call->data, rc); 159 159 ipc_answer(&TASK->kb.box, call); 160 160 } … … 173 173 errno_t rc; 174 174 175 uspace_addr = IPC_GET_ARG2(call->data); /* Destination address */176 buf_size = IPC_GET_ARG3(call->data); /* Dest. buffer size */175 uspace_addr = ipc_get_arg2(&call->data); /* Destination address */ 176 buf_size = ipc_get_arg3(&call->data); /* Dest. buffer size */ 177 177 178 178 /* … … 182 182 rc = udebug_thread_read(&buffer, buf_size, &copied, &needed); 183 183 if (rc != EOK) { 184 IPC_SET_RETVAL(call->data, rc);184 ipc_set_retval(&call->data, rc); 185 185 ipc_answer(&TASK->kb.box, call); 186 186 return; … … 191 191 */ 192 192 193 IPC_SET_RETVAL(call->data, 0);194 /* 195 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 196 * same code in process_answer() can be used 197 * (no way to distinguish method in answer) 198 */ 199 IPC_SET_ARG1(call->data, uspace_addr);200 IPC_SET_ARG2(call->data, copied);201 IPC_SET_ARG3(call->data, needed);193 ipc_set_retval(&call->data, 0); 194 /* 195 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 196 * same code in process_answer() can be used 197 * (no way to distinguish method in answer) 198 */ 199 ipc_set_arg1(&call->data, uspace_addr); 200 ipc_set_arg2(&call->data, copied); 201 ipc_set_arg3(&call->data, needed); 202 202 call->buffer = buffer; 203 203 … … 219 219 void *data; 220 220 221 uspace_addr = IPC_GET_ARG2(call->data); /* Destination address */222 buf_size = IPC_GET_ARG3(call->data); /* Dest. buffer size */221 uspace_addr = ipc_get_arg2(&call->data); /* Destination address */ 222 buf_size = ipc_get_arg3(&call->data); /* Dest. buffer size */ 223 223 224 224 /* … … 238 238 */ 239 239 240 IPC_SET_RETVAL(call->data, 0);241 /* 242 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 243 * same code in process_answer() can be used 244 * (no way to distinguish method in answer) 245 */ 246 IPC_SET_ARG1(call->data, uspace_addr);247 IPC_SET_ARG2(call->data, to_copy);248 249 IPC_SET_ARG3(call->data, data_size);240 ipc_set_retval(&call->data, 0); 241 /* 242 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 243 * same code in process_answer() can be used 244 * (no way to distinguish method in answer) 245 */ 246 ipc_set_arg1(&call->data, uspace_addr); 247 ipc_set_arg2(&call->data, to_copy); 248 249 ipc_set_arg3(&call->data, data_size); 250 250 call->buffer = data; 251 251 … … 268 268 as_area_info_t *data; 269 269 270 uspace_addr = IPC_GET_ARG2(call->data); /* Destination address */271 buf_size = IPC_GET_ARG3(call->data); /* Dest. buffer size */270 uspace_addr = ipc_get_arg2(&call->data); /* Destination address */ 271 buf_size = ipc_get_arg3(&call->data); /* Dest. buffer size */ 272 272 273 273 /* … … 276 276 data = as_get_area_info(AS, &data_size); 277 277 if (!data) { 278 IPC_SET_RETVAL(call->data, ENOMEM);278 ipc_set_retval(&call->data, ENOMEM); 279 279 ipc_answer(&TASK->kb.box, call); 280 280 return; … … 292 292 */ 293 293 294 IPC_SET_RETVAL(call->data, 0);295 /* 296 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 297 * same code in process_answer() can be used 298 * (no way to distinguish method in answer) 299 */ 300 IPC_SET_ARG1(call->data, uspace_addr);301 IPC_SET_ARG2(call->data, to_copy);302 303 IPC_SET_ARG3(call->data, data_size);294 ipc_set_retval(&call->data, 0); 295 /* 296 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 297 * same code in process_answer() can be used 298 * (no way to distinguish method in answer) 299 */ 300 ipc_set_arg1(&call->data, uspace_addr); 301 ipc_set_arg2(&call->data, to_copy); 302 303 ipc_set_arg3(&call->data, data_size); 304 304 call->buffer = (uint8_t *) data; 305 305 … … 319 319 void *buffer; 320 320 321 t = (thread_t *) IPC_GET_ARG2(call->data);321 t = (thread_t *)ipc_get_arg2(&call->data); 322 322 323 323 rc = udebug_args_read(t, &buffer); 324 324 if (rc != EOK) { 325 IPC_SET_RETVAL(call->data, rc);325 ipc_set_retval(&call->data, rc); 326 326 ipc_answer(&TASK->kb.box, call); 327 327 return; … … 332 332 */ 333 333 334 uspace_addr = IPC_GET_ARG3(call->data);335 336 IPC_SET_RETVAL(call->data, 0);337 /* 338 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 339 * same code in process_answer() can be used 340 * (no way to distinguish method in answer) 341 */ 342 IPC_SET_ARG1(call->data, uspace_addr);343 IPC_SET_ARG2(call->data, 6 * sizeof(sysarg_t));334 uspace_addr = ipc_get_arg3(&call->data); 335 336 ipc_set_retval(&call->data, 0); 337 /* 338 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 339 * same code in process_answer() can be used 340 * (no way to distinguish method in answer) 341 */ 342 ipc_set_arg1(&call->data, uspace_addr); 343 ipc_set_arg2(&call->data, 6 * sizeof(sysarg_t)); 344 344 call->buffer = buffer; 345 345 … … 359 359 errno_t rc; 360 360 361 t = (thread_t *) IPC_GET_ARG2(call->data);361 t = (thread_t *) ipc_get_arg2(&call->data); 362 362 363 363 rc = udebug_regs_read(t, &buffer); 364 364 if (rc != EOK) { 365 IPC_SET_RETVAL(call->data, rc);365 ipc_set_retval(&call->data, rc); 366 366 ipc_answer(&TASK->kb.box, call); 367 367 return; … … 374 374 */ 375 375 376 uspace_addr = IPC_GET_ARG3(call->data);376 uspace_addr = ipc_get_arg3(&call->data); 377 377 to_copy = sizeof(istate_t); 378 378 379 IPC_SET_RETVAL(call->data, 0);380 /* 381 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 382 * same code in process_answer() can be used 383 * (no way to distinguish method in answer) 384 */ 385 IPC_SET_ARG1(call->data, uspace_addr);386 IPC_SET_ARG2(call->data, to_copy);379 ipc_set_retval(&call->data, 0); 380 /* 381 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 382 * same code in process_answer() can be used 383 * (no way to distinguish method in answer) 384 */ 385 ipc_set_arg1(&call->data, uspace_addr); 386 ipc_set_arg2(&call->data, to_copy); 387 387 388 388 call->buffer = buffer; … … 404 404 errno_t rc; 405 405 406 uspace_dst = IPC_GET_ARG2(call->data);407 uspace_src = IPC_GET_ARG3(call->data);408 size = IPC_GET_ARG4(call->data);406 uspace_dst = ipc_get_arg2(&call->data); 407 uspace_src = ipc_get_arg3(&call->data); 408 size = ipc_get_arg4(&call->data); 409 409 410 410 rc = udebug_mem_read(uspace_src, size, &buffer); 411 411 if (rc != EOK) { 412 IPC_SET_RETVAL(call->data, rc);412 ipc_set_retval(&call->data, rc); 413 413 ipc_answer(&TASK->kb.box, call); 414 414 return; … … 417 417 assert(buffer != NULL); 418 418 419 IPC_SET_RETVAL(call->data, 0);420 /* 421 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 422 * same code in process_answer() can be used 423 * (no way to distinguish method in answer) 424 */ 425 IPC_SET_ARG1(call->data, uspace_dst);426 IPC_SET_ARG2(call->data, size);419 ipc_set_retval(&call->data, 0); 420 /* 421 * ARG1=dest, ARG2=size as in IPC_M_DATA_READ so that 422 * same code in process_answer() can be used 423 * (no way to distinguish method in answer) 424 */ 425 ipc_set_arg1(&call->data, uspace_dst); 426 ipc_set_arg2(&call->data, size); 427 427 call->buffer = buffer; 428 428 … … 439 439 int debug_method; 440 440 441 debug_method = IPC_GET_ARG1(call->data);441 debug_method = ipc_get_arg1(&call->data); 442 442 443 443 if (debug_method != UDEBUG_M_BEGIN) { … … 450 450 */ 451 451 if (TASK->udebug.debugger != call->sender) { 452 IPC_SET_RETVAL(call->data, EINVAL);452 ipc_set_retval(&call->data, EINVAL); 453 453 ipc_answer(&TASK->kb.box, call); 454 454 return; -
kernel/generic/src/udebug/udebug_ops.c
rad40b74b rbc73be3 328 328 thread->udebug.go_call = NULL; 329 329 330 IPC_SET_RETVAL(call->data, 0);331 IPC_SET_ARG1(call->data, UDEBUG_EVENT_STOP);330 ipc_set_retval(&call->data, 0); 331 ipc_set_arg1(&call->data, UDEBUG_EVENT_STOP); 332 332 333 333 THREAD->udebug.cur_event = UDEBUG_EVENT_STOP;
Note:
See TracChangeset
for help on using the changeset viewer.
