int rc = VM.sysCall3(bootRecord.sysNetSocketLingerIP, ifd, 1, ((Integer)val).intValue());
int rc = VM.sysCall3(bootRecord.sysNetSocketLingerIP, native_fd, 1, ((Integer)val).intValue());
    public void setOption(int optID, Object val) throws SocketException {	VM_BootRecord bootRecord = VM_BootRecord.the_boot_record;	int ifd = java.io.JikesRVMSupport.getFd(fd);       	switch (optID) {	case SocketOptions.SO_LINGER: {	    if (val instanceof Integer) {		// when socket is closed on this end, wait until unsent 		// data has been received by other end or timeout expires		//		int rc = VM.sysCall3(bootRecord.sysNetSocketLingerIP, ifd, 1, ((Integer)val).intValue());		if (rc == -1) throw new SocketException("SO_LINGER");	    } else {		// when socket is closed on this end, discard any unsent data		//		int rc = VM.sysCall3(bootRecord.sysNetSocketLingerIP, ifd, 0, 0);		if (rc == -1) throw new SocketException("SO_LINGER");	    }	} break;	case SocketOptions.SO_KEEPALIVE: {	    // TODO: implement this.	    // val will be a java.lang.Boolean.	    // Having it be a no-op is OK for now.	} break;	case SocketOptions.TCP_NODELAY: { 	    // true:  send data immediately when socket is written to            // false: delay sending, in order to coalesce packets	    int rc = VM.sysCall2(bootRecord.sysNetSocketNoDelayIP,				 ifd,				 ((Boolean)val).booleanValue() ? 1 : 0);	    if (rc == -1) throw new SocketException("setTcpNoDelay");	} break;         	case SocketOptions.SO_TIMEOUT: {	    receiveTimeout = ((Integer)val).intValue();	} break;	default:	    VM._assert(VM.NOT_REACHED);	}    }