diff options
author | 2024-06-07 15:06:43 +0200 | |
---|---|---|
committer | 2024-06-07 15:06:43 +0200 | |
commit | cc4f773b0e0f45cdb28727853b9d253234a93b56 (patch) | |
tree | 455224a7cb489909906eda5778d0e700867358d4 /vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_unix.go | |
parent | [feature] Implement filters_changed stream event (#2972) (diff) | |
download | gotosocial-cc4f773b0e0f45cdb28727853b9d253234a93b56.tar.xz |
[chore] Update WASM go-sqlite3 to v0.16.1 (#2976)
This includes support for journal mode set to WAL on the BSDs.
Relates to: #1753, #2962
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_unix.go')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_unix.go | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_unix.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_unix.go deleted file mode 100644 index 2b1d3916b..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_unix.go +++ /dev/null @@ -1,67 +0,0 @@ -//go:build unix && !sqlite3_nosys - -package util - -import ( - "math" - - "github.com/tetratelabs/wazero/experimental" - "golang.org/x/sys/unix" -) - -func virtualAlloc(cap, max uint64) experimental.LinearMemory { - // Round up to the page size. - rnd := uint64(unix.Getpagesize() - 1) - max = (max + rnd) &^ rnd - - if max > math.MaxInt { - // This ensures int(max) overflows to a negative value, - // and unix.Mmap returns EINVAL. - max = math.MaxUint64 - } - - // Reserve max bytes of address space, to ensure we won't need to move it. - // A protected, private, anonymous mapping should not commit memory. - b, err := unix.Mmap(-1, 0, int(max), unix.PROT_NONE, unix.MAP_PRIVATE|unix.MAP_ANON) - if err != nil { - panic(err) - } - return &mmappedMemory{buf: b[:0]} -} - -// The slice covers the entire mmapped memory: -// - len(buf) is the already committed memory, -// - cap(buf) is the reserved address space. -type mmappedMemory struct { - buf []byte -} - -func (m *mmappedMemory) Reallocate(size uint64) []byte { - com := uint64(len(m.buf)) - res := uint64(cap(m.buf)) - if com < size && size < res { - // Round up to the page size. - rnd := uint64(unix.Getpagesize() - 1) - new := (size + rnd) &^ rnd - - // Commit additional memory up to new bytes. - err := unix.Mprotect(m.buf[com:new], unix.PROT_READ|unix.PROT_WRITE) - if err != nil { - panic(err) - } - - // Update committed memory. - m.buf = m.buf[:new] - } - // Limit returned capacity because bytes beyond - // len(m.buf) have not yet been committed. - return m.buf[:size:len(m.buf)] -} - -func (m *mmappedMemory) Free() { - err := unix.Munmap(m.buf[:cap(m.buf)]) - if err != nil { - panic(err) - } - m.buf = nil -} |