Example #1
0
 private NamedSemaphore(string name, Native.OpenFlags openFlags)
 {
     semaphoreHandle = Native.SemaphoreOpen(
         name,
         openFlags,
         Native.ModeFlags.S_IRUSR | Native.ModeFlags.S_IWUSR,
         0);
 }
        public UnixStream Open(Native.OpenFlags flags, Native.FilePermissions mode)
        {
            int fd = Native.Syscall.open(FullPath, flags, mode);

            if (fd < 0)
            {
                UnixMarshal.ThrowExceptionForLastError();
            }
            return(new UnixStream(fd));
        }
        public UnixStream Open(FileMode mode, FileAccess access, Native.FilePermissions perms)
        {
            Native.OpenFlags flags = Native.NativeConvert.ToOpenFlags(mode, access);
            int fd = Native.Syscall.open(FullPath, flags, perms);

            if (fd < 0)
            {
                UnixMarshal.ThrowExceptionForLastError();
            }
            return(new UnixStream(fd));
        }
Example #4
0
        private NamedSemaphore(string name, Native.OpenFlags openFlags)
        {
            semaphoreHandle = Native.SemaphoreOpen(
                name,
                openFlags,
                Native.ModeFlags.S_IRUSR | Native.ModeFlags.S_IWUSR,
                0);

            if (semaphoreHandle.IsInvalid)
            {
                throw new IOException(
                          $"Failed to create a NamedSemaphore {name}",
                          innerException: new Win32Exception(Marshal.GetLastWin32Error()));
            }

            semaphoreName = name;
        }
        public UnixStream Open(Native.OpenFlags flags)
        {
            if ((flags & Native.OpenFlags.O_CREAT) != 0)
            {
                throw new ArgumentException(
                          "Cannot specify OpenFlags.O_CREAT without providing " +
                          "FilePermissions.  Use the Open(OpenFlags, FilePermissions) " +
                          "method instead");
            }
            int fd = Native.Syscall.open(FullPath, flags);

            if (fd < 0)
            {
                UnixMarshal.ThrowExceptionForLastError();
            }
            return(new UnixStream(fd));
        }
        private SharedMemoryMapView(string sharedMemoryMapName, ulong sharedMemorySize, Native.OpenFlags openFlags)
        {
            this.sharedMemoryMapName = sharedMemoryMapName;

            // Create shared memory view.
            //
            sharedMemoryHandle = Native.SharedMemoryOpen(
                sharedMemoryMapName,
                openFlags,
                Native.ModeFlags.S_IRUSR | Native.ModeFlags.S_IWUSR);

            if (sharedMemoryHandle.IsInvalid)
            {
                int errno = Marshal.GetLastWin32Error();

                throw new FileNotFoundException(
                          $"Failed to shm_open {sharedMemoryMapName}",
                          innerException: new Win32Exception(errno));
            }

            CreateMemoryMap(sharedMemorySize);
        }
 public UnixStream Open(FileMode mode, FileAccess access)
 {
     Native.OpenFlags flags = Native.NativeConvert.ToOpenFlags(mode, access);
     return(Open(flags));
 }
Example #8
0
        private SharedMemoryMapView(string sharedMemoryMapName, ulong sharedMemorySize, Native.OpenFlags openFlags)
        {
            this.sharedMemoryMapName = sharedMemoryMapName;

            // Create shared memory view.
            //
            sharedMemoryHandle = Native.SharedMemoryOpen(
                sharedMemoryMapName,
                openFlags,
                Native.ModeFlags.S_IRUSR | Native.ModeFlags.S_IWUSR);

            if (sharedMemoryHandle.IsInvalid)
            {
                int errno = Marshal.GetLastWin32Error();

                throw new FileNotFoundException(
                          $"Failed to shm_open {sharedMemoryMapName}",
                          innerException: new Win32Exception(errno));
            }

            if (Native.FileTruncate(sharedMemoryHandle, (long)sharedMemorySize) == -1)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new FileNotFoundException(
                          $"Failed to ftruncate {sharedMemoryMapName} {sharedMemoryHandle}",
                          innerException: new Win32Exception(errno));
            }

            Buffer = Native.MapMemory(
                address: IntPtr.Zero,
                length: sharedMemorySize,
                protFlags: Native.ProtFlags.PROT_READ | Native.ProtFlags.PROT_WRITE,
                mapFlags: Native.MapFlags.MAP_SHARED,
                handle: sharedMemoryHandle,
                offset: 0);
            if (Buffer == Native.InvalidPointer)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new InvalidOperationException(
                          $"Failed to mmap {sharedMemoryMapName} {sharedMemoryHandle}",
                          innerException: new Win32Exception(errno));
            }

            MemSize = sharedMemorySize;
        }