code: func NewCPUFreqCollector() (Collector, error) {
  	fs, err := sysfs.NewFS(*sysPath)
  	if err != nil {
  		return nil, fmt.Errorf("failed to open sysfs: %v", err)
  	}
  
  	return &cpuFreqCollector{
  		fs: fs,
  		cpuFreq: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "frequency_hertz"),
  			"Current cpu thread frequency in hertz.",
  			[]string{"cpu"}, nil,
  		),
  		cpuFreqMin: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "frequency_min_hertz"),
  			"Minimum cpu thread frequency in hertz.",
  			[]string{"cpu"}, nil,
  		),
  		cpuFreqMax: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "frequency_max_hertz"),
  			"Maximum cpu thread frequency in hertz.",
  			[]string{"cpu"}, nil,
  		),
  		scalingFreq: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "scaling_frequency_hertz"),
  			"Current scaled cpu thread frequency in hertz.",
  			[]string{"cpu"}, nil,
  		),
  		scalingFreqMin: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "scaling_frequency_min_hrts"),
  			"Minimum scaled cpu thread frequency in hertz.",
  			[]string{"cpu"}, nil,
  		),
  		scalingFreqMax: prometheus.NewDesc(
  			prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "scaling_frequency_max_hrts"),
  			"Maximum scaled cpu thread frequency in hertz.",
  			[]string{"cpu"}, nil,
  		),
  	}, nil
  }
docs: // NewCPUFreqCollector returns a new Collector exposing kernel/system statistics.