blob: 9a0fd332c974fae006ae81b305d85c1de544dd67 [file] [log] [blame]
Abhay Kumara61c5222025-11-10 07:32:50 +00001//go:build !windows
2
3package bbolt
4
5import "golang.org/x/sys/unix"
6
7// mlock locks memory of db file
8func mlock(db *DB, fileSize int) error {
9 sizeToLock := fileSize
10 if sizeToLock > db.datasz {
11 // Can't lock more than mmaped slice
12 sizeToLock = db.datasz
13 }
14 if err := unix.Mlock(db.dataref[:sizeToLock]); err != nil {
15 return err
16 }
17 return nil
18}
19
20// munlock unlocks memory of db file
21func munlock(db *DB, fileSize int) error {
22 if db.dataref == nil {
23 return nil
24 }
25
26 sizeToUnlock := fileSize
27 if sizeToUnlock > db.datasz {
28 // Can't unlock more than mmaped slice
29 sizeToUnlock = db.datasz
30 }
31
32 if err := unix.Munlock(db.dataref[:sizeToUnlock]); err != nil {
33 return err
34 }
35 return nil
36}