Changeset eadaeae8 in mainline for kernel/generic/src
- Timestamp:
- 2018-03-21T20:58:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3be9d10
- Parents:
- 874381a
- Location:
- kernel/generic/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/cap/cap.c
r874381a readaeae8 92 92 { 93 93 cap_t *cap = hash_table_get_inst(item, cap_t, caps_link); 94 return hash_mix( cap->handle);94 return hash_mix(CAP_HANDLE_RAW(cap->handle)); 95 95 } 96 96 … … 98 98 { 99 99 cap_handle_t *handle = (cap_handle_t *) key; 100 return hash_mix( *handle);100 return hash_mix(CAP_HANDLE_RAW(*handle)); 101 101 } 102 102 … … 224 224 assert(mutex_locked(&task->cap_info->lock)); 225 225 226 if ((handle < CAPS_START) || (handle > CAPS_LAST)) 226 if ((CAP_HANDLE_RAW(handle) < CAPS_START) || 227 (CAP_HANDLE_RAW(handle) > CAPS_LAST)) 227 228 return NULL; 228 229 ht_link_t *link = hash_table_find(&task->cap_info->caps, &handle); … … 329 330 void cap_free(task_t *task, cap_handle_t handle) 330 331 { 331 assert( handle>= CAPS_START);332 assert( handle<= CAPS_LAST);332 assert(CAP_HANDLE_RAW(handle) >= CAPS_START); 333 assert(CAP_HANDLE_RAW(handle) <= CAPS_LAST); 333 334 334 335 mutex_lock(&task->cap_info->lock); … … 338 339 339 340 hash_table_remove_item(&task->cap_info->caps, &cap->caps_link); 340 ra_free(task->cap_info->handles, handle, 1);341 ra_free(task->cap_info->handles, CAP_HANDLE_RAW(handle), 1); 341 342 slab_free(cap_cache, cap); 342 343 mutex_unlock(&task->cap_info->lock); -
kernel/generic/src/ipc/ipc.c
r874381a readaeae8 910 910 mutex_lock(&phone->lock); 911 911 if (phone->state != IPC_PHONE_FREE) { 912 printf("%-11d %7" PRIun " ", cap->handle,912 printf("%-11d %7" PRIun " ", (int) CAP_HANDLE_RAW(cap->handle), 913 913 atomic_get(&phone->active_calls)); 914 914 -
kernel/generic/src/ipc/ipcrsc.c
r874381a readaeae8 157 157 * @return An error code if a new capability cannot be allocated. 158 158 */ 159 errno_t phone_alloc(task_t *task, bool publish, cap_ handle_t *phandle,159 errno_t phone_alloc(task_t *task, bool publish, cap_phone_handle_t *phandle, 160 160 kobject_t **kobject) 161 161 { … … 199 199 * 200 200 */ 201 void phone_dealloc(cap_ handle_t handle)201 void phone_dealloc(cap_phone_handle_t handle) 202 202 { 203 203 kobject_t *kobj = cap_unpublish(TASK, handle, KOBJECT_TYPE_PHONE); -
kernel/generic/src/ipc/irq.c
r874381a readaeae8 314 314 */ 315 315 errno_t ipc_irq_subscribe(answerbox_t *box, inr_t inr, sysarg_t imethod, 316 irq_code_t *ucode, cap_ handle_t *uspace_handle)316 irq_code_t *ucode, cap_irq_handle_t *uspace_handle) 317 317 { 318 318 if ((inr < 0) || (inr > last_inr)) … … 390 390 * 391 391 */ 392 errno_t ipc_irq_unsubscribe(answerbox_t *box, int handle)392 errno_t ipc_irq_unsubscribe(answerbox_t *box, cap_irq_handle_t handle) 393 393 { 394 394 kobject_t *kobj = cap_unpublish(TASK, handle, KOBJECT_TYPE_IRQ); -
kernel/generic/src/ipc/kbox.c
r874381a readaeae8 210 210 * 211 211 */ 212 errno_t ipc_connect_kbox(task_id_t taskid, cap_ handle_t *out_phone)212 errno_t ipc_connect_kbox(task_id_t taskid, cap_phone_handle_t *out_phone) 213 213 { 214 214 irq_spinlock_lock(&tasks_lock, true); … … 252 252 253 253 /* Allocate a new phone. */ 254 cap_ handle_t phone_handle;254 cap_phone_handle_t phone_handle; 255 255 errno_t rc = phone_alloc(TASK, true, &phone_handle, NULL); 256 256 if (rc != EOK) { -
kernel/generic/src/ipc/ops/conctmeto.c
r874381a readaeae8 46 46 * That will be done once the phone is connected. 47 47 */ 48 cap_ handle_t phone_handle;48 cap_phone_handle_t phone_handle; 49 49 kobject_t *phone_obj; 50 50 errno_t rc = phone_alloc(TASK, false, &phone_handle, &phone_obj); … … 58 58 59 59 /* Remember the handle */ 60 call->priv = phone_handle;60 call->priv = CAP_HANDLE_RAW(phone_handle); 61 61 62 62 return EOK; … … 65 65 static errno_t request_forget(call_t *call) 66 66 { 67 cap_ handle_t phone_handle = (cap_handle_t) call->priv;67 cap_phone_handle_t phone_handle = (cap_handle_t) call->priv; 68 68 69 if ( phone_handle< 0)69 if (CAP_HANDLE_RAW(phone_handle) < 0) 70 70 return EOK; 71 71 … … 103 103 static errno_t answer_process(call_t *answer) 104 104 { 105 cap_ handle_t phone_handle = (cap_handle_t) answer->priv;105 cap_phone_handle_t phone_handle = (cap_handle_t) answer->priv; 106 106 phone_t *phone = (phone_t *) IPC_GET_ARG5(answer->data); 107 107 108 108 if (IPC_GET_RETVAL(answer->data)) { 109 if ( phone_handle>= 0) {109 if (CAP_HANDLE_RAW(phone_handle) >= 0) { 110 110 /* 111 111 * Cleanup the unpublished capability and drop … … 123 123 cap_publish(TASK, phone_handle, phone->kobject); 124 124 125 IPC_SET_ARG5(answer->data, phone_handle);125 IPC_SET_ARG5(answer->data, CAP_HANDLE_RAW(phone_handle)); 126 126 } 127 127 -
kernel/generic/src/ipc/ops/concttome.c
r874381a readaeae8 42 42 static int request_process(call_t *call, answerbox_t *box) 43 43 { 44 cap_ handle_t phone_handle;44 cap_phone_handle_t phone_handle; 45 45 kobject_t *phone_obj; 46 46 errno_t rc = phone_alloc(TASK, false, &phone_handle, &phone_obj); 47 47 call->priv = (sysarg_t) phone_obj; 48 IPC_SET_ARG5(call->data, (rc == EOK) ? phone_handle : -1); 48 IPC_SET_ARG5(call->data, 49 (rc == EOK) ? CAP_HANDLE_RAW(phone_handle) : CAP_NIL); 49 50 return 0; 50 51 } … … 52 53 static errno_t answer_cleanup(call_t *answer, ipc_data_t *olddata) 53 54 { 54 cap_ handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata);55 cap_phone_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata); 55 56 kobject_t *phone_obj = (kobject_t *) answer->priv; 56 57 57 if ( phone_handle >= 0) {58 if (CAP_HANDLE_VALID(phone_handle)) { 58 59 kobject_put(phone_obj); 59 60 cap_free(TASK, phone_handle); … … 65 66 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata) 66 67 { 67 cap_ handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata);68 cap_phone_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata); 68 69 kobject_t *phone_obj = (kobject_t *) answer->priv; 69 70 … … 71 72 /* The connection was not accepted */ 72 73 answer_cleanup(answer, olddata); 73 } else if ( phone_handle >= 0) {74 } else if (CAP_HANDLE_VALID(phone_handle)) { 74 75 /* 75 76 * The connection was accepted -
kernel/generic/src/ipc/ops/stchngath.c
r874381a readaeae8 45 45 task_t *other_task_s; 46 46 47 kobject_t *sender_obj = kobject_get(TASK, IPC_GET_ARG5(call->data),48 KOBJECT_TYPE_PHONE);47 kobject_t *sender_obj = kobject_get(TASK, 48 (cap_handle_t) IPC_GET_ARG5(call->data), KOBJECT_TYPE_PHONE); 49 49 if (!sender_obj) 50 50 return ENOENT; … … 78 78 79 79 kobject_t *recipient_obj = kobject_get(TASK, 80 IPC_GET_ARG1(answer->data), KOBJECT_TYPE_PHONE); 80 (cap_handle_t) IPC_GET_ARG1(answer->data), 81 KOBJECT_TYPE_PHONE); 81 82 if (!recipient_obj) { 82 83 IPC_SET_RETVAL(answer->data, ENOENT); -
kernel/generic/src/ipc/sysipc.c
r874381a readaeae8 271 271 * 272 272 */ 273 errno_t ipc_req_internal(cap_handle_t handle, ipc_data_t *data, sysarg_t priv) 273 errno_t 274 ipc_req_internal(cap_phone_handle_t handle, ipc_data_t *data, sysarg_t priv) 274 275 { 275 276 kobject_t *kobj = kobject_get(TASK, handle, KOBJECT_TYPE_PHONE); … … 362 363 * 363 364 */ 364 sys_errno_t sys_ipc_call_async_fast( sysarg_t handle, sysarg_t imethod,365 sys_errno_t sys_ipc_call_async_fast(cap_phone_handle_t handle, sysarg_t imethod, 365 366 sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t label) 366 367 { … … 409 410 * 410 411 */ 411 sys_errno_t sys_ipc_call_async_slow( sysarg_t handle, ipc_data_t *data,412 sys_errno_t sys_ipc_call_async_slow(cap_phone_handle_t handle, ipc_data_t *data, 412 413 sysarg_t label) 413 414 { … … 466 467 * 467 468 */ 468 static sys_errno_t sys_ipc_forward_common( sysarg_t chandle, sysarg_t phandle,469 sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3,470 sysarg_t arg 4, sysarg_t arg5, unsigned int mode, bool slow)469 static sys_errno_t sys_ipc_forward_common(cap_call_handle_t chandle, 470 cap_phone_handle_t phandle, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, 471 sysarg_t arg3, sysarg_t arg4, sysarg_t arg5, unsigned int mode, bool slow) 471 472 { 472 473 kobject_t *ckobj = cap_unpublish(TASK, chandle, KOBJECT_TYPE_CALL); … … 506 507 if (method_is_system(IPC_GET_IMETHOD(call->data))) { 507 508 if (IPC_GET_IMETHOD(call->data) == IPC_M_CONNECT_TO_ME) 508 phone_dealloc(IPC_GET_ARG5(call->data)); 509 phone_dealloc((cap_phone_handle_t) 510 IPC_GET_ARG5(call->data)); 509 511 510 512 IPC_SET_ARG1(call->data, imethod); … … 577 579 * 578 580 */ 579 sys_errno_t sys_ipc_forward_fast(sysarg_t chandle, sysarg_t phandle, 580 sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, unsigned int mode) 581 sys_errno_t sys_ipc_forward_fast(cap_call_handle_t chandle, 582 cap_phone_handle_t phandle, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, 583 unsigned int mode) 581 584 { 582 585 return sys_ipc_forward_common(chandle, phandle, imethod, arg1, arg2, 0, … … 601 604 * 602 605 */ 603 sys_errno_t sys_ipc_forward_slow( sysarg_t chandle, sysarg_t phandle,604 ipc_data_t *data, unsigned int mode)606 sys_errno_t sys_ipc_forward_slow(cap_call_handle_t chandle, 607 cap_phone_handle_t phandle, ipc_data_t *data, unsigned int mode) 605 608 { 606 609 ipc_data_t newdata; … … 631 634 * 632 635 */ 633 sys_errno_t sys_ipc_answer_fast( sysarg_t chandle, sysarg_t retval, sysarg_t arg1,634 sysarg_t arg 2, sysarg_t arg3, sysarg_t arg4)636 sys_errno_t sys_ipc_answer_fast(cap_call_handle_t chandle, sysarg_t retval, 637 sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4) 635 638 { 636 639 kobject_t *kobj = cap_unpublish(TASK, chandle, KOBJECT_TYPE_CALL); … … 678 681 * 679 682 */ 680 sys_errno_t sys_ipc_answer_slow( sysarg_t chandle, ipc_data_t *data)683 sys_errno_t sys_ipc_answer_slow(cap_call_handle_t chandle, ipc_data_t *data) 681 684 { 682 685 kobject_t *kobj = cap_unpublish(TASK, chandle, KOBJECT_TYPE_CALL); … … 722 725 * 723 726 */ 724 sys_errno_t sys_ipc_hangup( sysarg_t handle)727 sys_errno_t sys_ipc_hangup(cap_phone_handle_t handle) 725 728 { 726 729 kobject_t *kobj = cap_unpublish(TASK, handle, KOBJECT_TYPE_PHONE); … … 800 803 goto restart; 801 804 802 cap_handle_t handle ;805 cap_handle_t handle = CAP_NIL; 803 806 errno_t rc = cap_alloc(TASK, &handle); 804 807 if (rc != EOK) { … … 821 824 822 825 error: 823 if ( handle >= 0)826 if (CAP_HANDLE_VALID(handle)) 824 827 cap_free(TASK, handle); 825 828 … … 861 864 * @param ucode Uspace pointer to the top-half pseudocode. 862 865 * 863 * @param[out] uspace_handle Uspace pointer to IRQ kernel object capability866 * @param[out] uspace_handle Uspace pointer to IRQ capability handle 864 867 * 865 868 * @return EPERM … … 867 870 * 868 871 */ 869 sys_errno_t sys_ipc_irq_subscribe(inr_t inr, sysarg_t imethod, irq_code_t *ucode,870 cap_handle_t *uspace_handle)872 sys_errno_t sys_ipc_irq_subscribe(inr_t inr, sysarg_t imethod, 873 irq_code_t *ucode, cap_irq_handle_t *uspace_handle) 871 874 { 872 875 if (!(perm_get(TASK) & PERM_IRQ_REG)) … … 878 881 /** Disconnect an IRQ handler from a task. 879 882 * 880 * @param inr IRQ number. 881 * @param devno Device number. 883 * @param handle IRQ capability handle. 882 884 * 883 885 * @return Zero on success or EPERM on error. 884 886 * 885 887 */ 886 sys_errno_t sys_ipc_irq_unsubscribe( sysarg_t cap)888 sys_errno_t sys_ipc_irq_unsubscribe(cap_irq_handle_t handle) 887 889 { 888 890 if (!(perm_get(TASK) & PERM_IRQ_REG)) 889 891 return EPERM; 890 892 891 ipc_irq_unsubscribe(&TASK->answerbox, cap);893 ipc_irq_unsubscribe(&TASK->answerbox, handle); 892 894 893 895 return 0; … … 899 901 * 900 902 */ 901 sys_errno_t sys_ipc_connect_kbox(task_id_t *uspace_taskid, cap_handle_t *uspace_phone) 903 sys_errno_t sys_ipc_connect_kbox(task_id_t *uspace_taskid, 904 cap_phone_handle_t *uspace_phone) 902 905 { 903 906 #ifdef CONFIG_UDEBUG 904 907 task_id_t taskid; 905 cap_ handle_t phone;908 cap_phone_handle_t phone; 906 909 907 910 errno_t rc = copy_from_uspace(&taskid, uspace_taskid, sizeof(task_id_t)); -
kernel/generic/src/mm/backend_user.c
r874381a readaeae8 131 131 log(LF_USPACE, LVL_FATAL, 132 132 "Page-in request for page %#" PRIxPTR 133 " at pager % dfailed with error %s.",133 " at pager %p failed with error %s.", 134 134 upage, pager_info->pager, str_error_name(rc)); 135 135 return AS_PF_FAULT; -
kernel/generic/src/proc/task.c
r874381a readaeae8 245 245 if ((ipc_box_0) && 246 246 (container_check(ipc_box_0->task->container, task->container))) { 247 cap_ handle_t phone_handle;247 cap_phone_handle_t phone_handle; 248 248 errno_t rc = phone_alloc(task, true, &phone_handle, NULL); 249 249 if (rc != EOK) {
Note:
See TracChangeset
for help on using the changeset viewer.