Changeset a1026da in mainline
- Timestamp:
- 2017-12-22T22:43:25Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1569a9b
- Parents:
- f04b5b3
- git-author:
- Jakub Jermar <jakub@…> (2017-12-22 21:47:09)
- git-committer:
- Jakub Jermar <jakub@…> (2017-12-22 22:43:25)
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
abi/include/abi/ipc/ipc.h
rf04b5b3 ra1026da 60 60 #define IPC_CALL_NOTIF (1 << 3) 61 61 62 /** The call was automatically answered by the kernel due to error */ 63 #define IPC_CALL_AUTO_REPLY (1 << 4) 64 62 65 /** 63 66 * Maximum buffer size allowed for IPC_M_DATA_WRITE and -
kernel/generic/src/ipc/sysipc.c
rf04b5b3 ra1026da 761 761 762 762 if (!call) { 763 ipc_data_t data = { 0};763 ipc_data_t data = {}; 764 764 data.cap_handle = CAP_NIL; 765 765 STRUCT_TO_USPACE(calldata, &data); … … 767 767 } 768 768 769 call->data.flags = call->flags; 769 770 if (call->flags & IPC_CALL_NOTIF) { 770 771 /* Set in_phone_hash to the interrupt counter */ 771 772 call->data.phone = (void *) call->priv; 772 773 773 call->data.flags = IPC_CALL_NOTIF;774 774 call->data.cap_handle = CAP_NIL; 775 775 … … 788 788 } 789 789 790 call->data.flags = IPC_CALL_ANSWERED;791 790 call->data.cap_handle = CAP_NIL; 792 791 … … 826 825 /* 827 826 * The callee will not receive this call and no one else has a chance to 828 * answer it. Reply with the EPARTY error code. 827 * answer it. Set the IPC_CALL_AUTO_REPLY flag and return the EPARTY 828 * error code. 829 829 */ 830 830 ipc_data_t saved_data; … … 839 839 IPC_SET_RETVAL(call->data, EPARTY); 840 840 (void) answer_preprocess(call, saved ? &saved_data : NULL); 841 call->flags |= IPC_CALL_AUTO_REPLY; 841 842 ipc_answer(&TASK->answerbox, call); 842 843 -
uspace/lib/c/generic/async.c
rf04b5b3 ra1026da 1496 1496 1497 1497 if (call.cap_handle == CAP_NIL) { 1498 if (call.flags == 0) { 1499 /* This neither a notification nor an answer. */ 1498 if ((call.flags & 1499 (IPC_CALL_NOTIF | IPC_CALL_ANSWERED)) == 0) { 1500 /* Neither a notification nor an answer. */ 1500 1501 handle_expired_timeouts(); 1501 1502 continue;
Note:
See TracChangeset
for help on using the changeset viewer.