Changes in kernel/generic/src/ipc/sysipc.c [4e5dabf:ab34cc9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/sysipc.c
r4e5dabf rab34cc9 111 111 switch (imethod) { 112 112 case IPC_M_CONNECTION_CLONE: 113 case IPC_M_C LONE_ESTABLISH:113 case IPC_M_CONNECT_ME: 114 114 case IPC_M_PHONE_HUNGUP: 115 115 /* This message is meant only for the original recipient. */ … … 160 160 switch (IPC_GET_IMETHOD(call->data)) { 161 161 case IPC_M_CONNECTION_CLONE: 162 case IPC_M_C LONE_ESTABLISH:162 case IPC_M_CONNECT_ME: 163 163 case IPC_M_CONNECT_TO_ME: 164 164 case IPC_M_CONNECT_ME_TO: … … 225 225 mutex_unlock(&phone->lock); 226 226 } 227 } else if (IPC_GET_IMETHOD(*olddata) == IPC_M_C LONE_ESTABLISH) {227 } else if (IPC_GET_IMETHOD(*olddata) == IPC_M_CONNECT_ME) { 228 228 phone_t *phone = (phone_t *) IPC_GET_ARG5(*olddata); 229 229 … … 271 271 irq_spinlock_unlock(&answer->sender->lock, true); 272 272 273 uintptr_t dst_base = (uintptr_t) -1;274 273 int rc = as_area_share(as, IPC_GET_ARG1(*olddata), 275 IPC_GET_ARG2(*olddata), AS, IPC_GET_ARG3(*olddata), 276 &dst_base, IPC_GET_ARG1(answer->data)); 277 278 if (rc == EOK) 279 rc = copy_to_uspace((void *) IPC_GET_ARG2(answer->data), 280 &dst_base, sizeof(dst_base)); 281 274 IPC_GET_ARG2(*olddata), AS, 275 IPC_GET_ARG1(answer->data), IPC_GET_ARG3(*olddata)); 282 276 IPC_SET_RETVAL(answer->data, rc); 283 277 return rc; 284 278 } 285 279 } else if (IPC_GET_IMETHOD(*olddata) == IPC_M_SHARE_IN) { 286 if (!IPC_GET_RETVAL(answer->data)) { 280 if (!IPC_GET_RETVAL(answer->data)) { 287 281 irq_spinlock_lock(&answer->sender->lock, true); 288 282 as_t *as = answer->sender->as; 289 283 irq_spinlock_unlock(&answer->sender->lock, true); 290 284 291 uintptr_t dst_base = (uintptr_t) -1;292 285 int rc = as_area_share(AS, IPC_GET_ARG1(answer->data), 293 IPC_GET_ARG1(*olddata), as, IPC_GET_ARG2(answer->data), 294 &dst_base, IPC_GET_ARG3(answer->data)); 295 IPC_SET_ARG4(answer->data, dst_base); 286 IPC_GET_ARG2(*olddata), as, IPC_GET_ARG1(*olddata), 287 IPC_GET_ARG2(answer->data)); 296 288 IPC_SET_RETVAL(answer->data, rc); 297 289 } … … 459 451 break; 460 452 } 461 case IPC_M_C LONE_ESTABLISH:453 case IPC_M_CONNECT_ME: 462 454 IPC_SET_ARG5(call->data, (sysarg_t) phone); 463 455 break; … … 597 589 if (IPC_GET_IMETHOD(call->data) == IPC_M_CONNECT_TO_ME) { 598 590 int phoneid = phone_alloc(TASK); 599 if (phoneid < 0) { 591 if (phoneid < 0) { /* Failed to allocate phone */ 600 592 IPC_SET_RETVAL(call->data, ELIMIT); 601 593 ipc_answer(box, call); … … 883 875 884 876 /* 885 * User 877 * Userspace is not allowed to change interface and method of system 886 878 * methods on forward, allow changing ARG1, ARG2, ARG3 and ARG4 by 887 * means of imethod, arg1, arg2 and arg3.879 * means of method, arg1, arg2 and arg3. 888 880 * If the interface and method is immutable, don't change anything. 889 881 */ … … 897 889 IPC_SET_ARG3(call->data, arg2); 898 890 899 if (slow) 891 if (slow) { 900 892 IPC_SET_ARG4(call->data, arg3); 901 902 /*903 * For system methods we deliberately don't904 * overwrite ARG5.905 */893 /* 894 * For system methods we deliberately don't 895 * overwrite ARG5. 896 */ 897 } 906 898 } else { 907 899 IPC_SET_IMETHOD(call->data, imethod); … … 1193 1185 * 1194 1186 */ 1195 sysarg_t sys_ irq_register(inr_t inr, devno_t devno, sysarg_t imethod,1187 sysarg_t sys_register_irq(inr_t inr, devno_t devno, sysarg_t imethod, 1196 1188 irq_code_t *ucode) 1197 1189 { … … 1210 1202 * 1211 1203 */ 1212 sysarg_t sys_ irq_unregister(inr_t inr, devno_t devno)1204 sysarg_t sys_unregister_irq(inr_t inr, devno_t devno) 1213 1205 { 1214 1206 if (!(cap_get(TASK) & CAP_IRQ_REG))
Note:
See TracChangeset
for help on using the changeset viewer.