Changeset 9fe4db3 in mainline for uspace/lib/c/generic/ddi.c


Ignore:
Timestamp:
2011-12-17T08:38:38Z (12 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
65d7b0a
Parents:
f4d5f90 (diff), 792807f (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 with mainline

File:
1 edited

Legend:

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

    rf4d5f90 r9fe4db3  
    3333 */
    3434
     35#include <assert.h>
     36#include <unistd.h>
     37#include <errno.h>
    3538#include <sys/types.h>
    3639#include <abi/ddi/arg.h>
     
    5760 * Caller of this function must have the CAP_MEM_MANAGER capability.
    5861 *
    59  * @param p  Physical address of the starting frame.
    60  * @param v  Virtual address of the starting page.
     62 * @param phys  Physical address of the starting frame.
     63 * @param virt  Virtual address of the starting page.
    6164 * @param pages Number of pages to map.
    6265 * @param flags Flags for the new address space area.
     
    6972 *
    7073 */
    71 int physmem_map(void *pf, void *vp, size_t pages, unsigned int flags)
     74int physmem_map(void *phys, void *virt, size_t pages, unsigned int flags)
    7275{
    73         return __SYSCALL4(SYS_PHYSMEM_MAP, (sysarg_t) pf, (sysarg_t) vp,
    74             pages, flags);
     76        return __SYSCALL4(SYS_PHYSMEM_MAP, (sysarg_t) phys,
     77            (sysarg_t) virt, pages, flags);
    7578}
    7679
    77 int dmamem_map(dmamem_t *dmamem, size_t pages, unsigned int map_flags,
    78     unsigned int dma_flags)
     80int dmamem_map(void *virt, size_t size, unsigned int map_flags,
     81    unsigned int flags, void **phys)
    7982{
    80         // FIXME TODO
    81         return -1;
     83        return (int) __SYSCALL5(SYS_DMAMEM_MAP, (sysarg_t) virt,
     84            (sysarg_t) size, (sysarg_t) map_flags, (sysarg_t) flags,
     85            (sysarg_t) phys);
    8286}
    8387
    84 int dmamem_unmap(dmamem_t *dmamem)
     88int dmamem_map_anonymous(size_t size, unsigned int map_flags,
     89    unsigned int flags, void **phys, void **virt)
    8590{
    86         // FIXME TODO
    87         return -1;
     91        *virt = as_get_mappable_page(size);
     92        if (*virt == NULL)
     93                return ENOMEM;
     94       
     95        return dmamem_map(*virt, size, map_flags,
     96            flags | DMAMEM_FLAGS_ANONYMOUS, phys);
    8897}
    8998
    90 int dmamem_lock(void *virt, void **phys, size_t pages)
     99int dmamem_unmap(void *virt, size_t size, unsigned int flags)
    91100{
    92         // FIXME TODO
    93         return -1;
     101        return __SYSCALL3(SYS_DMAMEM_UNMAP, (sysarg_t) virt, (sysarg_t) size,
     102            (sysarg_t) flags);
    94103}
    95104
    96 int dmamem_unlock(void *virt, size_t pages)
     105int dmamem_unmap_anonymous(void *virt)
    97106{
    98         // FIXME TODO
    99         return -1;
     107        return __SYSCALL3(SYS_DMAMEM_UNMAP, (sysarg_t) virt, 0,
     108            DMAMEM_FLAGS_ANONYMOUS);
    100109}
    101110
Note: See TracChangeset for help on using the changeset viewer.