- Timestamp:
- 2011-12-19T17:30:39Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 58f6229
- Parents:
- 24cf31f1
- Location:
- uspace
- Files:
-
- 35 edited
-
app/klog/klog.c (modified) (1 diff)
-
app/tester/mm/common.c (modified) (1 diff)
-
app/tester/mm/mapping1.c (modified) (1 diff)
-
drv/bus/usb/uhci/utils/malloc32.h (modified) (1 diff)
-
drv/bus/usb/usbmast/main.c (modified) (1 diff)
-
lib/c/generic/as.c (modified) (2 diffs)
-
lib/c/generic/async.c (modified) (4 diffs)
-
lib/c/generic/ddi.c (modified) (6 diffs)
-
lib/c/generic/ipc.c (modified) (5 diffs)
-
lib/c/generic/malloc.c (modified) (1 diff)
-
lib/c/generic/mman.c (modified) (1 diff)
-
lib/c/generic/time.c (modified) (1 diff)
-
lib/c/include/as.h (modified) (1 diff)
-
lib/c/include/async.h (modified) (2 diffs)
-
lib/c/include/ddi.h (modified) (1 diff)
-
lib/c/include/ipc/ipc.h (modified) (1 diff)
-
lib/fb/imgmap.c (modified) (1 diff)
-
lib/fb/screenbuffer.c (modified) (1 diff)
-
lib/fs/libfs.c (modified) (1 diff)
-
lib/net/generic/packet_remote.c (modified) (2 diffs)
-
lib/nic/src/nic_driver.c (modified) (1 diff)
-
srv/bd/ata_bd/ata_bd.c (modified) (1 diff)
-
srv/bd/file_bd/file_bd.c (modified) (1 diff)
-
srv/bd/gxe_bd/gxe_bd.c (modified) (1 diff)
-
srv/bd/part/guid_part/guid_part.c (modified) (1 diff)
-
srv/bd/part/mbr_part/mbr_part.c (modified) (1 diff)
-
srv/bd/rd/rd.c (modified) (2 diffs)
-
srv/hid/fb/fb.c (modified) (2 diffs)
-
srv/hid/fb/port/ega.c (modified) (1 diff)
-
srv/hid/fb/port/kchar.c (modified) (1 diff)
-
srv/hid/fb/port/kfb.c (modified) (1 diff)
-
srv/hid/fb/port/niagara.c (modified) (1 diff)
-
srv/hid/input/port/niagara.c (modified) (3 diffs)
-
srv/hw/irc/obio/obio.c (modified) (1 diff)
-
srv/vfs/vfs.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/klog/klog.c
r24cf31f1 rfbcdeb8 205 205 klog_length = size / sizeof(wchar_t); 206 206 207 klog = (wchar_t *) as_get_mappable_page(size); 208 if (klog == NULL) { 209 fprintf(stderr, "%s: Unable to allocate virtual memory area\n", 210 NAME); 211 return ENOMEM; 212 } 213 214 rc = physmem_map((void *) faddr, (void *) klog, pages, 215 AS_AREA_READ | AS_AREA_CACHEABLE); 207 rc = physmem_map((void *) faddr, pages, 208 AS_AREA_READ | AS_AREA_CACHEABLE, (void *) &klog); 216 209 if (rc != EOK) { 217 210 fprintf(stderr, "%s: Unable to map klog\n", NAME); -
uspace/app/tester/mm/common.c
r24cf31f1 rfbcdeb8 342 342 link_initialize(&area->link); 343 343 344 /* Map the memory area */345 void *addr = as_get_mappable_page(size);346 if (a ddr == NULL) {344 area->addr = as_area_create((void *) -1, size, 345 AS_AREA_WRITE | AS_AREA_READ); 346 if (area->addr == (void *) -1) { 347 347 free(area); 348 348 check_consistency("map_area (a)"); 349 return NULL;350 }351 352 area->addr = as_area_create(addr, size, AS_AREA_WRITE | AS_AREA_READ);353 if (area->addr == (void *) -1) {354 free(area);355 check_consistency("map_area (b)");356 349 return NULL; 357 350 } -
uspace/app/tester/mm/mapping1.c
r24cf31f1 rfbcdeb8 35 35 #include "../tester.h" 36 36 37 #define BUFFER1_PAGES 438 #define BUFFER2_PAGES 237 #define BUFFER1_PAGES 4 38 #define BUFFER2_PAGES 2 39 39 40 40 static void *create_as_area(size_t size) 41 41 { 42 void *result = as_get_mappable_page(size);43 42 TPRINTF("Creating AS area...\n"); 44 if (as_area_create(result, size, 45 AS_AREA_READ | AS_AREA_WRITE) != result) { 43 44 void *result = as_area_create((void *) -1, size, 45 AS_AREA_READ | AS_AREA_WRITE); 46 if (result == (void *) -1) 46 47 return NULL; 47 }48 48 49 return result; 49 50 } -
uspace/drv/bus/usb/uhci/utils/malloc32.h
r24cf31f1 rfbcdeb8 98 98 static inline void * get_page(void) 99 99 { 100 void *free_address = as_get_mappable_page(UHCI_REQUIRED_PAGE_SIZE); 101 if (free_address == 0) 100 void *address = as_area_create((void *) -1, UHCI_REQUIRED_PAGE_SIZE, 101 AS_AREA_READ | AS_AREA_WRITE); 102 if (address == (void *) -1) 102 103 return NULL; 103 void *address = as_area_create(free_address, UHCI_REQUIRED_PAGE_SIZE, 104 AS_AREA_READ | AS_AREA_WRITE); 105 if (address != free_address) 106 return NULL; 104 107 105 return address; 108 106 } -
uspace/drv/bus/usb/usbmast/main.c
r24cf31f1 rfbcdeb8 300 300 return; 301 301 } 302 303 comm_buf = as_get_mappable_page(comm_size);304 if (comm_buf == NULL) {302 303 (void) async_share_out_finalize(callid, &comm_buf); 304 if (comm_buf == (void *) -1) { 305 305 async_answer_0(callid, EHANGUP); 306 306 return; 307 307 } 308 309 (void) async_share_out_finalize(callid, comm_buf); 310 308 311 309 mfun = (usbmast_fun_t *) ((ddf_fun_t *)arg)->driver_data; 312 310 -
uspace/lib/c/generic/as.c
r24cf31f1 rfbcdeb8 45 45 /** Create address space area. 46 46 * 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. 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. 50 52 * 51 * @return address on success, (void *) -1 otherwise. 53 * @return Starting virtual address of the created area on success. 54 * @return (void *) -1 otherwise. 52 55 * 53 56 */ 54 void *as_area_create(void * address, size_t size, unsigned int flags)57 void *as_area_create(void *base, size_t size, unsigned int flags) 55 58 { 56 return (void *) __SYSCALL 3(SYS_AS_AREA_CREATE, (sysarg_t) address,57 (sysarg_t) size, (sysarg_t) flags );59 return (void *) __SYSCALL4(SYS_AS_AREA_CREATE, (sysarg_t) base, 60 (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry); 58 61 } 59 62 … … 102 105 } 103 106 104 /** Return pointer to unmapped address space area105 *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 117 107 /** Find mapping to physical address. 118 108 * -
uspace/lib/c/generic/async.c
r24cf31f1 rfbcdeb8 1998 1998 * 1999 1999 * @param exch Exchange for sending the message. 2000 * @param dst Destination address space area base.2001 2000 * @param size Size of the destination address space area. 2002 2001 * @param arg User defined argument. 2003 2002 * @param flags Storage for the received flags. Can be NULL. 2003 * @param dst Destination address space area base. Cannot be NULL. 2004 2004 * 2005 2005 * @return Zero on success or a negative error code from errno.h. 2006 2006 * 2007 2007 */ 2008 int async_share_in_start(async_exch_t *exch, void *dst, size_t size,2009 sysarg_t arg, unsigned int *flags)2008 int async_share_in_start(async_exch_t *exch, size_t size, sysarg_t arg, 2009 unsigned int *flags, void **dst) 2010 2010 { 2011 2011 if (exch == NULL) 2012 2012 return ENOENT; 2013 2013 2014 sysarg_t tmp_flags; 2015 int res = async_req_3_2(exch, IPC_M_SHARE_IN, (sysarg_t) dst, 2016 (sysarg_t) size, arg, NULL, &tmp_flags); 2014 sysarg_t _flags = 0; 2015 sysarg_t _dst = (sysarg_t) -1; 2016 int res = async_req_2_4(exch, IPC_M_SHARE_IN, (sysarg_t) size, 2017 arg, NULL, &_flags, NULL, &_dst); 2017 2018 2018 2019 if (flags) 2019 *flags = (unsigned int) tmp_flags; 2020 2020 *flags = (unsigned int) _flags; 2021 2022 *dst = (void *) _dst; 2021 2023 return res; 2022 2024 } … … 2047 2049 return false; 2048 2050 2049 *size = (size_t) IPC_GET_ARG 2(data);2051 *size = (size_t) IPC_GET_ARG1(data); 2050 2052 return true; 2051 2053 } … … 2053 2055 /** Wrapper for answering the IPC_M_SHARE_IN calls using the async framework. 2054 2056 * 2055 * This wrapper only makes it more comfortable to answer IPC_M_ DATA_READ2057 * This wrapper only makes it more comfortable to answer IPC_M_SHARE_IN 2056 2058 * calls so that the user doesn't have to remember the meaning of each IPC 2057 2059 * argument. … … 2131 2133 * 2132 2134 */ 2133 int async_share_out_finalize(ipc_callid_t callid, void * dst)2135 int async_share_out_finalize(ipc_callid_t callid, void **dst) 2134 2136 { 2135 2137 return ipc_share_out_finalize(callid, dst); -
uspace/lib/c/generic/ddi.c
r24cf31f1 rfbcdeb8 45 45 #include <align.h> 46 46 #include <libarch/config.h> 47 #include "private/libc.h" 47 48 48 49 /** Return unique device number. … … 61 62 * 62 63 * @param phys Physical address of the starting frame. 63 * @param virt Virtual address of the starting page.64 64 * @param pages Number of pages to map. 65 65 * @param flags Flags for the new address space area. 66 * @param virt Virtual address of the starting page. 66 67 * 67 68 * @return EOK on success … … 72 73 * 73 74 */ 74 int physmem_map(void *phys, void *virt, size_t pages, unsigned int flags)75 int physmem_map(void *phys, size_t pages, unsigned int flags, void **virt) 75 76 { 76 return __SYSCALL 4(SYS_PHYSMEM_MAP, (sysarg_t) phys,77 (sysarg_t) virt, pages, flags);77 return __SYSCALL5(SYS_PHYSMEM_MAP, (sysarg_t) phys, 78 pages, flags, (sysarg_t) virt, (sysarg_t) __entry); 78 79 } 79 80 … … 81 82 unsigned int flags, void **phys) 82 83 { 83 return (int) __SYSCALL 5(SYS_DMAMEM_MAP, (sysarg_t) virt,84 (sysarg_t) size, (sysarg_t) map_flags, (sysarg_t) flags,85 (sysarg_t) phys );84 return (int) __SYSCALL6(SYS_DMAMEM_MAP, (sysarg_t) size, 85 (sysarg_t) map_flags, (sysarg_t) flags & ~DMAMEM_FLAGS_ANONYMOUS, 86 (sysarg_t) phys, (sysarg_t) virt, 0); 86 87 } 87 88 … … 89 90 unsigned int flags, void **phys, void **virt) 90 91 { 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); 92 return (int) __SYSCALL6(SYS_DMAMEM_MAP, (sysarg_t) size, 93 (sysarg_t) map_flags, (sysarg_t) flags | DMAMEM_FLAGS_ANONYMOUS, 94 (sysarg_t) phys, (sysarg_t) virt, (sysarg_t) __entry); 97 95 } 98 96 99 int dmamem_unmap(void *virt, size_t size , unsigned int flags)97 int dmamem_unmap(void *virt, size_t size) 100 98 { 101 return __SYSCALL3(SYS_DMAMEM_UNMAP, (sysarg_t) virt, (sysarg_t) size, 102 (sysarg_t) flags); 99 return __SYSCALL3(SYS_DMAMEM_UNMAP, (sysarg_t) virt, (sysarg_t) size, 0); 103 100 } 104 101 … … 138 135 * @param pio_addr I/O start address. 139 136 * @param size Size of the I/O region. 140 * @param use_addr Address where the final address for141 * application's PIO will be stored.137 * @param virt Virtual address for application's 138 * PIO operations. 142 139 * 143 * @return Zero on success or negative error code. 140 * @return EOK on success. 141 * @return Negative error code on failure. 144 142 * 145 143 */ 146 int pio_enable(void *pio_addr, size_t size, void ** use_addr)144 int pio_enable(void *pio_addr, size_t size, void **virt) 147 145 { 148 void *phys;149 void *virt;150 size_t offset;151 unsigned int pages;152 153 146 #ifdef IO_SPACE_BOUNDARY 154 147 if (pio_addr < IO_SPACE_BOUNDARY) { 155 * use_addr= pio_addr;148 *virt = pio_addr; 156 149 return iospace_enable(task_get_id(), pio_addr, size); 157 150 } 158 151 #endif 159 152 160 phys = (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE); 161 offset = pio_addr - phys; 162 pages = ALIGN_UP(offset + size, PAGE_SIZE) >> PAGE_WIDTH; 163 virt = as_get_mappable_page(pages << PAGE_WIDTH); 164 *use_addr = virt + offset; 165 return physmem_map(phys, virt, pages, AS_AREA_READ | AS_AREA_WRITE); 153 void *phys_frame = 154 (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE); 155 size_t offset = pio_addr - phys_frame; 156 size_t pages = SIZE2PAGES(offset + size); 157 158 void *virt_page; 159 int rc = physmem_map(phys_frame, pages, 160 AS_AREA_READ | AS_AREA_WRITE, &virt_page); 161 if (rc != EOK) 162 return rc; 163 164 *virt = virt_page + offset; 165 return EOK; 166 166 } 167 167 -
uspace/lib/c/generic/ipc.c
r24cf31f1 rfbcdeb8 48 48 #include <fibril.h> 49 49 #include <macros.h> 50 #include "private/libc.h" 50 51 51 52 /** … … 760 761 * 761 762 * @param phoneid Phone that will be used to contact the receiving side. 762 * @param dst Destination address space area base.763 763 * @param size Size of the destination address space area. 764 764 * @param arg User defined argument. 765 765 * @param flags Storage for received flags. Can be NULL. 766 * @param dst Destination address space area base. Cannot be NULL. 766 767 * 767 768 * @return Zero on success or a negative error code from errno.h. 768 769 * 769 770 */ 770 int ipc_share_in_start(int phoneid, void *dst, size_t size, sysarg_t arg, 771 unsigned int *flags) 772 { 773 sysarg_t tmp_flags = 0; 774 int res = ipc_call_sync_3_2(phoneid, IPC_M_SHARE_IN, (sysarg_t) dst, 775 (sysarg_t) size, arg, NULL, &tmp_flags); 771 int ipc_share_in_start(int phoneid, size_t size, sysarg_t arg, 772 unsigned int *flags, void **dst) 773 { 774 sysarg_t _flags = 0; 775 sysarg_t _dst = (sysarg_t) -1; 776 int res = ipc_call_sync_2_4(phoneid, IPC_M_SHARE_IN, (sysarg_t) size, 777 arg, NULL, &_flags, NULL, &_dst); 776 778 777 779 if (flags) 778 *flags = (unsigned int) tmp_flags; 779 780 *flags = (unsigned int) _flags; 781 782 *dst = (void *) _dst; 780 783 return res; 781 784 } … … 783 786 /** Wrapper for answering the IPC_M_SHARE_IN calls. 784 787 * 785 * This wrapper only makes it more comfortable to answer IPC_M_ DATA_READ788 * This wrapper only makes it more comfortable to answer IPC_M_SHARE_IN 786 789 * calls so that the user doesn't have to remember the meaning of each 787 790 * IPC argument. … … 796 799 int ipc_share_in_finalize(ipc_callid_t callid, void *src, unsigned int flags) 797 800 { 798 return ipc_answer_2(callid, EOK, (sysarg_t) src, (sysarg_t) flags); 801 return ipc_answer_3(callid, EOK, (sysarg_t) src, (sysarg_t) flags, 802 (sysarg_t) __entry); 799 803 } 800 804 … … 826 830 * 827 831 */ 828 int ipc_share_out_finalize(ipc_callid_t callid, void * dst)829 { 830 return ipc_answer_ 1(callid, EOK, (sysarg_t) dst);832 int ipc_share_out_finalize(ipc_callid_t callid, void **dst) 833 { 834 return ipc_answer_2(callid, EOK, (sysarg_t) __entry, (sysarg_t) dst); 831 835 } 832 836 -
uspace/lib/c/generic/malloc.c
r24cf31f1 rfbcdeb8 283 283 static bool area_create(size_t size) 284 284 { 285 void *start = as_get_mappable_page(size); 286 if (start == NULL) 287 return false; 288 289 /* Align the heap area on page boundary */ 290 void *astart = (void *) ALIGN_UP((uintptr_t) start, PAGE_SIZE); 285 /* Align the heap area size on page boundary */ 291 286 size_t asize = ALIGN_UP(size, PAGE_SIZE); 292 293 astart = as_area_create(astart, asize,AS_AREA_WRITE | AS_AREA_READ);287 void *astart = as_area_create((void *) -1, asize, 288 AS_AREA_WRITE | AS_AREA_READ); 294 289 if (astart == (void *) -1) 295 290 return false; -
uspace/lib/c/generic/mman.c
r24cf31f1 rfbcdeb8 42 42 { 43 43 if (!start) 44 start = as_get_mappable_page(length);44 start = (void *) -1; 45 45 46 46 // if (!((flags & MAP_SHARED) ^ (flags & MAP_PRIVATE))) -
uspace/lib/c/generic/time.c
r24cf31f1 rfbcdeb8 147 147 } 148 148 149 void *addr = as_get_mappable_page(PAGE_SIZE); 150 if (addr == NULL) { 151 errno = ENOMEM; 152 return -1; 153 } 154 155 rc = physmem_map((void *) faddr, addr, 1, 156 AS_AREA_READ | AS_AREA_CACHEABLE); 149 void *addr; 150 rc = physmem_map((void *) faddr, 1, 151 AS_AREA_READ | AS_AREA_CACHEABLE, &addr); 157 152 if (rc != EOK) { 158 153 as_area_destroy(addr); -
uspace/lib/c/include/as.h
r24cf31f1 rfbcdeb8 59 59 extern int as_area_destroy(void *); 60 60 extern void *set_maxheapsize(size_t); 61 extern void *as_get_mappable_page(size_t);62 61 extern int as_get_physical_mapping(const void *, uintptr_t *); 63 62 -
uspace/lib/c/include/async.h
r24cf31f1 rfbcdeb8 346 346 */ 347 347 348 #define async_share_in_start_0_0(exch, dst, size) \349 async_share_in_start(exch, dst, size, 0, NULL)350 #define async_share_in_start_0_1(exch, dst, size, flags) \351 async_share_in_start(exch, dst, size, 0, flags)352 #define async_share_in_start_1_0(exch, dst, size, arg) \353 async_share_in_start(exch, dst, size, arg, NULL)354 #define async_share_in_start_1_1(exch, dst, size, arg, flags) \355 async_share_in_start(exch, dst, size, arg, flags)356 357 extern int async_share_in_start(async_exch_t *, void *,size_t, sysarg_t,358 unsigned int * );348 #define async_share_in_start_0_0(exch, size, dst) \ 349 async_share_in_start(exch, size, 0, NULL, dst) 350 #define async_share_in_start_0_1(exch, size, flags, dst) \ 351 async_share_in_start(exch, size, 0, flags, dst) 352 #define async_share_in_start_1_0(exch, size, arg, dst) \ 353 async_share_in_start(exch, size, arg, NULL, dst) 354 #define async_share_in_start_1_1(exch, size, arg, flags, dst) \ 355 async_share_in_start(exch, size, arg, flags, dst) 356 357 extern int async_share_in_start(async_exch_t *, size_t, sysarg_t, 358 unsigned int *, void **); 359 359 extern bool async_share_in_receive(ipc_callid_t *, size_t *); 360 360 extern int async_share_in_finalize(ipc_callid_t, void *, unsigned int); … … 362 362 extern int async_share_out_start(async_exch_t *, void *, unsigned int); 363 363 extern bool async_share_out_receive(ipc_callid_t *, size_t *, unsigned int *); 364 extern int async_share_out_finalize(ipc_callid_t, void * );364 extern int async_share_out_finalize(ipc_callid_t, void **); 365 365 366 366 /* -
uspace/lib/c/include/ddi.h
r24cf31f1 rfbcdeb8 42 42 extern int device_assign_devno(void); 43 43 44 extern int physmem_map(void *, void *, size_t, unsigned int);44 extern int physmem_map(void *, size_t, unsigned int, void **); 45 45 46 46 extern int dmamem_map(void *, size_t, unsigned int, unsigned int, void **); 47 47 extern int dmamem_map_anonymous(size_t, unsigned int, unsigned int, void **, 48 48 void **); 49 extern int dmamem_unmap(void *, size_t , unsigned int);49 extern int dmamem_unmap(void *, size_t); 50 50 extern int dmamem_unmap_anonymous(void *); 51 51 -
uspace/lib/c/include/ipc/ipc.h
r24cf31f1 rfbcdeb8 271 271 */ 272 272 273 #define ipc_share_in_start_0_0(phoneid, dst, size) \274 ipc_share_in_start((phoneid), ( dst), (size), 0, NULL)275 #define ipc_share_in_start_0_1(phoneid, dst, size, flags) \276 ipc_share_in_start((phoneid), ( dst), (size), 0, (flags))277 #define ipc_share_in_start_1_0(phoneid, dst, size, arg) \278 ipc_share_in_start((phoneid), ( dst), (size), (arg), NULL)279 #define ipc_share_in_start_1_1(phoneid, dst, size, arg, flags) \280 ipc_share_in_start((phoneid), ( dst), (size), (arg), (flags))281 282 extern int ipc_share_in_start(int, void *, size_t, sysarg_t, unsigned int*);273 #define ipc_share_in_start_0_0(phoneid, size, dst) \ 274 ipc_share_in_start((phoneid), (size), 0, NULL, (dst)) 275 #define ipc_share_in_start_0_1(phoneid, size, flags, dst) \ 276 ipc_share_in_start((phoneid), (size), 0, (flags), (dst)) 277 #define ipc_share_in_start_1_0(phoneid, size, arg, dst) \ 278 ipc_share_in_start((phoneid), (size), (arg), NULL, (dst)) 279 #define ipc_share_in_start_1_1(phoneid, size, arg, flags, dst) \ 280 ipc_share_in_start((phoneid), (size), (arg), (flags), (dst)) 281 282 extern int ipc_share_in_start(int, size_t, sysarg_t, unsigned int *, void **); 283 283 extern int ipc_share_in_finalize(ipc_callid_t, void *, unsigned int); 284 284 extern int ipc_share_out_start(int, void *, unsigned int); 285 extern int ipc_share_out_finalize(ipc_callid_t, void * );285 extern int ipc_share_out_finalize(ipc_callid_t, void **); 286 286 extern int ipc_data_read_start(int, void *, size_t); 287 287 extern int ipc_data_read_finalize(ipc_callid_t, const void *, size_t); -
uspace/lib/fb/imgmap.c
r24cf31f1 rfbcdeb8 420 420 421 421 if ((flags & IMGMAP_FLAG_SHARED) == IMGMAP_FLAG_SHARED) { 422 imgmap = (imgmap_t *) as_get_mappable_page(size); 423 424 if (as_area_create((void *) imgmap, size, AS_AREA_READ | 425 AS_AREA_WRITE | AS_AREA_CACHEABLE) != (void *) imgmap) 422 imgmap = (imgmap_t *) as_area_create((void *) -1, size, 423 AS_AREA_READ | AS_AREA_WRITE); 424 if (imgmap == (void *) -1) 426 425 return NULL; 427 426 } else { -
uspace/lib/fb/screenbuffer.c
r24cf31f1 rfbcdeb8 79 79 80 80 if ((flags & SCREENBUFFER_FLAG_SHARED) == SCREENBUFFER_FLAG_SHARED) { 81 scrbuf = (screenbuffer_t *) as_get_mappable_page(size); 82 83 if (as_area_create((void *) scrbuf, size, AS_AREA_READ | 84 AS_AREA_WRITE | AS_AREA_CACHEABLE) != (void *) scrbuf) 81 scrbuf = (screenbuffer_t *) as_area_create((void *) -1, size, 82 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); 83 if (scrbuf == (void *) -1) 85 84 return NULL; 86 85 } else { -
uspace/lib/fs/libfs.c
r24cf31f1 rfbcdeb8 336 336 337 337 /* 338 * Allocate piece of address space for PLB.339 */ 340 r eg.plb_ro = as_get_mappable_page(PLB_SIZE);341 if ( !reg.plb_ro) {338 * Request sharing the Path Lookup Buffer with VFS. 339 */ 340 rc = async_share_in_start_0_0(exch, PLB_SIZE, (void *) ®.plb_ro); 341 if (reg.plb_ro == (void *) -1) { 342 342 async_exchange_end(exch); 343 343 async_wait_for(req, NULL); 344 344 return ENOMEM; 345 345 } 346 347 /*348 * Request sharing the Path Lookup Buffer with VFS.349 */350 rc = async_share_in_start_0_0(exch, reg.plb_ro, PLB_SIZE);351 346 352 347 async_exchange_end(exch); -
uspace/lib/net/generic/packet_remote.c
r24cf31f1 rfbcdeb8 66 66 packet_id_t packet_id, size_t size) 67 67 { 68 *packet = (packet_t *) as_get_mappable_page(size);69 70 68 async_exch_t *exch = async_exchange_begin(sess); 71 69 ipc_call_t answer; 72 70 aid_t message = async_send_1(exch, NET_PACKET_GET, packet_id, &answer); 73 int rc = async_share_in_start_0_0(exch, *packet, size);71 int rc = async_share_in_start_0_0(exch, size, (void *) packet); 74 72 async_exchange_end(exch); 75 73 … … 79 77 if (rc != EOK) 80 78 return rc; 79 80 if (packet == (void *) -1) 81 return ENOMEM; 81 82 82 83 rc = pm_add(*packet); -
uspace/lib/nic/src/nic_driver.c
r24cf31f1 rfbcdeb8 1345 1345 int nic_dma_unlock_packet(packet_t *packet, size_t size) 1346 1346 { 1347 return dmamem_unmap(packet, size , 0);1347 return dmamem_unmap(packet, size); 1348 1348 } 1349 1349 -
uspace/srv/bd/ata_bd/ata_bd.c
r24cf31f1 rfbcdeb8 309 309 } 310 310 311 fs_va = as_get_mappable_page(comm_size);312 if (fs_va == NULL) {311 (void) async_share_out_finalize(callid, &fs_va); 312 if (fs_va == (void *) -1) { 313 313 async_answer_0(callid, EHANGUP); 314 314 return; 315 315 } 316 317 (void) async_share_out_finalize(callid, fs_va);318 316 319 317 while (true) { -
uspace/srv/bd/file_bd/file_bd.c
r24cf31f1 rfbcdeb8 190 190 } 191 191 192 fs_va = as_get_mappable_page(comm_size);193 if (fs_va == NULL) {192 (void) async_share_out_finalize(callid, &fs_va); 193 if (fs_va == (void *) -1) { 194 194 async_answer_0(callid, EHANGUP); 195 195 return; 196 196 } 197 198 (void) async_share_out_finalize(callid, fs_va);199 197 200 198 while (true) { -
uspace/srv/bd/gxe_bd/gxe_bd.c
r24cf31f1 rfbcdeb8 193 193 } 194 194 195 fs_va = as_get_mappable_page(comm_size);196 if (fs_va == NULL) {195 (void) async_share_out_finalize(callid, &fs_va); 196 if (fs_va == (void *) -1) { 197 197 async_answer_0(callid, EHANGUP); 198 198 return; 199 199 } 200 201 (void) async_share_out_finalize(callid, fs_va);202 200 203 201 while (true) { -
uspace/srv/bd/part/guid_part/guid_part.c
r24cf31f1 rfbcdeb8 348 348 } 349 349 350 fs_va = as_get_mappable_page(comm_size);351 if (fs_va == NULL) {350 (void) async_share_out_finalize(callid, &fs_va); 351 if (fs_va == (void *) -1) { 352 352 async_answer_0(callid, EHANGUP); 353 353 return; 354 354 } 355 356 (void) async_share_out_finalize(callid, fs_va);357 355 358 356 while (true) { -
uspace/srv/bd/part/mbr_part/mbr_part.c
r24cf31f1 rfbcdeb8 425 425 } 426 426 427 fs_va = as_get_mappable_page(comm_size);428 if (fs_va == NULL) {427 (void) async_share_out_finalize(callid, &fs_va); 428 if (fs_va == (void *) -1) { 429 429 async_answer_0(callid, EHANGUP); 430 430 return; 431 431 } 432 433 (void) async_share_out_finalize(callid, fs_va);434 432 435 433 while (1) { -
uspace/srv/bd/rd/rd.c
r24cf31f1 rfbcdeb8 105 105 unsigned int flags; 106 106 if (async_share_out_receive(&callid, &comm_size, &flags)) { 107 fs_va = as_get_mappable_page(comm_size); 108 if (fs_va) { 109 (void) async_share_out_finalize(callid, fs_va); 110 } else { 107 (void) async_share_out_finalize(callid, &fs_va); 108 if (fs_va == (void *) -1) { 111 109 async_answer_0(callid, EHANGUP); 112 110 return; … … 224 222 225 223 rd_size = ALIGN_UP(size, block_size); 226 rd_addr = as_get_mappable_page(rd_size);227 228 224 unsigned int flags = 229 225 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE; 230 ret = physmem_map((void *) addr_phys, rd_addr, 231 ALIGN_UP(rd_size, PAGE_SIZE) >> PAGE_WIDTH, flags); 232 if (ret < 0) { 226 227 ret = physmem_map((void *) addr_phys, 228 ALIGN_UP(rd_size, PAGE_SIZE) >> PAGE_WIDTH, flags, &rd_addr); 229 if (ret != EOK) { 233 230 printf("%s: Error mapping RAM disk\n", NAME); 234 231 return false; -
uspace/srv/hid/fb/fb.c
r24cf31f1 rfbcdeb8 304 304 } 305 305 306 frontbuf->data = as_get_mappable_page(frontbuf->size); 307 int rc = async_answer_1(callid, EOK, (sysarg_t) frontbuf->data); 308 if (rc != EOK) { 306 int rc = async_share_out_finalize(callid, &frontbuf->data); 307 if ((rc != EOK) || (frontbuf->data == (void *) -1)) { 309 308 free(frontbuf); 310 309 async_answer_0(iid, ENOMEM); … … 348 347 } 349 348 350 imagemap->data = as_get_mappable_page(imagemap->size); 351 int rc = async_answer_1(callid, EOK, (sysarg_t) imagemap->data); 352 if (rc != EOK) { 349 int rc = async_share_out_finalize(callid, &imagemap->data); 350 if ((rc != EOK) || (imagemap->data == (void *) -1)) { 353 351 free(imagemap); 354 352 async_answer_0(iid, ENOMEM); -
uspace/srv/hid/fb/port/ega.c
r24cf31f1 rfbcdeb8 280 280 281 281 ega.size = (width * height) << 1; 282 ega.addr = as_get_mappable_page(ega.size); 283 if (ega.addr == NULL) 284 return ENOMEM; 285 286 rc = physmem_map((void *) paddr, ega.addr, 287 ALIGN_UP(ega.size, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE); 282 283 rc = physmem_map((void *) paddr, 284 ALIGN_UP(ega.size, PAGE_SIZE) >> PAGE_WIDTH, 285 AS_AREA_READ | AS_AREA_WRITE, (void *) &ega.addr); 288 286 if (rc != EOK) 289 287 return rc; -
uspace/srv/hid/fb/port/kchar.c
r24cf31f1 rfbcdeb8 83 83 return rc; 84 84 85 kchar.addr = as_get_mappable_page(1); 86 if (kchar.addr == NULL) 87 return ENOMEM; 88 89 rc = physmem_map((void *) paddr, kchar.addr, 90 ALIGN_UP(1, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE); 85 rc = physmem_map((void *) paddr, 86 ALIGN_UP(1, PAGE_SIZE) >> PAGE_WIDTH, 87 AS_AREA_READ | AS_AREA_WRITE, (void *) &kchar.addr); 91 88 if (rc != EOK) 92 89 return rc; -
uspace/srv/hid/fb/port/kfb.c
r24cf31f1 rfbcdeb8 756 756 757 757 kfb.size = scanline * height; 758 kfb.addr = as_get_mappable_page(kfb.size); 759 if (kfb.addr == NULL) { 760 free(kfb.glyphs); 761 return ENOMEM; 762 } 763 764 rc = physmem_map((void *) paddr + offset, kfb.addr, 765 ALIGN_UP(kfb.size, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE); 758 759 rc = physmem_map((void *) paddr + offset, 760 ALIGN_UP(kfb.size, PAGE_SIZE) >> PAGE_WIDTH, 761 AS_AREA_READ | AS_AREA_WRITE, (void *) &kfb.addr); 766 762 if (rc != EOK) { 767 763 free(kfb.glyphs); -
uspace/srv/hid/fb/port/niagara.c
r24cf31f1 rfbcdeb8 103 103 return rc; 104 104 105 niagara.fifo = 106 (output_fifo_t *) as_get_mappable_page(sizeof(output_fifo_t)); 107 if (niagara.fifo == NULL) 108 return ENOMEM; 109 110 rc = physmem_map((void *) paddr, (void *) niagara.fifo, 1, 111 AS_AREA_READ | AS_AREA_WRITE); 105 rc = physmem_map((void *) paddr, 1, 106 AS_AREA_READ | AS_AREA_WRITE, (void *) &niagara.fifo); 112 107 if (rc != EOK) 113 108 return rc; -
uspace/srv/hid/input/port/niagara.c
r24cf31f1 rfbcdeb8 63 63 #define POLL_INTERVAL 10000 64 64 65 /**66 * Virtual address mapped to the buffer shared with the kernel counterpart.67 */68 static uintptr_t input_buffer_addr;69 70 65 /* 71 66 * Kernel counterpart of the driver pushes characters (it has read) here. … … 102 97 return -1; 103 98 104 input_buffer_addr = (uintptr_t) as_get_mappable_page(PAGE_SIZE); 105 int rc = physmem_map((void *) paddr, (void *) input_buffer_addr, 106 1, AS_AREA_READ | AS_AREA_WRITE); 107 99 int rc = physmem_map((void *) paddr, 1, 100 AS_AREA_READ | AS_AREA_WRITE, (void *) &input_buffer); 108 101 if (rc != 0) { 109 102 printf("Niagara: uspace driver couldn't map physical memory: %d\n", … … 111 104 return rc; 112 105 } 113 114 input_buffer = (input_buffer_t) input_buffer_addr;115 106 116 107 thread_id_t tid; -
uspace/srv/hw/irc/obio/obio.c
r24cf31f1 rfbcdeb8 124 124 125 125 base_phys = (void *) paddr; 126 base_virt = as_get_mappable_page(OBIO_SIZE);127 126 128 127 int flags = AS_AREA_READ | AS_AREA_WRITE; 129 int retval = physmem_map(base_phys, (void *) base_virt,130 ALIGN_UP(OBIO_SIZE, PAGE_SIZE) >> PAGE_WIDTH, flags );128 int retval = physmem_map(base_phys, 129 ALIGN_UP(OBIO_SIZE, PAGE_SIZE) >> PAGE_WIDTH, flags, &base_virt); 131 130 132 131 if (retval < 0) { -
uspace/srv/vfs/vfs.c
r24cf31f1 rfbcdeb8 172 172 * Allocate and initialize the Path Lookup Buffer. 173 173 */ 174 plb = as_get_mappable_page(PLB_SIZE); 175 if (!plb) { 176 printf(NAME ": Cannot allocate a mappable piece of address space\n"); 177 return ENOMEM; 178 } 179 180 if (as_area_create(plb, PLB_SIZE, AS_AREA_READ | AS_AREA_WRITE | 181 AS_AREA_CACHEABLE) != plb) { 174 plb = as_area_create((void *) -1, PLB_SIZE, 175 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); 176 if (plb == (void *) -1) { 182 177 printf(NAME ": Cannot create address space area\n"); 183 178 return ENOMEM;
Note:
See TracChangeset
for help on using the changeset viewer.
