1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
use crate::{read_value, write_value, ProcResult};
/// Get the limit on the total number of file descriptors that a user can register across all epoll instances.
///
/// The limit is per real user ID. Each registered file descriptor costs roughtly 90 bytes on a 32-bit kernel,
/// and roughly 160 bytes on a 64-bit kernel. Currently, the default value for `max_user_watches` is 1/25 (4%)
/// of the available low memory, divided by the registration cost in bytes.
///
/// (Since Linux 2.6.28)
pub fn max_user_watches() -> ProcResult<u64> {
read_value("/proc/sys/fs/epoll/max_user_watches")
}
/// Sets the limit on the total number of file descriptors that a user can register across all epoll instances.
pub fn set_max_user_watches(val: u64) -> ProcResult<()> {
write_value("/proc/sys/fs/epoll/max_user_watches", val)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::KernelVersion;
#[test]
fn test_max_user_watches() {
if KernelVersion::current().unwrap() >= KernelVersion::new(2, 6, 28) {
println!("{}", max_user_watches().unwrap());
}
}
}