Changes in uspace/drv/bus/usb/uhci/utils/malloc32.h [fbcdeb8:af2b806] in mainline
- File:
-
- 1 edited
-
uspace/drv/bus/usb/uhci/utils/malloc32.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/utils/malloc32.h
rfbcdeb8 raf2b806 54 54 if (addr == NULL) 55 55 return 0; 56 56 57 57 uintptr_t result; 58 58 const int ret = as_get_physical_mapping(addr, &result); 59 59 if (ret != EOK) 60 60 return 0; 61 62 return result; 61 return (result | ((uintptr_t)addr & 0xfff)); 63 62 } 64 63 /*----------------------------------------------------------------------------*/ 65 /** DMA mallocsimulator64 /** Physical mallocator simulator 66 65 * 67 66 * @param[in] size Size of the required memory space 68 * @return Address of the al igned and big enough memory place, NULL on failure.67 * @return Address of the alligned and big enough memory place, NULL on failure. 69 68 */ 70 static inline void * malloc32(size_t size) 71 { 69 static inline void * malloc32(size_t size) { 72 70 /* This works only when the host has less than 4GB of memory as 73 71 * physical address needs to fit into 32 bits */ … … 85 83 } 86 84 /*----------------------------------------------------------------------------*/ 87 /** DMA mallocsimulator85 /** Physical mallocator simulator 88 86 * 89 87 * @param[in] addr Address of the place allocated by malloc32 90 88 */ 91 static inline void free32(void *addr) 92 { free(addr); } 89 static inline void free32(void *addr) { 90 if (!addr) 91 return; 92 free(addr); 93 } 93 94 /*----------------------------------------------------------------------------*/ 94 95 /** Create 4KB page mapping … … 98 99 static inline void * get_page(void) 99 100 { 100 void *address = as_area_create((void *) -1, UHCI_REQUIRED_PAGE_SIZE, 101 AS_AREA_READ | AS_AREA_WRITE); 102 if (address == (void *) -1) 101 void *free_address = as_get_mappable_page(UHCI_REQUIRED_PAGE_SIZE); 102 if (free_address == 0) 103 103 return NULL; 104 104 void *address = as_area_create(free_address, UHCI_REQUIRED_PAGE_SIZE, 105 AS_AREA_READ | AS_AREA_WRITE); 106 if (address != free_address) 107 return NULL; 105 108 return address; 106 109 }
Note:
See TracChangeset
for help on using the changeset viewer.
