- Timestamp:
- May 10, 2022, 4:52:42 PM (2 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 8b811f4e2c82f8c9c973cb0e694725e6c174a8c1
- Parents:
- 74622283ad46295f0602f84dc752ccf62f699461
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/oswrapper/vspace.cc
r7462228 r515542 198 198 void vmem_free(vaddr_t vaddr) { 199 199 lock_allocator(); 200 #if defined(__GNUC__) && (__GNUC__>11) 201 vaddr -= (sizeof(vaddr_t)*2); 202 #else 200 203 vaddr -= offsetof(Block, data); 204 #endif 201 205 vmem.ensure_is_mapped(vaddr); 202 206 size_t segno = vmem.segment_no(vaddr); … … 246 250 vaddr_t vmem_alloc(size_t size) { 247 251 lock_allocator(); 252 #if defined(__GNUC__) && (__GNUC__>11) 253 size_t alloc_size = size + (sizeof(vaddr_t)*2); 254 #else 248 255 size_t alloc_size = size + offsetof(Block, data); 256 #endif 249 257 int level = find_level(alloc_size); 250 258 int flevel = level; … … 276 284 Block *block = vmem.block_ptr(vmem.freelist[level]); 277 285 vaddr_t vaddr = vmem.freelist[level]; 286 #if defined(__GNUC__) && (__GNUC__>11) 287 vaddr_t result = vaddr + (sizeof(vaddr_t)*2); 288 #else 278 289 vaddr_t result = vaddr + offsetof(Block, data); 290 #endif 279 291 vmem.freelist[level] = block->next; 280 292 if (block->next != VADDR_NULL) … … 752 764 void vmem_free(vaddr_t vaddr) { 753 765 lock_allocator(); 766 #if defined(__GNUC__) && (__GNUC__>11) 767 vaddr_t vaddr -= (sizeof(vaddr_t)*2); 768 #else 754 769 vaddr -= offsetof(Block, data); 770 #endif 755 771 vmem.ensure_is_mapped(vaddr); 756 772 size_t segno = vmem.segment_no(vaddr); … … 800 816 vaddr_t vmem_alloc(size_t size) { 801 817 lock_allocator(); 818 #if defined(__GNUC__) && (__GNUC__>11) 819 size_t alloc_size = size + (sizeof(vaddr_t)*2); 820 #else 802 821 size_t alloc_size = size + offsetof(Block, data); 822 #endif 803 823 int level = find_level(alloc_size); 804 824 int flevel = level; … … 830 850 Block *block = vmem.block_ptr(vmem.freelist[level]); 831 851 vaddr_t vaddr = vmem.freelist[level]; 852 #if defined(__GNUC__) && (__GNUC__>11) 853 vaddr_t result = vaddr + (sizeof(vaddr_t)*2); 854 #else 832 855 vaddr_t result = vaddr + offsetof(Block, data); 856 #endif 833 857 vmem.freelist[level] = block->next; 834 858 if (block->next != VADDR_NULL)
Note: See TracChangeset
for help on using the changeset viewer.