...

Source file src/go.etcd.io/bbolt/mlock_unix.go

Documentation: go.etcd.io/bbolt

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

View as plain text