Changeset 6fbe8c in git for kernel


Ignore:
Timestamp:
Sep 29, 2021, 3:17:38 PM (3 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
4bd78f5e4c58b72e2ec9c8c2cc6ae6bb69b2a9c6
Parents:
5d7d03a80f539e219c587a909c4ffb0edfe71bf0
Message:
Revert "update vspace"

incompatible with old gcc

This reverts commit f80133aa286554c3e339eb7ac76f2f9050c5dbbe.
Location:
kernel
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/GBEngine/kChinese.cc

    r5d7d03 r6fbe8c  
    2020#include <sys/types.h>
    2121#include <sys/wait.h>
    22 #include <unistd.h>
    2322
    2423// send a number via a string s
  • kernel/GBEngine/kverify.cc

    r5d7d03 r6fbe8c  
    1616#include <sys/types.h>
    1717#include <sys/wait.h>
    18 #include <unistd.h>
    1918#endif
    2019
  • kernel/oswrapper/vspace.cc

    r5d7d03 r6fbe8c  
    33#include "kernel/mod2.h"
    44#ifdef HAVE_VSPACE
    5 #include <cstdlib>
    6 #include <unistd.h>
    7 #include <sys/mman.h>
    8 #include <sys/stat.h>
    9 
    105#ifdef HAVE_CPP_THREADS
    116#include <thread>
     
    8984  freelist = NULL;
    9085  for (int i = 0; i < MAX_SEGMENTS; i++) {
    91     if (!segments[i].is_free())
    92       munmap(segments[i].base, SEGMENT_SIZE);
    93     segments[i] = VSeg(NULL);
     86    if (segments[i].base) munmap(segments[i].base, SEGMENT_SIZE);
     87    segments[i] = NULL;
    9488  }
    9589  for (int i = 0; i < MAX_PROCESS; i++) {
     
    175169    vaddr_t vaddr = vmem.freelist[i];
    176170    if (vaddr != VADDR_NULL) {
    177       std::printf("%2d: %ld", i, vaddr);
     171      printf("%2d: %ld", i, vaddr);
    178172      vaddr_t prev = block_ptr(vaddr)->prev;
    179173      if (prev != VADDR_NULL) {
    180         std::printf("(%ld)", prev);
     174        printf("(%ld)", prev);
    181175      }
    182176      assert(block_ptr(vaddr)->prev == VADDR_NULL);
     
    187181        if (vaddr == VADDR_NULL)
    188182          break;
    189         std::printf(" -> %ld", vaddr);
     183        printf(" -> %ld", vaddr);
    190184        vaddr_t prev = block_ptr(vaddr)->prev;
    191185        if (prev != last_vaddr) {
    192           std::printf("(%ld)", prev);
     186          printf("(%ld)", prev);
    193187        }
    194188      }
    195       std::printf("\n");
    196     }
    197   }
    198   std::fflush(stdout);
     189      printf("\n");
     190    }
     191  }
     192  fflush(stdout);
    199193}
    200194
     
    324318      NULL, METABLOCK_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, vmem.fd, 0);
    325319  if (create) {
    326     std::memcpy(vmem.metapage->config_header, config, sizeof(config));
     320    memcpy(vmem.metapage->config_header, config, sizeof(config));
    327321    for (int i = 0; i <= LOG2_SEGMENT_SIZE; i++) {
    328322      vmem.metapage->freelist[i] = VADDR_NULL;
     
    331325    vmem.metapage->allocator_lock = FastLock(metapageaddr(allocator_lock));
    332326  } else {
    333     assert(std::memcmp(vmem.metapage->config_header, config,
    334         sizeof(config)) != 0);
     327    assert(memcmp(vmem.metapage->config_header, config, sizeof(config)) != 0);
    335328  }
    336329}
  • kernel/oswrapper/vspace.h

    r5d7d03 r6fbe8c  
    11#ifndef VSPACE_H
    22#define VSPACE_H
    3 
    4 #include "kernel/mod2.h"
    5 
    6 #ifdef HAVE_VSPACE
    7 
    83#include <fcntl.h>
    9 #include <cstdio>
    10 #include <cstring>
     4#include <stddef.h>
     5#include <stdio.h>
     6#include <stdlib.h>
     7#include <string.h>
     8#include <sys/mman.h>
     9#include <sys/stat.h>
     10#include <unistd.h>
    1111#include <assert.h>
    1212#include <new> // for placement new
    13 
     13#include "kernel/mod2.h"
     14
     15#ifdef HAVE_VSPACE
    1416
    1517#if __cplusplus >= 201100
     
    2022#endif
    2123
    22 // VSpace is a C++ library designed to allow processes in a
     24// vspace is a C++ library designed to allow processes in a
    2325// multi-process environment to interoperate via mmapped shared memory.
    2426// The library provides facilities for shared memory allocation and
     
    231233struct VSeg {
    232234  unsigned char *base;
    233   inline bool is_free() {
    234     return base == NULL;
    235   }
    236235  inline Block *block_ptr(segaddr_t addr) {
    237236    return (Block *) (base + addr);
     
    254253  MetaPage *metapage;
    255254  int fd;
    256   std::FILE *file_handle;
     255  FILE *file_handle;
    257256  int current_process; // index into process table
    258257  vaddr_t *freelist; // reference to metapage information
     
    280279  inline void ensure_is_mapped(vaddr_t vaddr) {
    281280    int seg = vaddr >> LOG2_SEGMENT_SIZE;
    282     if (segments[seg].is_free())
    283       segments[seg] = mmap_segment(seg);
     281    if (segments[seg].base != NULL)
     282      return;
     283    segments[seg] = mmap_segment(seg);
    284284  }
    285285  inline void *to_ptr(vaddr_t vaddr) {
     
    734734public:
    735735  VString(const char *s) {
    736     _len = std::strlen(s);
     736    _len = strlen(s);
    737737    _buffer = vnew_uninitialized_array<char>(_len + 1);
    738     std::strcpy(_buffer.as_ptr(), s);
     738    strcpy(_buffer.as_ptr(), s);
    739739  }
    740740  VString(const char *s, size_t len) {
     
    742742    _buffer = vnew_uninitialized_array<char>(len + 1);
    743743    char *buffer = _buffer.as_ptr();
    744     std::memcpy(buffer, s, len);
     744    memcpy(buffer, s, len);
    745745    buffer[len] = '\0';
    746746  }
Note: See TracChangeset for help on using the changeset viewer.