X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2FUnixRuntime.java;h=0ce093bf68aa7dd48910e6fd26e19492266c0986;hp=ac1b595e570a12459ce492388c85da6aefd3187d;hb=beabe49c6d19528ab3d27081c7af4fd9fb74027b;hpb=bca50e30043fa5ec16c58bbc42fe527d9d425351 diff --git a/src/org/ibex/nestedvm/UnixRuntime.java b/src/org/ibex/nestedvm/UnixRuntime.java index ac1b595..0ce093b 100644 --- a/src/org/ibex/nestedvm/UnixRuntime.java +++ b/src/org/ibex/nestedvm/UnixRuntime.java @@ -167,7 +167,9 @@ public abstract class UnixRuntime extends Runtime implements Cloneable { case SYS_sendto: return sys_sendto(a,b,c,d,e,f); case SYS_recvfrom: return sys_recvfrom(a,b,c,d,e,f); case SYS_select: return sys_select(a,b,c,d,e); - + case SYS_access: return sys_access(a,b); + case SYS_realpath: return sys_realpath(a,b); + default: return super._syscall(syscall,a,b,c,d,e,f); } } @@ -179,6 +181,20 @@ public abstract class UnixRuntime extends Runtime implements Cloneable { private int sys_getppid() { return parent == null ? 1 : parent.pid; } + + + private int sys_access(int cstring, int mode) { + // FEATURE: sys_access + return 0; + } + + private int sys_realpath(int inAddr, int outAddr) throws FaultException { + String s = normalizePath(cstring(inAddr)); + byte[] b = getNullTerminatedBytes(s); + if(b.length > PATH_MAX) return -ERANGE; + copyout(b,outAddr,b.length); + return 0; + } // FEATURE: Signal handling // check flag only on backwards jumps to basic blocks without compulsatory checks