Rev 1228 | Rev 1240 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1228 | Rev 1237 | ||
|---|---|---|---|
| Line 26... | Line 26... | ||
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | */ |
27 | */ |
| 28 | 28 | ||
| 29 | #include <libc.h> |
29 | #include <libc.h> |
| 30 | #include <unistd.h> |
30 | #include <unistd.h> |
| - | 31 | #include <kernel/mm/as_arg.h> |
|
| - | 32 | #include <task.h> |
|
| 31 | 33 | ||
| 32 | /** Create address space area. |
34 | /** Create address space area. |
| 33 | * |
35 | * |
| 34 | * @param address Virtual address where to place new address space area. |
36 | * @param address Virtual address where to place new address space area. |
| 35 | * @param size Size of the area. |
37 | * @param size Size of the area. |
| Line 53... | Line 55... | ||
| 53 | void *as_area_resize(void *address, size_t size, int flags) |
55 | void *as_area_resize(void *address, size_t size, int flags) |
| 54 | { |
56 | { |
| 55 | return (void *) __SYSCALL3(SYS_AS_AREA_RESIZE, (sysarg_t ) address, (sysarg_t) size, (sysarg_t) flags); |
57 | return (void *) __SYSCALL3(SYS_AS_AREA_RESIZE, (sysarg_t ) address, (sysarg_t) size, (sysarg_t) flags); |
| 56 | } |
58 | } |
| 57 | 59 | ||
| - | 60 | /** Prepare to accept address space area. |
|
| - | 61 | * |
|
| - | 62 | * @param id Task ID of the donor task. |
|
| - | 63 | * @param base Destination address for the new address space area. |
|
| - | 64 | * @param size Size of the new address space area. |
|
| - | 65 | * @param flags Flags of the area TASK is willing to accept. |
|
| - | 66 | * |
|
| - | 67 | * @return 0 on success or a code from errno.h. |
|
| - | 68 | */ |
|
| - | 69 | int as_area_accept(task_id_t id, void *base, size_t size, int flags) |
|
| - | 70 | { |
|
| - | 71 | as_area_acptsnd_arg_t arg; |
|
| - | 72 | ||
| - | 73 | arg.task_id = id; |
|
| - | 74 | arg.base = base; |
|
| - | 75 | arg.size = size; |
|
| - | 76 | arg.flags = flags; |
|
| - | 77 | ||
| - | 78 | return __SYSCALL1(SYS_AS_AREA_ACCEPT, (__native) &arg); |
|
| - | 79 | } |
|
| - | 80 | ||
| - | 81 | /** Send address space area to another task. |
|
| - | 82 | * |
|
| - | 83 | * @param id Task ID of the acceptor task. |
|
| - | 84 | * @param base Source address of the existing address space area. |
|
| - | 85 | * |
|
| - | 86 | * @return 0 on success or a code from errno.h. |
|
| - | 87 | */ |
|
| - | 88 | int as_area_send(task_id_t id, void *base) |
|
| - | 89 | { |
|
| - | 90 | as_area_acptsnd_arg_t arg; |
|
| - | 91 | ||
| - | 92 | arg.task_id = id; |
|
| - | 93 | arg.base = base; |
|
| - | 94 | arg.size = 0; |
|
| - | 95 | arg.flags = 0; |
|
| - | 96 | ||
| - | 97 | return __SYSCALL1(SYS_AS_AREA_SEND, (__native) &arg); |
|
| - | 98 | } |
|
| - | 99 | ||
| 58 | static size_t heapsize = 0; |
100 | static size_t heapsize = 0; |
| 59 | /* Start of heap linker symbol */ |
101 | /* Start of heap linker symbol */ |
| 60 | extern char _heap; |
102 | extern char _heap; |
| 61 | 103 | ||
| 62 | /** Sbrk emulation |
104 | /** Sbrk emulation |