Changeset 515542 in git for kernel


Ignore:
Timestamp:
May 10, 2022, 4:52:42 PM (2 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
8b811f4e2c82f8c9c973cb0e694725e6c174a8c1
Parents:
74622283ad46295f0602f84dc752ccf62f699461
Message:
fix: gcc-12 does not like offsetof ?
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/oswrapper/vspace.cc

    r7462228 r515542  
    198198void vmem_free(vaddr_t vaddr) {
    199199  lock_allocator();
     200  #if defined(__GNUC__) && (__GNUC__>11)
     201  vaddr -= (sizeof(vaddr_t)*2);
     202  #else
    200203  vaddr -= offsetof(Block, data);
     204  #endif
    201205  vmem.ensure_is_mapped(vaddr);
    202206  size_t segno = vmem.segment_no(vaddr);
     
    246250vaddr_t vmem_alloc(size_t size) {
    247251  lock_allocator();
     252  #if defined(__GNUC__) && (__GNUC__>11)
     253  size_t alloc_size = size + (sizeof(vaddr_t)*2);
     254  #else
    248255  size_t alloc_size = size + offsetof(Block, data);
     256  #endif
    249257  int level = find_level(alloc_size);
    250258  int flevel = level;
     
    276284  Block *block = vmem.block_ptr(vmem.freelist[level]);
    277285  vaddr_t vaddr = vmem.freelist[level];
     286  #if defined(__GNUC__) && (__GNUC__>11)
     287  vaddr_t result = vaddr + (sizeof(vaddr_t)*2);
     288  #else
    278289  vaddr_t result = vaddr + offsetof(Block, data);
     290  #endif
    279291  vmem.freelist[level] = block->next;
    280292  if (block->next != VADDR_NULL)
     
    752764void vmem_free(vaddr_t vaddr) {
    753765  lock_allocator();
     766  #if defined(__GNUC__) && (__GNUC__>11)
     767  vaddr_t vaddr -= (sizeof(vaddr_t)*2);
     768  #else
    754769  vaddr -= offsetof(Block, data);
     770  #endif
    755771  vmem.ensure_is_mapped(vaddr);
    756772  size_t segno = vmem.segment_no(vaddr);
     
    800816vaddr_t vmem_alloc(size_t size) {
    801817  lock_allocator();
     818  #if defined(__GNUC__) && (__GNUC__>11)
     819  size_t alloc_size = size +  (sizeof(vaddr_t)*2);
     820  #else
    802821  size_t alloc_size = size + offsetof(Block, data);
     822  #endif
    803823  int level = find_level(alloc_size);
    804824  int flevel = level;
     
    830850  Block *block = vmem.block_ptr(vmem.freelist[level]);
    831851  vaddr_t vaddr = vmem.freelist[level];
     852  #if defined(__GNUC__) && (__GNUC__>11)
     853  vaddr_t result = vaddr + (sizeof(vaddr_t)*2);
     854  #else
    832855  vaddr_t result = vaddr + offsetof(Block, data);
     856  #endif
    833857  vmem.freelist[level] = block->next;
    834858  if (block->next != VADDR_NULL)
Note: See TracChangeset for help on using the changeset viewer.