コード例 #1
0
ファイル: MemoryMappedViewStream.cs プロジェクト: yonder/mono
        unsafe void CreateStreamPosix(int fd, long offset, long size, MemoryMappedFileAccess access)
        {
            int offset_diff;

            mmap_size = (ulong)size;
            MemoryMappedFile.MapPosix(fd, offset, ref size, access, out mmap_addr, out offset_diff);
            FileAccess faccess;

            switch (access)
            {
            case MemoryMappedFileAccess.ReadWrite:
                faccess = FileAccess.ReadWrite;
                break;

            case MemoryMappedFileAccess.Read:
                faccess = FileAccess.Read;
                break;

            case MemoryMappedFileAccess.Write:
                faccess = FileAccess.Write;
                break;

            default:
                throw new NotImplementedException("access mode " + access + " not supported.");
            }
            Initialize((byte *)mmap_addr + offset_diff, size, size, faccess);
        }
コード例 #2
0
        unsafe void CreateStreamPosix(FileStream file, long offset, long size, MemoryMappedFileAccess access)
        {
            long fsize = file.Length;

            if (size == 0 || size > fsize)
            {
                size = fsize;
            }

            int offset_diff;

            MemoryMappedFile.MapPosix(file, offset, size, access, out mmap_addr, out offset_diff, out mmap_size);

            FileAccess faccess;

            switch (access)
            {
            case MemoryMappedFileAccess.ReadWrite:
                faccess = FileAccess.ReadWrite;
                break;

            case MemoryMappedFileAccess.Read:
                faccess = FileAccess.Read;
                break;

            case MemoryMappedFileAccess.Write:
                faccess = FileAccess.Write;
                break;

            default:
                throw new NotImplementedException("access mode " + access + " not supported.");
            }
            Initialize((byte *)mmap_addr + offset_diff, size, size, faccess);
        }
コード例 #3
0
        unsafe void CreatePosix(long offset, long size, MemoryMappedFileAccess access)
        {
            int offset_diff;

            MemoryMappedFile.MapPosix(file_handle, offset, ref size, access, out mmap_addr, out offset_diff);

            handle = new SafeMemoryMappedViewHandle((IntPtr)((long)mmap_addr + offset_diff), size);
            Initialize(handle, 0, size, ToFileAccess(access));
        }
コード例 #4
0
        unsafe void CreatePosix(FileStream file, long offset, long size, MemoryMappedFileAccess access)
        {
            long fsize = file.Length;

            if (size == 0 || size > fsize)
            {
                size = fsize;
            }

            int offset_diff;

            MemoryMappedFile.MapPosix(file, offset, size, access, out mmap_addr, out offset_diff, out mmap_size);

            handle = new SafeMemoryMappedViewHandle((IntPtr)((long)mmap_addr + offset_diff), size);
        }