genericaddress.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 81 行

JAVA
81
字号
/*
 * $Id: GenericAddress.java,v 1.1 2003/11/25 11:42:14 epr Exp $
 */
package org.jnode.driver.acpi;

/**
 * GenericAddress.
 * 
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Licence: GNU LGPL</p>
 * <p> </p>
 * @author Francois-Frederic Ozog
 * @version 1.0
 */

public class GenericAddress {
  byte addressSpace;
  byte width;
  byte offset;
  long address;

  public static final byte SYSTEM_MEMORY=0;
  public static final byte SYSTEM_IO=1;
  public static final byte PCI=2;
  public static final byte EMBEDED_CONTROLER=3;
  public static final byte SMBUS=4;
  public static final byte FIXED_HARDWARE=(byte)0x7ff;

  public GenericAddress(byte[] data) {
    addressSpace=data[0];
    width=data[1];
    offset=data[2];
    // byte 3 is reserved and should be 0
    address=0;
    for (int i=4; i< 12; i++) {
      address <<=8;
      address+=data[i] & 0xff;
    }
  }

  public String toString() {
    String space;
    String add;
    switch (addressSpace) {
      case SYSTEM_MEMORY:
        space="Memory";
        add=Long.toHexString(address);
        break;
      case SYSTEM_IO:
        space="IO";
        add=Long.toHexString(address);
        break;
      case PCI:
        space="PCI";
        int device=(int)( (address & 0xff00000000L) >> 24);
        int offset=(int)((address & 0xffffL));
        int function=(int)((address & 0xffff0000L) >> 16);
        add="Bus(0)Device(" + device + ")Function(" + function + ")Offset(" + offset+")";
        break;
      case EMBEDED_CONTROLER:
        space="Controler";
        add=Long.toHexString(address);
        break;
      case SMBUS:
        space="SMBus";
        add=Long.toHexString(address);
        break;
      case FIXED_HARDWARE:
        space="Hardware";
        add=Long.toHexString(address);
        break;
      default :
        space="addressSpace-" + Integer.toHexString(addressSpace&0xff);
        add=Long.toHexString(address);
        break;
    }

    return "<" + space + ":" + add + "/" + width + "," + offset + ">";
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?