Skip to content

Commit

Permalink
believe it or not, this was working
Browse files Browse the repository at this point in the history
the macro expansion of "char *cp;" turned into
char *(curproc[cpu()]);  which declares a dynamically
sized array of char* called curproc.

so then &cp == &(curproc[cpu()]) was actually a
stack variable as "expected".  it was one past the
end of the array, but the implicit alloca allocated
more than was necessary.

do not tell me that making cp a #define was a bad idea.
there are worse problems to fix.  more on that later.
  • Loading branch information
rsc committed Sep 27, 2007
1 parent 90d975e commit 666f58c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 10 deletions.
8 changes: 5 additions & 3 deletions dot-bochsrc
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@
# now supported, but we still recommend to use the BIOS distributed with
# Bochs. Now the start address can be calculated from image size.
#=======================================================================
romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000
#romimage: file=$BXSHARE/BIOS-bochs-latest
romimage: file=/home/rsc/pub/bochs/bios/BIOS-bochs-latest
#romimage: file=mybios.bin, address=0xfff80000 # 512k at memory top
#romimage: file=mybios.bin # calculate start address from image size

Expand Down Expand Up @@ -107,7 +108,7 @@ romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000
# 650Mhz Athlon K-7 with Linux 2.4.4/egcs-2.91.66 2 to 2.5 Mips
# 400Mhz Pentium II with Linux 2.0.36/egcs-1.0.3 1 to 1.8 Mips
#=======================================================================
cpu: count=2, ips=10000000
cpu: count=2, ips=10000000, quantum=1

#=======================================================================
# MEGS
Expand Down Expand Up @@ -403,7 +404,7 @@ debug: action=ignore
#=======================================================================
#debugger_log: /dev/null
#debugger_log: debugger.out
debugger_log: -
debugger_log: bochsout.txt

#=======================================================================
# COM1, COM2, COM3, COM4:
Expand Down Expand Up @@ -675,6 +676,7 @@ keyboard_mapping: enabled=0, map=
# i440fxsupport: enabled=1, slot1=pcivga, slot2=ne2k
#=======================================================================
#i440fxsupport: enabled=1
i440fxsupport: enabled=1

#=======================================================================
# USB1:
Expand Down
12 changes: 6 additions & 6 deletions sysfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,23 +49,23 @@ sys_read(void)
{
struct file *f;
int n;
char *cp;
char *p;

if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argptr(1, &cp, n) < 0)
if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argptr(1, &p, n) < 0)
return -1;
return fileread(f, cp, n);
return fileread(f, p, n);
}

int
sys_write(void)
{
struct file *f;
int n;
char *cp;
char *p;

if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argptr(1, &cp, n) < 0)
if(argfd(0, 0, &f) < 0 || argint(2, &n) < 0 || argptr(1, &p, n) < 0)
return -1;
return filewrite(f, cp, n);
return filewrite(f, p, n);
}

int
Expand Down
4 changes: 3 additions & 1 deletion usertests.c
Original file line number Diff line number Diff line change
Expand Up @@ -1234,7 +1234,9 @@ int
main(int argc, char *argv[])
{
printf(1, "usertests starting\n");


for(;;) concreate();

if(open("usertests.ran", 0) >= 0){
printf(1, "already ran user tests -- rebuild fs.img\n");
exit();
Expand Down

0 comments on commit 666f58c

Please sign in to comment.