Changes in kernel/generic/src/ipc/ops/concttome.c [8e3153b:5a6cc679] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/ops/concttome.c
r8e3153b r5a6cc679 43 43 { 44 44 cap_handle_t phone_handle; 45 kobject_t *phone_obj; 46 errno_t rc = phone_alloc(TASK, false, &phone_handle, &phone_obj); 47 call->priv = (sysarg_t) phone_obj; 45 errno_t rc = phone_alloc(TASK, &phone_handle); 48 46 IPC_SET_ARG5(call->data, (rc == EOK) ? phone_handle : -1); 49 47 return 0; … … 53 51 { 54 52 cap_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata); 55 kobject_t *phone_obj = (kobject_t *) answer->priv;56 53 57 if (phone_handle >= 0) { 58 kobject_put(phone_obj); 59 cap_free(TASK, phone_handle); 60 } 54 if (phone_handle >= 0) 55 phone_dealloc(phone_handle); 61 56 62 57 return EOK; … … 66 61 { 67 62 cap_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata); 68 kobject_t *phone_obj = (kobject_t *) answer->priv;69 63 70 64 if (IPC_GET_RETVAL(answer->data) != EOK) { … … 72 66 answer_cleanup(answer, olddata); 73 67 } else if (phone_handle >= 0) { 74 /* 75 * The connection was accepted 76 */ 77 78 /* 79 * We need to create another reference as the one we have now 80 * will be consumed by ipc_phone_connect(). 81 */ 82 kobject_add_ref(phone_obj); 83 84 if (ipc_phone_connect(phone_obj->phone, 85 &answer->sender->answerbox)) { 86 /* Pass the reference to the capability */ 87 cap_publish(TASK, phone_handle, phone_obj); 68 /* The connection was accepted */ 69 if (phone_connect(phone_handle, &answer->sender->answerbox)) { 88 70 /* Set 'phone hash' as ARG5 of response */ 71 kobject_t *phone_obj = kobject_get(TASK, phone_handle, 72 KOBJECT_TYPE_PHONE); 89 73 IPC_SET_ARG5(answer->data, 90 74 (sysarg_t) phone_obj->phone); 75 kobject_put(phone_obj); 91 76 } else { 92 77 /* The answerbox is shutting down. */
Note:
See TracChangeset
for help on using the changeset viewer.