X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2FUnixRuntime.java;h=728d9cdd91da1f521e0e0bd861af65d3b436e4d2;hp=24be4e84ccc29b9df087fcc0d3fe0f695e1b1ba6;hb=19e0f90cbc9c66e274bac04f819a78e387c8f1fc;hpb=4cc48f20c2927ad6d88f4d54e10b5fe46fcef2df diff --git a/src/org/ibex/nestedvm/UnixRuntime.java b/src/org/ibex/nestedvm/UnixRuntime.java index 24be4e8..728d9cd 100644 --- a/src/org/ibex/nestedvm/UnixRuntime.java +++ b/src/org/ibex/nestedvm/UnixRuntime.java @@ -1,6 +1,8 @@ package org.ibex.nestedvm; import org.ibex.nestedvm.util.*; +// FEATURE: This is ugly, this stuff needs to be in org.ibex.util or something +import org.ibex.classgen.util.Sort; import java.io.*; import java.util.*; import java.net.*; @@ -533,7 +535,7 @@ public abstract class UnixRuntime extends Runtime implements Cloneable { return n; } - // FIXME: UDP is totally broken + // FEATURE: UDP is totally broken static class SocketFD extends FD { public static final int TYPE_STREAM = 0; @@ -913,54 +915,6 @@ public abstract class UnixRuntime extends Runtime implements Cloneable { } return 0; } - - - /*public int sys_opensocket(int cstring, int port) throws FaultException, ErrnoException { - String hostname = cstring(cstring); - try { - FD fd = new SocketFD(new Socket(hostname,port)); - int n = addFD(fd); - if(n == -1) fd.close(); - return n; - } catch(IOException e) { - return -EIO; - } - } - - private static class ListenSocketFD extends FD { - ServerSocket s; - public ListenSocketFD(ServerSocket s) { this.s = s; } - public int flags() { return 0; } - // FEATURE: What should these be? - public FStat _fstat() { return new FStat(); } - public void _close() { try { s.close(); } catch(IOException e) { } } - } - - public int sys_listensocket(int port) { - try { - ListenSocketFD fd = new ListenSocketFD(new ServerSocket(port)); - int n = addFD(fd); - if(n == -1) fd.close(); - return n; - } catch(IOException e) { - return -EIO; - } - } - - public int sys_accept(int fdn) { - if(fdn < 0 || fdn >= OPEN_MAX) return -EBADFD; - if(fds[fdn] == null) return -EBADFD; - if(!(fds[fdn] instanceof ListenSocketFD)) return -EBADFD; - try { - ServerSocket s = ((ListenSocketFD)fds[fdn]).s; - SocketFD fd = new SocketFD(s.accept()); - int n = addFD(fd); - if(n == -1) fd.close(); - return n; - } catch(IOException e) { - return -EIO; - } - }*/ // FEATURE: Run through the fork/wait stuff one more time public static class GlobalState { @@ -986,7 +940,7 @@ public abstract class UnixRuntime extends Runtime implements Cloneable { } } - private static class MP implements Sort.Sortable { + private static class MP implements Sort.Comparable { public MP(String path, FS fs) { this.path = path; this.fs = fs; } public String path; public FS fs; @@ -1051,6 +1005,7 @@ public abstract class UnixRuntime extends Runtime implements Cloneable { mps = newMPS; } + // FEATURE: We shouldn't need to special case the root dir, it should work in the MP array private Object fsop(int op, UnixRuntime r, String normalizedPath, int arg1, int arg2) throws ErrnoException { int pl = normalizedPath.length(); if(pl != 0) { @@ -1059,13 +1014,14 @@ public abstract class UnixRuntime extends Runtime implements Cloneable { for(int i=0;i