Changeset 76d7305 in mainline


Ignore:
Timestamp:
2006-05-31T14:13:35Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
343fc179
Parents:
4fded58
Message:

Slightly changed semantics of AS_AREA_SEND/RECV.

Location:
generic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • generic/include/ipc/ipc.h

    r4fded58 r76d7305  
    132132 * - ARG1 - Where the area will be mapped
    133133 * - ARG2 - Expected size of area
    134  * - ARG3 - Requested rights for the area
     134 * - ARG3 - User defined argument
    135135 * on answer - the server sets ARG1 as src as address of the as_area
    136  * to be shared
    137  *
    138  *
     136 * to be shared, ARG2 is set to rights that will be used for sharing,
     137 * which is returned as part of answer back to the receiver
    139138 */
    140139#define IPC_M_AS_AREA_RECV      6
  • generic/src/ipc/sysipc.c

    r4fded58 r76d7305  
    137137                if (!IPC_GET_RETVAL(answer->data)) { /* Accepted, handle as_area receipt */
    138138                        ipl_t ipl;
     139                        int rc;
    139140                        as_t *as;
    140141                       
     
    145146                        interrupts_restore(ipl);
    146147                       
    147                         return as_area_share(as, IPC_GET_ARG1(*olddata), IPC_GET_ARG2(*olddata),
    148                                              AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG3(*olddata));
     148                        rc = as_area_share(as, IPC_GET_ARG1(*olddata), IPC_GET_ARG2(*olddata),
     149                                           AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG3(*olddata));
     150                        IPC_SET_RETVAL(answer->data, rc);
     151                        return rc;
    149152                }
    150153        } else if (IPC_GET_METHOD(*olddata) == IPC_M_AS_AREA_RECV) {
     
    161164                       
    162165                        rc = as_area_share(AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG2(*olddata),
    163                                            as, IPC_GET_ARG1(*olddata), IPC_GET_ARG3(*olddata));
     166                                           as, IPC_GET_ARG1(*olddata), IPC_GET_ARG2(answer->data));
    164167                        IPC_SET_RETVAL(answer->data, rc);
    165168                }
  • generic/src/mm/as.c

    r4fded58 r76d7305  
    517517        src_backend_data = src_area->backend_data;
    518518       
    519         if (src_size != acc_size) {
     519        if (src_size != acc_size || (src_flags & dst_flags_mask) != dst_flags_mask) {
    520520                mutex_unlock(&src_area->lock);
    521521                mutex_unlock(&src_as->lock);
     
    555555         * to support sharing in less privileged mode.
    556556         */
    557         dst_area = as_area_create(dst_as, src_flags & dst_flags_mask, src_size, dst_base,
     557        dst_area = as_area_create(dst_as, dst_flags_mask, src_size, dst_base,
    558558                                  AS_AREA_ATTR_PARTIAL, src_backend, &src_backend_data);
    559559        if (!dst_area) {
Note: See TracChangeset for help on using the changeset viewer.