Diff markup
001 001
002 002
003 003
004 004
005 005
006 006
007 007
008 008
009 009
010 010
011 011
012 012
013 013
014 014
015 015
016 016
017 017
018 018
019 #include <libc.h> 019 #include <libc.h>
020 #include <stdarg.h> 020 #include <stdarg.h>
021 #include <debug.h> 021 #include <debug.h>
022 022
023 023
024 024
025 025
026 026
027 027
028 028
029 029
030 int main() 030 int main()
031 { 031 {
032 int i; 032 int i;
033 char *zoup; 033 char *zoup;
034 034
035 zoup = mmap((void*)4096, 8*1024*1024, !! 035 zoup = fakemmap((void*)4096, 8*1024*1024,
036 PROT_READ | PROT_WRITE, !! 036 PROT_READ | PROT_WRITE,
037 MAP_SHARED, !! 037 MAP_SHARED,
038 "/dev/zero", 0x123456789012345UL !! 038 "/dev/zero", 0x123456789012345ULL);
039 bochs_printf("mapped @%x\n", (unsigned)zoup) 039 bochs_printf("mapped @%x\n", (unsigned)zoup);
040 040
041 switch (fork()) 041 switch (fork())
042 { 042 {
043 case 0: 043 case 0:
044 bochs_printf("CHILD 1: %d %d\n", zoup[42 044 bochs_printf("CHILD 1: %d %d\n", zoup[42], zoup[43]);
045 for (i = 0 ; i < 1000000 ; i++) 045 for (i = 0 ; i < 1000000 ; i++)
046 zoup[43] = i / 19; 046 zoup[43] = i / 19;
047 bochs_printf("CHILD 2: %d %d\n", zoup[42 047 bochs_printf("CHILD 2: %d %d\n", zoup[42], zoup[43]);
048 for (i = 0 ; i < 1000000 ; i++) 048 for (i = 0 ; i < 1000000 ; i++)
049 zoup[43] = i / 19; 049 zoup[43] = i / 19;
050 bochs_printf("CHILD 3: %d %d\n", zoup[42 050 bochs_printf("CHILD 3: %d %d\n", zoup[42], zoup[43]);
051 break; 051 break;
052 052
053 default: 053 default:
054 bochs_printf("FATHER 1: %d %d\n", zoup[4 054 bochs_printf("FATHER 1: %d %d\n", zoup[42], zoup[43]);
055 for (i = 0 ; i < 1000000 ; i++) 055 for (i = 0 ; i < 1000000 ; i++)
056 zoup[42] = i / 17; 056 zoup[42] = i / 17;
057 bochs_printf("FATHER 2: %d %d\n", zoup[4 057 bochs_printf("FATHER 2: %d %d\n", zoup[42], zoup[43]);
058 break; 058 break;
059 } 059 }
060 060
061 return 0; 061 return 0;
062 } 062 }