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