diff --git a/tools/utils/shm/shm.go b/tools/utils/shm/shm.go index f7c287f58..40a6291a1 100644 --- a/tools/utils/shm/shm.go +++ b/tools/utils/shm/shm.go @@ -7,6 +7,7 @@ import ( "fmt" "math/rand" "os" + "path/filepath" "strconv" "strings" @@ -51,7 +52,8 @@ type MMap interface { Unlink() error Slice() []byte Name() string - IsFilesystemBacked() bool + IsFileSystemBacked() bool + FileSystemName() string } type AccessFlags int @@ -107,6 +109,10 @@ func file_mmap(f *os.File, size uint64, access AccessFlags, truncate bool) (MMap } func (self *file_based_mmap) Name() string { + return filepath.Base(self.f.Name()) +} + +func (self *file_based_mmap) FileSystemName() string { return self.f.Name() } @@ -131,7 +137,7 @@ func (self *file_based_mmap) Unlink() (err error) { return os.Remove(self.f.Name()) } -func (self *file_based_mmap) IsFilesystemBacked() bool { return true } +func (self *file_based_mmap) IsFileSystemBacked() bool { return true } func CreateTemp(pattern string, size uint64) (MMap, error) { return create_temp(pattern, size) diff --git a/tools/utils/shm/shm_syscall.go b/tools/utils/shm/shm_syscall.go index 1dc5c6196..8974af3f5 100644 --- a/tools/utils/shm/shm_syscall.go +++ b/tools/utils/shm/shm_syscall.go @@ -108,7 +108,8 @@ func (self *syscall_based_mmap) Unlink() (err error) { return shm_unlink(self.Name()) } -func (self *syscall_based_mmap) IsFilesystemBacked() bool { return false } +func (self *syscall_based_mmap) IsFileSystemBacked() bool { return false } +func (self *syscall_based_mmap) FileSystemName() string { return "" } func create_temp(pattern string, size uint64) (ans MMap, err error) { var prefix, suffix string diff --git a/tools/utils/shm/shm_test.go b/tools/utils/shm/shm_test.go index 0574e7ba1..8bb2952ba 100644 --- a/tools/utils/shm/shm_test.go +++ b/tools/utils/shm/shm_test.go @@ -48,8 +48,8 @@ func TestSHM(t *testing.T) { if err == nil { t.Fatalf("Unlinking failed could re-open the SHM data. Data equal: %v Data length: %d", reflect.DeepEqual(g.Slice(), data), len(g.Slice())) } - if mm.IsFilesystemBacked() { - _, err = os.Stat(mm.Name()) + if mm.IsFileSystemBacked() { + _, err = os.Stat(mm.FileSystemName()) if !errors.Is(err, fs.ErrNotExist) { t.Fatalf("Unlinking %s did not work", mm.Name()) }