From 775b076861a1d2c260c32befef12770833baeffd Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 29 十月 2019 11:17:47 +0800
Subject: [PATCH] fixed
---
create.go | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/create.go b/create.go
index 8fa3080..bcbe124 100644
--- a/create.go
+++ b/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
}
--
Gitblit v1.8.0