#!/usr/bin/perl

use strict;
use warnings;

my $dir = $ARGV[0];
my $outfile = "cpu-node-map.txt";

my $sysdevsyscpu = "/sys/devices/system/cpu";
if (-d $sysdevsyscpu) {
	opendir(D, $sysdevsyscpu) || die "Can't open directory $sysdevsyscpu: $!\n";
	my @dirlist = readdir(D);
	closedir(D);
	open(CPUNODEMAP, ">$dir/$outfile") || die "Could not create $dir/$outfile";
	foreach my $f (@dirlist) {
		my $tgt = "$sysdevsyscpu/$f/topology/physical_package_id";
		if (-f $tgt) {
			my $node_id = `cat $tgt`;
			chomp $node_id;
			printf CPUNODEMAP "%s: %s\n", $f, $node_id;
		}
	}
	close(CPUNODEMAP);
}
