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(void) !! 030 int main()
031 { 031 {
032 int i; 032 int i;
033 char *zoup; 033 char *zoup;
034 int fd; 034 int fd;
035 035
036 fd = open("/dev/zero", O_RDWR); 036 fd = open("/dev/zero", O_RDWR);
037 zoup = mmap((void*)4096, 8*1024*1024, 037 zoup = mmap((void*)4096, 8*1024*1024,
038 PROT_READ | PROT_WRITE, 038 PROT_READ | PROT_WRITE,
039 MAP_SHARED, 039 MAP_SHARED,
040 fd, 0x123456789012345ULL); 040 fd, 0x123456789012345ULL);
041 close(fd); 041 close(fd);
042 042
043 bochs_printf("mapped @%x\n", (unsigned)zoup) 043 bochs_printf("mapped @%x\n", (unsigned)zoup);
044 044
045 switch (fork()) 045 switch (fork())
046 { 046 {
047 case 0: 047 case 0:
048 bochs_printf("CHILD 1: %d %d\n", zoup[42 048 bochs_printf("CHILD 1: %d %d\n", zoup[42], zoup[43]);
049 for (i = 0 ; i < 1000000 ; i++) 049 for (i = 0 ; i < 1000000 ; i++)
050 zoup[43] = i / 19; 050 zoup[43] = i / 19;
051 bochs_printf("CHILD 2: %d %d\n", zoup[42 051 bochs_printf("CHILD 2: %d %d\n", zoup[42], zoup[43]);
052 for (i = 0 ; i < 1000000 ; i++) 052 for (i = 0 ; i < 1000000 ; i++)
053 zoup[43] = i / 19; 053 zoup[43] = i / 19;
054 bochs_printf("CHILD 3: %d %d\n", zoup[42 054 bochs_printf("CHILD 3: %d %d\n", zoup[42], zoup[43]);
055 break; 055 break;
056 056
057 default: 057 default:
058 bochs_printf("FATHER 1: %d %d\n", zoup[4 058 bochs_printf("FATHER 1: %d %d\n", zoup[42], zoup[43]);
059 for (i = 0 ; i < 1000000 ; i++) 059 for (i = 0 ; i < 1000000 ; i++)
060 zoup[42] = i / 17; 060 zoup[42] = i / 17;
061 bochs_printf("FATHER 2: %d %d\n", zoup[4 061 bochs_printf("FATHER 2: %d %d\n", zoup[42], zoup[43]);
062 break; 062 break;
063 } 063 }
064 064
065 return 0; 065 return 0;
066 } 066 }