X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2FRuntime.java;h=bfe1aaba8c3393f582dcd97da78ce458781d1a6c;hp=64ebd3366087def8c099e971650ea9dcfbee0f47;hb=ab9be117467f7459965c61e49749b333678b6e4c;hpb=4cc48f20c2927ad6d88f4d54e10b5fe46fcef2df diff --git a/src/org/ibex/nestedvm/Runtime.java b/src/org/ibex/nestedvm/Runtime.java index 64ebd33..bfe1aab 100644 --- a/src/org/ibex/nestedvm/Runtime.java +++ b/src/org/ibex/nestedvm/Runtime.java @@ -2,11 +2,13 @@ // Based on org.xwt.imp.MIPS by Adam Megacz // Portions Copyright 2003 Adam Megacz +// FEATURE: Add a patch to gcc that enabled -Wall -Werror by default +// FIXME: Get a hotel for IVME :) + package org.ibex.nestedvm; import org.ibex.nestedvm.util.*; import java.io.*; -import java.util.Arrays; public abstract class Runtime implements UsermodeConstants,Registers,Cloneable { public static final String VERSION = "1.0"; @@ -47,10 +49,10 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable { /** When the process started */ private long startTime; - /** Text/Data loaded in memory */ - public final static int STOPPED = 0; /** Program is executing instructions */ - public final static int RUNNING = 1; + public final static int RUNNING = 0; // Horrible things will happen if this isn't 0 + /** Text/Data loaded in memory */ + public final static int STOPPED = 1; /** Prgram has been started but is paused */ public final static int PAUSED = 2; /** Program is executing a callJava() method */ @@ -732,10 +734,9 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable { return hostFSDirFD(f,data); } - // FIXME: Truncate final Seekable.File sf; try { - sf = new Seekable.File(f,write); + sf = new Seekable.File(f,write,(flags & O_TRUNC) != 0); } catch(FileNotFoundException e) { if(e.getMessage() != null && e.getMessage().indexOf("Permission denied") >= 0) throw new ErrnoException(EACCES); return null; @@ -810,12 +811,11 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable { } /** The stat/fstat syscall helper */ - // FIXME: Populate uid/gid/nlink int stat(FStat fs, int addr) throws FaultException { memWrite(addr+0,(fs.dev()<<16)|(fs.inode()&0xffff)); // st_dev (top 16), // st_ino (bottom 16) memWrite(addr+4,((fs.type()&0xf000))|(fs.mode()&0xfff)); // st_mode - memWrite(addr+8,1<<16); // st_nlink (top 16) // st_uid (bottom 16) - memWrite(addr+12,0); // st_gid (top 16) // st_rdev (bottom 16) + memWrite(addr+8,fs.nlink()<<16|fs.uid()&0xffff); // st_nlink (top 16) // st_uid (bottom 16) + memWrite(addr+12,fs.gid()<<16|0); // st_gid (top 16) // st_rdev (bottom 16) memWrite(addr+16,fs.size()); // st_size memWrite(addr+20,fs.atime()); // st_atime // memWrite(addr+24,0) // st_spare1 @@ -942,7 +942,7 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable { ret = callJavaCB.call(a,b,c,d); } catch(RuntimeException e) { System.err.println("Error while executing callJavaCB"); - e.printStackTrace(); + e.printStackTrace(); ret = 0; } state = RUNNING; @@ -984,7 +984,7 @@ public abstract class Runtime implements UsermodeConstants,Registers,Cloneable { for(i=arg;i