use strict;
use warnings;
use PVE::Tools;
-
-our $MAX_CPUID = 256; # should be enough for the next years
+use PVE::ProcFSTools;
sub new {
my ($this) = @_;
if ($part =~ /^\s*(\d+)(?:-(\d+))?\s*$/) {
my ($from, $to) = ($1, $2);
$to //= $1;
- die "cpu id '$from' is out of range\n" if $from >= $MAX_CPUID;
- die "cpu id '$to' is out of range\n" if $to >= $MAX_CPUID;
die "invalid range: $part ($to < $from)\n" if $to < $from;
for (my $i = $from; $i <= $to; $i++) {
$members->{$i} = 1;
open(my $fh, '>', $filename) || die "failed to open '$filename' - $!\n";
PVE::Tools::safe_print($filename, $fh, "$value\n");
- close($fh);
+ close($fh) || die "failed to close '$filename' - $!\n";
}
sub insert {
my $count = 0;
foreach my $cpu (@members) {
- die "cpu id '$cpu' is out of range\n" if $cpu >= $MAX_CPUID;
next if $self->{members}->{$cpu};
$self->{members}->{$cpu} = 1;
$count++;
my $count = 0;
foreach my $cpu (@members) {
- die "cpu id '$cpu' is out of range\n" if $cpu >= $MAX_CPUID;
next if !$self->{members}->{$cpu};
delete $self->{members}->{$cpu};
$count++;
sub members {
my ($self) = @_;
- return sort keys %{$self->{members}};
+ return sort { $a <=> $b } keys %{$self->{members}};
}
sub size {
$next = $cpu;
} else {
$res .= ',' if length($res);
- $res .= "$last-$next";
- $last = $next = undef;
+ if ($last != $next) {
+ $res .= "$last-$next";
+ } else {
+ $res .= "$last";
+ }
+ $last = $next = $cpu;
}
}