Rev 2637 | Rev 2662 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2637 | Rev 2660 | ||
|---|---|---|---|
| Line 664... | Line 664... | ||
| 664 | { |
664 | { |
| 665 | return __SYSCALL6(SYS_IPC_FORWARD_FAST, callid, phoneid, method, arg1, |
665 | return __SYSCALL6(SYS_IPC_FORWARD_FAST, callid, phoneid, method, arg1, |
| 666 | arg2, mode); |
666 | arg2, mode); |
| 667 | } |
667 | } |
| 668 | 668 | ||
| 669 | /** Wrapper for making IPC_M_DATA_SEND calls. |
669 | /** Wrapper for making IPC_M_DATA_WRITE calls. |
| 670 | * |
670 | * |
| 671 | * @param phoneid Phone that will be used to contact the receiving side. |
671 | * @param phoneid Phone that will be used to contact the receiving side. |
| 672 | * @param src Address of the beginning of the source buffer. |
672 | * @param src Address of the beginning of the source buffer. |
| 673 | * @param size Size of the source buffer. |
673 | * @param size Size of the source buffer. |
| 674 | * |
674 | * |
| 675 | * @return Zero on success or a negative error code from errno.h. |
675 | * @return Zero on success or a negative error code from errno.h. |
| 676 | */ |
676 | */ |
| 677 | int ipc_data_send(int phoneid, void *src, size_t size) |
677 | int ipc_data_write_send(int phoneid, void *src, size_t size) |
| 678 | { |
678 | { |
| 679 | return ipc_call_sync_3_0(phoneid, IPC_M_DATA_SEND, 0, (ipcarg_t) src, |
679 | return ipc_call_sync_3_0(phoneid, IPC_M_DATA_WRITE, 0, (ipcarg_t) src, |
| 680 | (ipcarg_t) size); |
680 | (ipcarg_t) size); |
| 681 | } |
681 | } |
| 682 | 682 | ||
| 683 | /** Wrapper for receiving the IPC_M_DATA_SEND calls. |
683 | /** Wrapper for receiving the IPC_M_DATA_WRITE calls. |
| 684 | * |
684 | * |
| 685 | * This wrapper only makes it more comfortable to receive IPC_M_DATA_SEND calls |
685 | * This wrapper only makes it more comfortable to receive IPC_M_DATA_WRITE calls |
| 686 | * so that the user doesn't have to remember the meaning of each IPC argument. |
686 | * so that the user doesn't have to remember the meaning of each IPC argument. |
| 687 | * |
687 | * |
| 688 | * So far, this wrapper is to be used from within a connection fibril. |
688 | * So far, this wrapper is to be used from within a connection fibril. |
| 689 | * |
689 | * |
| 690 | * @param callid Storage where the hash of the IPC_M_DATA_SEND call will |
690 | * @param callid Storage where the hash of the IPC_M_DATA_WRITE call will |
| 691 | * be stored. |
691 | * be stored. |
| 692 | * @param dst Storage where the suggested destination address will |
692 | * @param dst Storage where the suggested destination address will |
| 693 | * be stored. May be NULL. |
693 | * be stored. May be NULL. |
| 694 | * @param size Storage where the suggested size will be stored. May be |
694 | * @param size Storage where the suggested size will be stored. May be |
| 695 | * NULL |
695 | * NULL |
| 696 | * |
696 | * |
| 697 | * @return Non-zero on success, zero on failure. |
697 | * @return Non-zero on success, zero on failure. |
| 698 | */ |
698 | */ |
| 699 | int ipc_data_receive(ipc_callid_t *callid, void **dst, size_t *size) |
699 | int ipc_data_write_receive(ipc_callid_t *callid, void **dst, size_t *size) |
| 700 | { |
700 | { |
| 701 | ipc_call_t data; |
701 | ipc_call_t data; |
| 702 | 702 | ||
| 703 | assert(callid); |
703 | assert(callid); |
| 704 | 704 | ||
| 705 | *callid = async_get_call(&data); |
705 | *callid = async_get_call(&data); |
| 706 | if (IPC_GET_METHOD(data) != IPC_M_DATA_SEND) |
706 | if (IPC_GET_METHOD(data) != IPC_M_DATA_WRITE) |
| 707 | return 0; |
707 | return 0; |
| 708 | if (dst) |
708 | if (dst) |
| 709 | *dst = (void *) IPC_GET_ARG1(data); |
709 | *dst = (void *) IPC_GET_ARG1(data); |
| 710 | if (size) |
710 | if (size) |
| 711 | *size = (size_t) IPC_GET_ARG3(data); |
711 | *size = (size_t) IPC_GET_ARG3(data); |
| 712 | return 1; |
712 | return 1; |
| 713 | } |
713 | } |
| 714 | 714 | ||
| 715 | /** Wrapper for answering the IPC_M_DATA_SEND calls. |
715 | /** Wrapper for answering the IPC_M_DATA_WRITE calls. |
| 716 | * |
716 | * |
| 717 | * This wrapper only makes it more comfortable to answer IPC_M_DATA_SEND calls |
717 | * This wrapper only makes it more comfortable to answer IPC_M_DATA_WRITE calls |
| 718 | * so that the user doesn't have to remember the meaning of each IPC argument. |
718 | * so that the user doesn't have to remember the meaning of each IPC argument. |
| 719 | * |
719 | * |
| 720 | * @param callid Hash of the IPC_M_DATA_SEND call to answer. |
720 | * @param callid Hash of the IPC_M_DATA_WRITE call to answer. |
| 721 | * @param dst Final destination address for the IPC_M_DATA_SEND call. |
721 | * @param dst Final destination address for the IPC_M_DATA_WRITE call. |
| 722 | * @param size Final size for the IPC_M_DATA_SEND call. |
722 | * @param size Final size for the IPC_M_DATA_WRITE call. |
| 723 | * |
723 | * |
| 724 | * @return Zero on success or a value from @ref errno.h on failure. |
724 | * @return Zero on success or a value from @ref errno.h on failure. |
| 725 | */ |
725 | */ |
| 726 | ipcarg_t ipc_data_deliver(ipc_callid_t callid, void *dst, size_t size) |
726 | ipcarg_t ipc_data_write_deliver(ipc_callid_t callid, void *dst, size_t size) |
| 727 | { |
727 | { |
| 728 | return ipc_answer_3(callid, EOK, (ipcarg_t) dst, 0, (ipcarg_t) size); |
728 | return ipc_answer_3(callid, EOK, (ipcarg_t) dst, 0, (ipcarg_t) size); |
| 729 | } |
729 | } |
| 730 | 730 | ||
| 731 | /** @} |
731 | /** @} |