zhangmeng
2019-10-29 775b076861a1d2c260c32befef12770833baeffd
create.go
@@ -6,13 +6,11 @@
package shm
import (
   "golang.org/x/sys/unix"
   "os"
   "sync/atomic"
   "unsafe"
   "github.com/tmthrgd/go-sem"
   "github.com/tmthrgd/go-shm"
   "golang.org/x/sys/unix"
)
func CreateSimplex(name string, perm os.FileMode, blockCount, blockSize int) (*ReadWriteCloser, error) {
@@ -20,7 +18,15 @@
      return nil, ErrNotMultipleOf64
   }
   file, err := shm.Open(name, unix.O_CREAT|unix.O_EXCL|unix.O_TRUNC|unix.O_RDWR, perm)
   flag := unix.O_CREAT | unix.O_EXCL | unix.O_TRUNC | unix.O_RDWR
   _, err := os.Stat(devShm + name)
   if err != nil {
      if !os.IsNotExist(err) {
         flag = unix.O_TRUNC | unix.O_RDWR
      }
   }
   file, err := Open(name, flag, perm)
   if err != nil {
      return nil, err
   }
@@ -50,11 +56,11 @@
    */
   *(*uint32)(&shared.BlockCount), *(*uint64)(&shared.BlockSize) = uint32(blockCount), uint64(blockSize)
   if err = ((*sem.Semaphore)(&shared.SemSignal)).Init(0); err != nil {
   if err = ((*Semaphore)(&shared.SemSignal)).Init(0); err != nil {
      return nil, err
   }
   if err = ((*sem.Semaphore)(&shared.SemAvail)).Init(0); err != nil {
   if err = ((*Semaphore)(&shared.SemAvail)).Init(0); err != nil {
      return nil, err
   }
@@ -91,7 +97,7 @@
      return nil, ErrNotMultipleOf64
   }
   file, err := shm.Open(name, unix.O_CREAT|unix.O_EXCL|unix.O_TRUNC|unix.O_RDWR, perm)
   file, err := Open(name, unix.O_CREAT|unix.O_EXCL|unix.O_TRUNC|unix.O_RDWR, perm)
   if err != nil {
      return nil, err
   }
@@ -123,11 +129,11 @@
       */
      *(*uint32)(&shared.BlockCount), *(*uint64)(&shared.BlockSize) = uint32(blockCount), uint64(blockSize)
      if err = ((*sem.Semaphore)(&shared.SemSignal)).Init(0); err != nil {
      if err = ((*Semaphore)(&shared.SemSignal)).Init(0); err != nil {
         return nil, err
      }
      if err = ((*sem.Semaphore)(&shared.SemAvail)).Init(0); err != nil {
      if err = ((*Semaphore)(&shared.SemAvail)).Init(0); err != nil {
         return nil, err
      }