Changeset 2c2d54a in mainline for uspace/lib/c


Ignore:
Timestamp:
2016-09-02T17:58:05Z (9 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4c3602c4
Parents:
4bf0926e (diff), 3233adb (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from lp:~jakub/helenos/pager

Location:
uspace/lib/c
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/as.c

    r4bf0926e r2c2d54a  
    4545/** Create address space area.
    4646 *
    47  * @param base  Starting virtual address of the area.
    48  *              If set to AS_AREA_ANY ((void *) -1),
    49  *              the kernel finds a mappable area.
    50  * @param size  Size of the area.
    51  * @param flags Flags describing type of the area.
     47 * @param base       Starting virtual address of the area.
     48 *                   If set to AS_AREA_ANY ((void *) -1), the kernel finds a
     49 *                   mappable area.
     50 * @param size       Size of the area.
     51 * @param flags      Flags describing type of the area.
     52 * @param pager_info Pager info structure or AS_AREA_UNPAGED (NULL) if the area
     53 *                   is not paged (i.e. anonymous).
    5254 *
    5355 * @return Starting virtual address of the created area on success.
     
    5557 *
    5658 */
    57 void *as_area_create(void *base, size_t size, unsigned int flags)
     59void *as_area_create(void *base, size_t size, unsigned int flags,
     60    as_area_pager_info_t *pager_info)
    5861{
    59         return (void *) __SYSCALL4(SYS_AS_AREA_CREATE, (sysarg_t) base,
    60             (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry);
     62        return (void *) __SYSCALL5(SYS_AS_AREA_CREATE, (sysarg_t) base,
     63            (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry,
     64            (sysarg_t) pager_info);
    6165}
    6266
  • uspace/lib/c/generic/async.c

    r4bf0926e r2c2d54a  
    116116#include <stdlib.h>
    117117#include <macros.h>
     118#include <as.h>
     119#include <abi/mm/as.h>
    118120#include "private/libc.h"
    119121
     
    33813383}
    33823384
     3385void *async_as_area_create(void *base, size_t size, unsigned int flags,
     3386    async_sess_t *pager, sysarg_t id1, sysarg_t id2, sysarg_t id3)
     3387{
     3388        as_area_pager_info_t pager_info = {
     3389                .pager = pager->phone,
     3390                .id1 = id1,
     3391                .id2 = id2,
     3392                .id3 = id3
     3393        };
     3394        return as_area_create(base, size, flags, &pager_info);
     3395}
     3396
    33833397/** @}
    33843398 */
  • uspace/lib/c/generic/elf/elf_mod.c

    r4bf0926e r2c2d54a  
    370370         */
    371371        a = as_area_create((uint8_t *) base + bias, mem_sz,
    372             AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
     372            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE,
     373            AS_AREA_UNPAGED);
    373374        if (a == AS_MAP_FAILED) {
    374375                DPRINTF("memory mapping failed (%p, %zu)\n",
  • uspace/lib/c/generic/fibril.c

    r4bf0926e r2c2d54a  
    279279        size_t stack_size = (stksz == FIBRIL_DFLT_STK_SIZE) ?
    280280            stack_size_get() : stksz;
    281         fibril->stack = as_area_create((void *) -1, stack_size,
     281        fibril->stack = as_area_create(AS_AREA_ANY, stack_size,
    282282            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
    283             AS_AREA_LATE_RESERVE);
     283            AS_AREA_LATE_RESERVE, AS_AREA_UNPAGED);
    284284        if (fibril->stack == (void *) -1) {
    285285                fibril_teardown(fibril, false);
  • uspace/lib/c/generic/io/chargrid.c

    r4bf0926e r2c2d54a  
    6060        if ((flags & CHARGRID_FLAG_SHARED) == CHARGRID_FLAG_SHARED) {
    6161                scrbuf = (chargrid_t *) as_area_create(AS_AREA_ANY, size,
    62                     AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
     62                    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE,
     63                    AS_AREA_UNPAGED);
    6364                if (scrbuf == AS_MAP_FAILED)
    6465                        return NULL;
  • uspace/lib/c/generic/malloc.c

    r4bf0926e r2c2d54a  
    354354        size_t asize = ALIGN_UP(size, PAGE_SIZE);
    355355        void *astart = as_area_create(AS_AREA_ANY, asize,
    356             AS_AREA_WRITE | AS_AREA_READ | AS_AREA_CACHEABLE);
     356            AS_AREA_WRITE | AS_AREA_READ | AS_AREA_CACHEABLE, AS_AREA_UNPAGED);
    357357        if (astart == AS_MAP_FAILED)
    358358                return false;
  • uspace/lib/c/generic/thread.c

    r4bf0926e r2c2d54a  
    116116        void *stack = as_area_create(AS_AREA_ANY, stack_size,
    117117            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
    118             AS_AREA_LATE_RESERVE);
     118            AS_AREA_LATE_RESERVE, AS_AREA_UNPAGED);
    119119        if (stack == AS_MAP_FAILED) {
    120120                free(uarg);
  • uspace/lib/c/include/as.h

    r4bf0926e r2c2d54a  
    3838#include <sys/types.h>
    3939#include <abi/mm/as.h>
    40 #include <task.h>
    4140#include <libarch/config.h>
    42 
    43 #define AS_AREA_ANY    ((void *) -1)
    44 #define AS_MAP_FAILED  ((void *) -1)
    4541
    4642static inline size_t SIZE2PAGES(size_t size)
     
    5753}
    5854
    59 extern void *as_area_create(void *, size_t, unsigned int);
     55extern void *as_area_create(void *, size_t, unsigned int,
     56    as_area_pager_info_t *);
    6057extern int as_area_resize(void *, size_t, unsigned int);
    6158extern int as_area_change_flags(void *, unsigned int);
  • uspace/lib/c/include/async.h

    r4bf0926e r2c2d54a  
    488488extern void async_remote_state_release_exchange(async_exch_t *);
    489489
     490extern void *async_as_area_create(void *, size_t, unsigned int, async_sess_t *,
     491    sysarg_t, sysarg_t, sysarg_t);
     492
    490493#endif
    491494
Note: See TracChangeset for help on using the changeset viewer.