Changeset 46fc2f9 in mainline
- Timestamp:
- 2006-05-27T22:57:21Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6212095
- Parents:
- 00b595b
- Location:
- generic
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/include/ipc/ipc.h
r00b595b r46fc2f9 43 43 * userspace, will be discarded */ 44 44 #define IPC_CALL_FORWARDED (1<<3) /* Call was forwarded */ 45 #define IPC_CALL_CONN_ME_TO (1<<4) /* Identify connect_me_to */45 #define IPC_CALL_CONN_ME_TO (1<<4) /* Identify connect_me_to answer */ 46 46 #define IPC_CALL_NOTIF (1<<5) /* Interrupt notification */ 47 47 … … 120 120 /** Interrupt notification */ 121 121 #define IPC_M_INTERRUPT 4 122 122 123 /** Send as_area over IPC 123 * - ARG2 - src base address 124 * - ARG3 - size of src as(filled automatically by kernel) 124 * - ARG1 - src base address 125 * - ARG2 - size of src as(filled automatically by kernel) 126 * - ARG3 - flags of the area being sent 125 127 * - on answer ARG1 - dst base adress 126 128 */ 127 129 #define IPC_M_AS_AREA_SEND 5 130 131 /** Get as_area over IPC 132 * - ARG1 - Where the area will be mapped 133 * - ARG2 - Expected size of area 134 * - ARG3 - Requested rights for the area 135 * on answer - the server sets ARG1 as src as address of the as_area 136 * to be shared 137 * 138 * 139 */ 140 #define IPC_M_AS_AREA_RECV 6 128 141 129 142 -
generic/include/mm/as.h
r00b595b r46fc2f9 169 169 extern void as_switch(as_t *old, as_t *new); 170 170 extern void as_free(as_t *as); 171 externint as_area_share(as_t *src_as, __address src_base, size_t acc_size,172 __address dst_base, int dst_flags_mask);171 int as_area_share(as_t *src_as, __address src_base, size_t acc_size, 172 as_t *dst_as, __address dst_base, int dst_flags_mask); 173 173 extern size_t as_get_size(__address base); 174 174 extern int used_space_insert(as_area_t *a, __address page, count_t count); -
generic/include/mm/slab.h
r00b595b r46fc2f9 39 39 40 40 /** Maximum size to be allocated by malloc */ 41 #define SLAB_MAX_MALLOC_W 1 741 #define SLAB_MAX_MALLOC_W 18 42 42 43 43 /** Initial Magazine size (TODO: dynamically growing magazines) */ -
generic/src/ipc/sysipc.c
r00b595b r46fc2f9 65 65 static inline int is_forwardable(__native method) 66 66 { 67 if (method == IPC_M_PHONE_HUNGUP || method == IPC_M_AS_AREA_SEND) 67 if (method == IPC_M_PHONE_HUNGUP || method == IPC_M_AS_AREA_SEND \ 68 || method == IPC_M_AS_AREA_RECV) 68 69 return 0; /* This message is meant only for the receiver */ 69 70 return 1; … … 86 87 if (IPC_GET_METHOD(call->data) == IPC_M_AS_AREA_SEND) 87 88 return 1; 88 return 0; 89 } 90 91 /** Interpret process answer as control information */ 89 if (IPC_GET_METHOD(call->data) == IPC_M_AS_AREA_RECV) 90 return 1; 91 return 0; 92 } 93 94 /** Interpret process answer as control information 95 * 96 * This function is called directly after sys_ipc_answer 97 */ 92 98 static inline int answer_preprocess(call_t *answer, ipc_data_t *olddata) 93 99 { … … 140 146 141 147 return as_area_share(as, IPC_GET_ARG1(*olddata), IPC_GET_ARG2(*olddata), 142 IPC_GET_ARG1(answer->data), IPC_GET_ARG3(*olddata)); 148 AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG3(*olddata)); 149 } 150 } else if (IPC_GET_METHOD(*olddata) == IPC_M_AS_AREA_RECV) { 151 if (!IPC_GET_RETVAL(answer->data)) { 152 ipl_t ipl; 153 as_t *as; 154 155 ipl = interrupts_disable(); 156 spinlock_lock(&answer->sender->lock); 157 as = answer->sender->as; 158 spinlock_unlock(&answer->sender->lock); 159 interrupts_restore(ipl); 160 161 return as_area_share(AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG2(*olddata), 162 as, IPC_GET_ARG1(*olddata), IPC_GET_ARG3(*olddata)); 143 163 } 144 164 } -
generic/src/mm/as.c
r00b595b r46fc2f9 457 457 * @param src_base Base address of the source address space area. 458 458 * @param acc_size Expected size of the source area. 459 * @param dst_as Pointer to destination address space. 459 460 * @param dst_base Target base address. 460 461 * @param dst_flags_mask Destination address space area flags mask. … … 468 469 */ 469 470 int as_area_share(as_t *src_as, __address src_base, size_t acc_size, 470 __address dst_base, int dst_flags_mask)471 as_t *dst_as, __address dst_base, int dst_flags_mask) 471 472 { 472 473 ipl_t ipl; … … 544 545 * to support sharing in less privileged mode. 545 546 */ 546 dst_area = as_area_create( AS, src_flags & dst_flags_mask, src_size, dst_base,547 dst_area = as_area_create(dst_as, src_flags & dst_flags_mask, src_size, dst_base, 547 548 AS_AREA_ATTR_PARTIAL, src_backend, &src_backend_data); 548 549 if (!dst_area) { -
generic/src/mm/slab.c
r00b595b r46fc2f9 128 128 "malloc-256","malloc-512","malloc-1K","malloc-2K", 129 129 "malloc-4K","malloc-8K","malloc-16K","malloc-32K", 130 "malloc-64K","malloc-128K" 130 "malloc-64K","malloc-128K","malloc-256K" 131 131 }; 132 132
Note:
See TracChangeset
for help on using the changeset viewer.