summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go
diff options
context:
space:
mode:
authorLibravatar Terin Stock <terinjokes@gmail.com>2025-03-09 17:47:56 +0100
committerLibravatar Terin Stock <terinjokes@gmail.com>2025-03-10 01:59:49 +0100
commit3ac1ee16f377d31a0fb80c8dae28b6239ac4229e (patch)
treef61faa581feaaeaba2542b9f2b8234a590684413 /vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go
parent[chore] update URLs to forked source (diff)
downloadgotosocial-3ac1ee16f377d31a0fb80c8dae28b6239ac4229e.tar.xz
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go87
1 files changed, 0 insertions, 87 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go
deleted file mode 100644
index 42a247529..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go
+++ /dev/null
@@ -1,87 +0,0 @@
-//go:build unix
-
-package util
-
-import (
- "context"
- "os"
- "unsafe"
-
- "github.com/tetratelabs/wazero/api"
- "golang.org/x/sys/unix"
-)
-
-type mmapState struct {
- regions []*MappedRegion
-}
-
-func (s *mmapState) new(ctx context.Context, mod api.Module, size int32) *MappedRegion {
- // Find unused region.
- for _, r := range s.regions {
- if !r.used && r.size == size {
- return r
- }
- }
-
- // Allocate page aligned memmory.
- alloc := mod.ExportedFunction("aligned_alloc")
- stack := [...]Stk_t{
- Stk_t(unix.Getpagesize()),
- Stk_t(size),
- }
- if err := alloc.CallWithStack(ctx, stack[:]); err != nil {
- panic(err)
- }
- if stack[0] == 0 {
- panic(OOMErr)
- }
-
- // Save the newly allocated region.
- ptr := Ptr_t(stack[0])
- buf := View(mod, ptr, int64(size))
- ret := &MappedRegion{
- Ptr: ptr,
- size: size,
- addr: unsafe.Pointer(&buf[0]),
- }
- s.regions = append(s.regions, ret)
- return ret
-}
-
-type MappedRegion struct {
- addr unsafe.Pointer
- Ptr Ptr_t
- size int32
- used bool
-}
-
-func MapRegion(ctx context.Context, mod api.Module, f *os.File, offset int64, size int32, readOnly bool) (*MappedRegion, error) {
- s := ctx.Value(moduleKey{}).(*moduleState)
- r := s.new(ctx, mod, size)
- err := r.mmap(f, offset, readOnly)
- if err != nil {
- return nil, err
- }
- return r, nil
-}
-
-func (r *MappedRegion) Unmap() error {
- // We can't munmap the region, otherwise it could be remaped.
- // Instead, convert it to a protected, private, anonymous mapping.
- // If successful, it can be reused for a subsequent mmap.
- _, err := unix.MmapPtr(-1, 0, r.addr, uintptr(r.size),
- unix.PROT_NONE, unix.MAP_PRIVATE|unix.MAP_FIXED|unix.MAP_ANON)
- r.used = err != nil
- return err
-}
-
-func (r *MappedRegion) mmap(f *os.File, offset int64, readOnly bool) error {
- prot := unix.PROT_READ
- if !readOnly {
- prot |= unix.PROT_WRITE
- }
- _, err := unix.MmapPtr(int(f.Fd()), offset, r.addr, uintptr(r.size),
- prot, unix.MAP_SHARED|unix.MAP_FIXED)
- r.used = err == nil
- return err
-}