Changeset 8442d10 in mainline for uspace/lib/c/generic/ddi.c


Ignore:
Timestamp:
2013-09-09T21:48:12Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c67dbd6
Parents:
2e2c18a1
Message:

improve the API of physmem_map(), dmamem_map() and dmamem_map_anonymous()
the "constraint" argument of dmamem_map_anonymous() should be used to specify bits disallowed in the physical frame address

File:
1 edited

Legend:

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

    r2e2c18a1 r8442d10  
    7676 *
    7777 */
    78 int physmem_map(void *phys, size_t pages, unsigned int flags, void **virt)
     78int physmem_map(uintptr_t phys, size_t pages, unsigned int flags, void **virt)
    7979{
    8080        return __SYSCALL5(SYS_PHYSMEM_MAP, (sysarg_t) phys,
     
    8383
    8484int dmamem_map(void *virt, size_t size, unsigned int map_flags,
    85     unsigned int flags, void **phys)
     85    unsigned int flags, uintptr_t *phys)
    8686{
    8787        return (int) __SYSCALL6(SYS_DMAMEM_MAP, (sysarg_t) size,
     
    9090}
    9191
    92 int dmamem_map_anonymous(size_t size, unsigned int map_flags,
    93     unsigned int flags, void **phys, void **virt)
    94 {
     92int dmamem_map_anonymous(size_t size, uintptr_t constraint,
     93    unsigned int map_flags, unsigned int flags, uintptr_t *phys, void **virt)
     94{
     95        *phys = constraint;
     96       
    9597        return (int) __SYSCALL6(SYS_DMAMEM_MAP, (sysarg_t) size,
    9698            (sysarg_t) map_flags, (sysarg_t) flags | DMAMEM_FLAGS_ANONYMOUS,
     
    158160        if (!virt)
    159161                return EINVAL;
    160 
    161         void *phys_frame =
    162             (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE);
    163         size_t offset = pio_addr - phys_frame;
     162       
     163        uintptr_t phys_frame =
     164            ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE);
     165        size_t offset = (uintptr_t) pio_addr - phys_frame;
    164166        size_t pages = SIZE2PAGES(offset + size);
    165167       
Note: See TracChangeset for help on using the changeset viewer.