mlock_unix.go 718 B

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