| Abhay Kumar | a61c522 | 2025-11-10 07:32:50 +0000 | [diff] [blame] | 1 | //go:build !windows |
| 2 | |
| 3 | package bbolt |
| 4 | |
| 5 | import "golang.org/x/sys/unix" |
| 6 | |
| 7 | // mlock locks memory of db file |
| 8 | func 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 |
| 21 | func 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 | } |