Index: uspace/lib/c/generic/as.c
===================================================================
--- uspace/lib/c/generic/as.c	(revision fd6bd6d12960c6582429396112e1f7ba96fd148c)
+++ uspace/lib/c/generic/as.c	(revision 8708be3b71f810c397b5d8fe39f63d6cff6f86fe)
@@ -117,26 +117,15 @@
 /** Find mapping to physical address.
  *
- * @param address Virtual address in question (virtual).
- * @param[out] frame Frame address (physical).
- * @return Error code.
- * @retval EOK No error, @p frame holds the translation.
- * @retval ENOENT Mapping not found.
+ * @param      virt Virtual address to find mapping for.
+ * @param[out] phys Physical adress.
+ *
+ * @return EOK on no error.
+ * @retval ENOENT if no mapping was found.
+ *
  */
-int as_get_physical_mapping(const void *address, uintptr_t *frame)
+int as_get_physical_mapping(const void *virt, uintptr_t *phys)
 {
-	uintptr_t tmp_frame;
-	uintptr_t virt = (uintptr_t) address;
-	
-	int rc = (int) __SYSCALL2(SYS_PAGE_FIND_MAPPING,
-	    (sysarg_t) virt, (sysarg_t) &tmp_frame);
-	if (rc != EOK) {
-		return rc;
-	}
-	
-	if (frame != NULL) {
-		*frame = tmp_frame;
-	}
-	
-	return EOK;
+	return (int) __SYSCALL2(SYS_PAGE_FIND_MAPPING, (sysarg_t) virt,
+	    (sysarg_t) phys);
 }
 
Index: uspace/lib/c/generic/ddi.c
===================================================================
--- uspace/lib/c/generic/ddi.c	(revision fd6bd6d12960c6582429396112e1f7ba96fd148c)
+++ uspace/lib/c/generic/ddi.c	(revision 8708be3b71f810c397b5d8fe39f63d6cff6f86fe)
@@ -33,4 +33,7 @@
  */
 
+#include <assert.h>
+#include <unistd.h>
+#include <errno.h>
 #include <sys/types.h>
 #include <abi/ddi/arg.h>
@@ -57,6 +60,6 @@
  * Caller of this function must have the CAP_MEM_MANAGER capability.
  *
- * @param pf    Physical address of the starting frame.
- * @param vp    Virtual address of the starting page.
+ * @param phys  Physical address of the starting frame.
+ * @param virt  Virtual address of the starting page.
  * @param pages Number of pages to map.
  * @param flags Flags for the new address space area.
@@ -69,33 +72,39 @@
  *
  */
-int physmem_map(void *pf, void *vp, size_t pages, unsigned int flags)
+int physmem_map(void *phys, void *virt, size_t pages, unsigned int flags)
 {
-	return __SYSCALL4(SYS_PHYSMEM_MAP, (sysarg_t) pf, (sysarg_t) vp,
-	    pages, flags);
+	return __SYSCALL4(SYS_PHYSMEM_MAP, (sysarg_t) phys,
+	    (sysarg_t) virt, pages, flags);
 }
 
-int dmamem_map(dmamem_t *dmamem, size_t pages, unsigned int map_flags,
-    unsigned int dma_flags)
+int dmamem_map(void *virt, size_t size, unsigned int map_flags,
+    unsigned int flags, void **phys)
 {
-	// FIXME TODO
-	return -1;
+	return (int) __SYSCALL5(SYS_DMAMEM_MAP, (sysarg_t) virt,
+	    (sysarg_t) size, (sysarg_t) map_flags, (sysarg_t) flags,
+	    (sysarg_t) phys);
 }
 
-int dmamem_unmap(dmamem_t *dmamem)
+int dmamem_map_anonymous(size_t size, unsigned int map_flags,
+    unsigned int flags, void **phys, void **virt)
 {
-	// FIXME TODO
-	return -1;
+	*virt = as_get_mappable_page(size);
+	if (*virt == NULL)
+		return ENOMEM;
+	
+	return dmamem_map(*virt, size, map_flags,
+	    flags | DMAMEM_FLAGS_ANONYMOUS, phys);
 }
 
-int dmamem_lock(void *virt, void **phys, size_t pages)
+int dmamem_unmap(void *virt, size_t size, unsigned int flags)
 {
-	// FIXME TODO
-	return -1;
+	return __SYSCALL3(SYS_DMAMEM_UNMAP, (sysarg_t) virt, (sysarg_t) size,
+	    (sysarg_t) flags);
 }
 
-int dmamem_unlock(void *virt, size_t pages)
+int dmamem_unmap_anonymous(void *virt)
 {
-	// FIXME TODO
-	return -1;
+	return __SYSCALL3(SYS_DMAMEM_UNMAP, (sysarg_t) virt, 0,
+	    DMAMEM_FLAGS_ANONYMOUS);
 }
 
