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 <crt.h> 019 #include <crt.h>
020 #include <libc.h> 020 #include <libc.h>
021 #include <stdarg.h> 021 #include <stdarg.h>
022 #include <debug.h> 022 #include <debug.h>
023 023
024 024
025 025
026 026
027 027
028 028
029 029
030 030
031 031
032 032
033 int main() !! 033 int main(void)
034 { 034 {
035 char * zoup; 035 char * zoup;
036 int fd; 036 int fd;
037 037
038 fd = open("/dev/zero", O_RDWR); 038 fd = open("/dev/zero", O_RDWR);
039 zoup = mmap((void*)4096, 8*1024*1024, 039 zoup = mmap((void*)4096, 8*1024*1024,
040 PROT_READ | PROT_WRITE, 040 PROT_READ | PROT_WRITE,
041 MAP_SHARED, 041 MAP_SHARED,
042 fd, 34); 042 fd, 34);
043 close(fd); 043 close(fd);
044 044
045 bochs_printf("mapped @%x\n", (unsigned)zoup) 045 bochs_printf("mapped @%x\n", (unsigned)zoup);
046 046
047 047
048 fork(); 048 fork();
049 fork(); 049 fork();
050 050
051 _sos_syscall1(4004, (unsigned)"Initial"); 051 _sos_syscall1(4004, (unsigned)"Initial");
052 mprotect(zoup, 10*4096, PROT_READ); 052 mprotect(zoup, 10*4096, PROT_READ);
053 zoup += 10*4096; 053 zoup += 10*4096;
054 _sos_syscall1(4004, (unsigned)"After mprotec 054 _sos_syscall1(4004, (unsigned)"After mprotect Low");
055 055
056 mprotect(zoup-4096, 2*4096, PROT_READ); 056 mprotect(zoup-4096, 2*4096, PROT_READ);
057 zoup += 4096; 057 zoup += 4096;
058 _sos_syscall1(4004, (unsigned)"After mprotec 058 _sos_syscall1(4004, (unsigned)"After mprotect Before Low");
059 059
060 mprotect(zoup-4096, 4096, PROT_READ); 060 mprotect(zoup-4096, 4096, PROT_READ);
061 _sos_syscall1(4004, (unsigned)"After mprotec 061 _sos_syscall1(4004, (unsigned)"After mprotect Before low (bis)");
062 062
063 mprotect(zoup + 1024*1024, 4096, PROT_READ); 063 mprotect(zoup + 1024*1024, 4096, PROT_READ);
064 _sos_syscall1(4004, (unsigned)"After mprotec 064 _sos_syscall1(4004, (unsigned)"After mprotect Middle");
065 065
066 mprotect(zoup + 1024*1024, 4096, PROT_READ); 066 mprotect(zoup + 1024*1024, 4096, PROT_READ);
067 _sos_syscall1(4004, (unsigned)"After mprotec 067 _sos_syscall1(4004, (unsigned)"After mprotect Middle (bis)");
068 068
069 mprotect(zoup + 8*1024*1024 - 11*4096 - 4096 069 mprotect(zoup + 8*1024*1024 - 11*4096 - 4096, 4096, PROT_READ);
070 _sos_syscall1(4004, (unsigned)"After mprotec 070 _sos_syscall1(4004, (unsigned)"After mprotect High");
071 071
072 mprotect(zoup + 8*1024*1024 - 11*4096 - 2*40 072 mprotect(zoup + 8*1024*1024 - 11*4096 - 2*4096, 3*4096, PROT_READ);
073 _sos_syscall1(4004, (unsigned)"After mprotec 073 _sos_syscall1(4004, (unsigned)"After mprotect Past High");
074 074
075 mprotect((void*)0x40000000, 0x10000000, PROT 075 mprotect((void*)0x40000000, 0x10000000, PROT_READ);
076 _sos_syscall1(4004, (unsigned)"After mprotec 076 _sos_syscall1(4004, (unsigned)"After mprotect Complete VR");
077 077
078 mprotect((void*)0x40000000, 0x10000000, PROT 078 mprotect((void*)0x40000000, 0x10000000, PROT_READ);
079 _sos_syscall1(4004, (unsigned)"After mprotec 079 _sos_syscall1(4004, (unsigned)"After mprotect Complete VR (bis)");
080 080
081 return 0; 081 return 0;
082 } 082 }