Changeset 6aeca0d in mainline for uspace/lib/c


Ignore:
Timestamp:
2016-08-28T11:27:42Z (9 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f2c3fed
Parents:
1e5d01b
Message:

Make as_area_create() accept phone to external pager

Location:
uspace/lib/c
Files:
7 edited

Legend:

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

    r1e5d01b r6aeca0d  
    5050 * @param size  Size of the area.
    5151 * @param flags Flags describing type of the area.
     52 * @param pager If non-negative, phone to the external pager backing the area.
     53 *              If AS_AREA_UNPAGED (-1), the area is 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, int pager)
    5860{
    59         return (void *) __SYSCALL4(SYS_AS_AREA_CREATE, (sysarg_t) base,
    60             (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry);
     61        return (void *) __SYSCALL5(SYS_AS_AREA_CREATE, (sysarg_t) base,
     62            (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry,
     63            (sysarg_t) pager);
    6164}
    6265
  • uspace/lib/c/generic/elf/elf_mod.c

    r1e5d01b r6aeca0d  
    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

    r1e5d01b r6aeca0d  
    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

    r1e5d01b r6aeca0d  
    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

    r1e5d01b r6aeca0d  
    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

    r1e5d01b r6aeca0d  
    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

    r1e5d01b r6aeca0d  
    4444#define AS_MAP_FAILED  ((void *) -1)
    4545
     46#define AS_AREA_UNPAGED -1
     47
    4648static inline size_t SIZE2PAGES(size_t size)
    4749{
     
    5759}
    5860
    59 extern void *as_area_create(void *, size_t, unsigned int);
     61extern void *as_area_create(void *, size_t, unsigned int, int);
    6062extern int as_area_resize(void *, size_t, unsigned int);
    6163extern int as_area_change_flags(void *, unsigned int);
Note: See TracChangeset for help on using the changeset viewer.