Changes in uspace/lib/c/generic/as.c [fbcdeb8:8d70937] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/as.c
rfbcdeb8 r8d70937 45 45 /** Create address space area. 46 46 * 47 * @param base Starting virtual address of the area. 48 * If set to (void *) -1, the kernel finds 49 * a mappable area. 50 * @param size Size of the area. 51 * @param flags Flags describing type of the area. 47 * @param address Virtual address where to place new address space area. 48 * @param size Size of the area. 49 * @param flags Flags describing type of the area. 52 50 * 53 * @return Starting virtual address of the created area on success. 54 * @return (void *) -1 otherwise. 51 * @return address on success, (void *) -1 otherwise. 55 52 * 56 53 */ 57 void *as_area_create(void * base, size_t size, unsigned int flags)54 void *as_area_create(void *address, size_t size, unsigned int flags) 58 55 { 59 return (void *) __SYSCALL 4(SYS_AS_AREA_CREATE, (sysarg_t) base,60 (sysarg_t) size, (sysarg_t) flags , (sysarg_t) __entry);56 return (void *) __SYSCALL3(SYS_AS_AREA_CREATE, (sysarg_t) address, 57 (sysarg_t) size, (sysarg_t) flags); 61 58 } 62 59 … … 105 102 } 106 103 104 /** Return pointer to unmapped address space area 105 * 106 * @param size Requested size of the allocation. 107 * 108 * @return Pointer to the beginning of unmapped address space area. 109 * 110 */ 111 void *as_get_mappable_page(size_t size) 112 { 113 return (void *) __SYSCALL2(SYS_AS_GET_UNMAPPED_AREA, 114 (sysarg_t) __entry, (sysarg_t) size); 115 } 116 107 117 /** Find mapping to physical address. 108 118 * 109 * @param virt Virtual address to find mapping for. 110 * @param[out] phys Physical adress. 111 * 112 * @return EOK on no error. 113 * @retval ENOENT if no mapping was found. 114 * 119 * @param address Virtual address in question (virtual). 120 * @param[out] frame Frame address (physical). 121 * @return Error code. 122 * @retval EOK No error, @p frame holds the translation. 123 * @retval ENOENT Mapping not found. 115 124 */ 116 int as_get_physical_mapping(const void * virt, uintptr_t *phys)125 int as_get_physical_mapping(const void *address, uintptr_t *frame) 117 126 { 118 return (int) __SYSCALL2(SYS_PAGE_FIND_MAPPING, (sysarg_t) virt, 119 (sysarg_t) phys); 127 uintptr_t tmp_frame; 128 uintptr_t virt = (uintptr_t) address; 129 130 int rc = (int) __SYSCALL2(SYS_PAGE_FIND_MAPPING, 131 (sysarg_t) virt, (sysarg_t) &tmp_frame); 132 if (rc != EOK) { 133 return rc; 134 } 135 136 if (frame != NULL) { 137 *frame = tmp_frame; 138 } 139 140 return EOK; 120 141 } 121 142
Note:
See TracChangeset
for help on using the changeset viewer.