if(page == null) throw new WriteFaultException(a<<2);
int index = a&pageWordMask;
int n = min(c,pageWords-index);
- Arrays.fill(page,index,index+n,fourBytes);
+ /* Arrays.fill(page,index,index+n,fourBytes);*/
+ for(int i=index;i<index+n;i++) page[i] = fourBytes;
a += n; c -= n;
}
addr = a<<2; count&=3;
if((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {
try {
- // NOTE: createNewFile is a Java2 function
- if(!f.createNewFile()) throw new ErrnoException(EEXIST);
+ if(Platform.atomicCreateFile(f)) throw new ErrnoException(EEXIST);
} catch(IOException e) {
throw new ErrnoException(EIO);
}
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;
for(i=arg;i<OPEN_MAX;i++) if(fds[i]==null) break;
if(i==OPEN_MAX) return -EMFILE;
fds[i] = fd.dup();
- return 0;
+ return i;
case F_GETFL:
return fd.flags();
case F_SETFD:
public TerminalFD(OutputStream os) { this(null,os); }
public TerminalFD(InputStream is, OutputStream os) { super(is,os); }
public void _close() { /* noop */ }
- public FStat _fstat() { return new FStat() { public int type() { return S_IFCHR; } }; }
+ public FStat _fstat() { return new FStat() { public int type() { return S_IFCHR; } public int mode() { return 0600; } }; }
}
// FEATURE: TextInputStream: This is pretty inefficient but it is only used for reading from the console on win32