Changeset f80133 in git
- Timestamp:
- Sep 23, 2021, 1:12:28 PM (3 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- beb8da1b3b6b2c9710183284a25b2610176544ea
- Parents:
- e1643135645a3cc97af8659018defd2b8617bb4e
- Location:
- kernel
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/GBEngine/kChinese.cc
re16431 rf80133 20 20 #include <sys/types.h> 21 21 #include <sys/wait.h> 22 #include <unistd.h> 22 23 23 24 // send a number via a string s -
kernel/GBEngine/kverify.cc
re16431 rf80133 16 16 #include <sys/types.h> 17 17 #include <sys/wait.h> 18 #include <unistd.h> 18 19 #endif 19 20 -
kernel/oswrapper/vspace.cc
re16431 rf80133 3 3 #include "kernel/mod2.h" 4 4 #ifdef HAVE_VSPACE 5 #include <cstdlib> 6 #include <unistd.h> 7 #include <sys/mman.h> 8 #include <sys/stat.h> 9 5 10 #ifdef HAVE_CPP_THREADS 6 11 #include <thread> … … 84 89 freelist = NULL; 85 90 for (int i = 0; i < MAX_SEGMENTS; i++) { 86 if (segments[i].base) munmap(segments[i].base, SEGMENT_SIZE); 87 segments[i] = NULL; 91 if (!segments[i].is_free()) 92 munmap(segments[i].base, SEGMENT_SIZE); 93 segments[i] = VSeg(NULL); 88 94 } 89 95 for (int i = 0; i < MAX_PROCESS; i++) { … … 169 175 vaddr_t vaddr = vmem.freelist[i]; 170 176 if (vaddr != VADDR_NULL) { 171 printf("%2d: %ld", i, vaddr);177 std::printf("%2d: %ld", i, vaddr); 172 178 vaddr_t prev = block_ptr(vaddr)->prev; 173 179 if (prev != VADDR_NULL) { 174 printf("(%ld)", prev);180 std::printf("(%ld)", prev); 175 181 } 176 182 assert(block_ptr(vaddr)->prev == VADDR_NULL); … … 181 187 if (vaddr == VADDR_NULL) 182 188 break; 183 printf(" -> %ld", vaddr);189 std::printf(" -> %ld", vaddr); 184 190 vaddr_t prev = block_ptr(vaddr)->prev; 185 191 if (prev != last_vaddr) { 186 printf("(%ld)", prev);192 std::printf("(%ld)", prev); 187 193 } 188 194 } 189 printf("\n");190 } 191 } 192 fflush(stdout);195 std::printf("\n"); 196 } 197 } 198 std::fflush(stdout); 193 199 } 194 200 … … 318 324 NULL, METABLOCK_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, vmem.fd, 0); 319 325 if (create) { 320 memcpy(vmem.metapage->config_header, config, sizeof(config));326 std::memcpy(vmem.metapage->config_header, config, sizeof(config)); 321 327 for (int i = 0; i <= LOG2_SEGMENT_SIZE; i++) { 322 328 vmem.metapage->freelist[i] = VADDR_NULL; … … 325 331 vmem.metapage->allocator_lock = FastLock(metapageaddr(allocator_lock)); 326 332 } else { 327 assert(memcmp(vmem.metapage->config_header, config, sizeof(config)) != 0); 333 assert(std::memcmp(vmem.metapage->config_header, config, 334 sizeof(config)) != 0); 328 335 } 329 336 } -
kernel/oswrapper/vspace.h
re16431 rf80133 1 1 #ifndef VSPACE_H 2 2 #define VSPACE_H 3 4 #include "kernel/mod2.h" 5 6 #ifdef HAVE_VSPACE 7 3 8 #include <fcntl.h> 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> 9 #include <cstdio> 10 #include <cstring> 11 11 #include <assert.h> 12 12 #include <new> // for placement new 13 #include "kernel/mod2.h" 14 15 #ifdef HAVE_VSPACE 13 16 14 17 15 #if __cplusplus >= 201100 … … 22 20 #endif 23 21 24 // vspace is a C++ library designed to allow processes in a22 // VSpace is a C++ library designed to allow processes in a 25 23 // multi-process environment to interoperate via mmapped shared memory. 26 24 // The library provides facilities for shared memory allocation and … … 233 231 struct VSeg { 234 232 unsigned char *base; 233 inline bool is_free() { 234 return base == NULL; 235 } 235 236 inline Block *block_ptr(segaddr_t addr) { 236 237 return (Block *) (base + addr); … … 253 254 MetaPage *metapage; 254 255 int fd; 255 FILE *file_handle;256 std::FILE *file_handle; 256 257 int current_process; // index into process table 257 258 vaddr_t *freelist; // reference to metapage information … … 279 280 inline void ensure_is_mapped(vaddr_t vaddr) { 280 281 int seg = vaddr >> LOG2_SEGMENT_SIZE; 281 if (segments[seg].base != NULL) 282 return; 283 segments[seg] = mmap_segment(seg); 282 if (segments[seg].is_free()) 283 segments[seg] = mmap_segment(seg); 284 284 } 285 285 inline void *to_ptr(vaddr_t vaddr) { … … 734 734 public: 735 735 VString(const char *s) { 736 _len = st rlen(s);736 _len = std::strlen(s); 737 737 _buffer = vnew_uninitialized_array<char>(_len + 1); 738 st rcpy(_buffer.as_ptr(), s);738 std::strcpy(_buffer.as_ptr(), s); 739 739 } 740 740 VString(const char *s, size_t len) { … … 742 742 _buffer = vnew_uninitialized_array<char>(len + 1); 743 743 char *buffer = _buffer.as_ptr(); 744 memcpy(buffer, s, len);744 std::memcpy(buffer, s, len); 745 745 buffer[len] = '\0'; 746 746 }
Note: See TracChangeset
for help on using the changeset viewer.