47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
package nachos.network;
|
|
|
|
import nachos.machine.*;
|
|
import nachos.threads.*;
|
|
import nachos.userprog.*;
|
|
import nachos.vm.*;
|
|
|
|
/**
|
|
* A <tt>VMProcess</tt> that supports networking syscalls.
|
|
*/
|
|
public class NetProcess extends VMProcess {
|
|
/**
|
|
* Allocate a new process.
|
|
*/
|
|
public NetProcess() {
|
|
super();
|
|
}
|
|
|
|
private static final int
|
|
syscallConnect = 11,
|
|
syscallAccept = 12;
|
|
|
|
/**
|
|
* Handle a syscall exception. Called by <tt>handleException()</tt>. The
|
|
* <i>syscall</i> argument identifies which syscall the user executed:
|
|
*
|
|
* <table>
|
|
* <tr><td>syscall#</td><td>syscall prototype</td></tr>
|
|
* <tr><td>11</td><td><tt>int connect(int host, int port);</tt></td></tr>
|
|
* <tr><td>12</td><td><tt>int accept(int port);</tt></td></tr>
|
|
* </table>
|
|
*
|
|
* @param syscall the syscall number.
|
|
* @param a0 the first syscall argument.
|
|
* @param a1 the second syscall argument.
|
|
* @param a2 the third syscall argument.
|
|
* @param a3 the fourth syscall argument.
|
|
* @return the value to be returned to the user.
|
|
*/
|
|
public int handleSyscall(int syscall, int a0, int a1, int a2, int a3) {
|
|
switch (syscall) {
|
|
default:
|
|
return super.handleSyscall(syscall, a0, a1, a2, a3);
|
|
}
|
|
}
|
|
}
|