From dd13f1836f9902cb3429f43d5fdf4e718a71b42d Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Mon, 30 Mar 2020 16:30:34 +0200 Subject: [PATCH] cpuset: further factorization Signed-off-by: Wolfgang Bumiller --- src/PVE/CpuSet.pm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/PVE/CpuSet.pm b/src/PVE/CpuSet.pm index fe36536..1f41e8f 100644 --- a/src/PVE/CpuSet.pm +++ b/src/PVE/CpuSet.pm @@ -14,18 +14,25 @@ sub new { return $self; } -# Create a new set with the contents of a cgroup-v1 subdirectory +# Create a new set with the contents of a cgroup-v1 subdirectory. sub new_from_cgroup { my ($class, $cgroup, $effective) = @_; + return $class->new_from_path("/sys/fs/cgroup/cpuset/$cgroup", $effective); +} + +# Create a new set from the contents of a complete path to a cgroup directory. +sub new_from_path { + my ($class, $path, $effective) = @_; + my $kind = $effective ? 'effective_cpus' : 'cpus'; - my $filename = "/sys/fs/cgroup/cpuset/$cgroup/cpuset.$kind"; + my $filename = "$path/cpuset.$kind"; my $set_text = PVE::Tools::file_read_firstline($filename) // ''; my ($count, $members) = parse_cpuset($set_text); - die "got empty cpuset for cgroup '$cgroup'\n" + die "got empty cpuset for cgroup '$path'\n" if !$count; return $class->new($members);