Package org.vmmagic.unboxed

Examples of org.vmmagic.unboxed.Address


     */
    private static final void setInUse(Word blockNr, boolean inUse) {
        final Word offset = blockNr.rshl(3); // we still need a byte offset
        final int mask = (1 << blockNr.and(Word.fromIntZeroExtend(7)).toInt());
        // final int mask = (1 << blockNr);
        final Address ptr = bitmapPtr.add(offset);
        int v = ptr.loadByte();
        if (inUse) {
            v |= mask;
        } else {
            v &= ~mask;
        }
        ptr.store((byte) v);
    }
View Full Code Here


        if (!regsAddr.isMemorySpace()) {
            throw new DriverException("Memory mapped I/O is not a memory space");
        }

        // Claim the memory mapped I/O region
        final Address regsAddrPtr = Address.fromLong(regsAddr.getMemoryBase());
        final Extent regsSize = Extent.fromIntZeroExtend(regsAddr.getSize());
        try {
            final MemoryResource regs;
            regs = rm.claimMemoryResource(device, regsAddrPtr, regsSize,
                ResourceManager.MEMMODE_NORMAL);
View Full Code Here

    public EEPRO100RxFD(ResourceManager rm) {
        final int size = (nrFrames * (RxFDSize + FRAME_SIZE)) + 16;
        this.data = new byte[size];
        this.mem = rm.asMemoryResource(data);

        final Address memAddr = mem.getAddress();
        int addr = memAddr.toInt();
        int offset = 0;
        // Align on 16-byte boundary
        while ((addr & 15) != 0) {
            addr++;
            offset++;
        }

        this.firstUPDOffset = offset;
        this.firstUPDAddress = memAddr.add(firstUPDOffset);
        this.firstFrameOffset = firstUPDOffset + (nrFrames * RxFDSize);
        this.firstFrameAddress = memAddr.add(firstFrameOffset);

        this.bufferAddress = mem.getAddress().toInt();
        setRxBufferAddress(0xffffffff);
    }
View Full Code Here

    int descAddr;

    public ViaRhineDesc(ResourceManager rm) {
        desc = new byte[16 + 32];
        descMr = rm.asMemoryResource(desc);
        Address descma = descMr.getAddress();
        descOffs = align32(descma);
        descAddr = descma.add(descOffs).toInt();
        data = new byte[PKT_BUF_SZ + 32];
        dataMr = rm.asMemoryResource(data);
        Address datma = dataMr.getAddress();
        dataOffs = align32(datma);
        descMr.setInt(descOffs + 8, datma.add(dataOffs).toInt());
    }
View Full Code Here

        // Create a large enough buffer
        final int size = (TxFDSize + DataBufferSize) + 16 /* alignment */;
        this.data = new byte[size];
        this.mem = rm.asMemoryResource(data);

        final Address memAddr = mem.getAddress();

        this.firstDPDOffset = 0;
        this.firstDPDAddress = memAddr.add(firstDPDOffset);
    }
View Full Code Here

        }
        if (srcOfs + length > src.length) {
            throw new IndexOutOfBoundsException("dstOfs + length > dst.length");
        }
        testMemPtr(dstPtr, length * 4);
        final Address srcPtr = VmMagic.getArrayData(src).add(srcOfs * 4);
        multiMediaSupport.setARGB32bpp(srcPtr, start.add(dstPtr), length);
    }
View Full Code Here

            } else {
                throw new ResourceNotFreeException();
            }
        } else {
            // Find a range
            Address ptr;
            if (mode == ResourceManager.MEMMODE_ALLOC_DMA) {
                ptr = Unsafe.getMinAddress();
            } else {
                ptr = Unsafe.getMemoryEnd();
            }
            MemoryResourceImpl res = new MemoryResourceImpl(null, owner, ptr, size);
            while (!isFree(resources, res)) {
                ptr = ptr.add(64 * 1024);
                res = new MemoryResourceImpl(null, owner, ptr, size);
            }
            resources = add(resources, res);
            return res;
        }
View Full Code Here

        }
        if (dstOfs + length > dst.length) {
            throw new IndexOutOfBoundsException("dstOfs + length > dst.length");
        }
        testMemPtr(memPtr, length);
        final Address dstPtr = VmMagic.getArrayData(dst).add(dstOfs);
        final Extent size = Extent.fromIntZeroExtend(length);
        Unsafe.copy(start.add(Offset.fromIntZeroExtend(memPtr)), dstPtr, size);
    }
View Full Code Here

        }
        if (dstOfs + length > dst.length) {
            throw new IndexOutOfBoundsException("dstOfs + length > dst.length");
        }
        testMemPtr(memPtr, length * 2);
        final Address dstPtr = VmMagic.getArrayData(dst).add(dstOfs * 2);
        final Extent size = Extent.fromIntZeroExtend(length * 2);
        Unsafe.copy(start.add(Offset.fromIntZeroExtend(memPtr)), dstPtr, size);
    }
View Full Code Here

        }
        if (dstOfs + length > dst.length) {
            throw new IndexOutOfBoundsException("dstOfs + length > dst.length");
        }
        testMemPtr(memPtr, length * 2);
        final Address dstPtr = VmMagic.getArrayData(dst).add(dstOfs * 2);
        final Extent size = Extent.fromIntZeroExtend(length * 2);
        Unsafe.copy(start.add(Offset.fromIntZeroExtend(memPtr)), dstPtr, size);
    }
View Full Code Here

TOP

Related Classes of org.vmmagic.unboxed.Address

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.