blob: 11da0d3145cf63355e30796662894a1f49f56ce9 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DIAGNOSTICS_CROS_HEALTHD_UTILS_PROCFS_UTILS_H_
#define DIAGNOSTICS_CROS_HEALTHD_UTILS_PROCFS_UTILS_H_
#include <sys/types.h>
#include <base/files/file_path.h>
namespace diagnostics {
// Indices of fields of interest in /proc/[pid]/stat. These should be kept in
// numerical order. Note that this is not an enum class so that it can be
// implicitly converted to ints when used as an index into an array or vector.
enum ProcPidStatIndices {
kState = 2,
kPriority = 17,
kNice = 18,
kStartTime = 21,
kMaxValue = kStartTime, // Must be updated whenever a larger index is added.
};
// Files read from a process subdirectory of procfs.
extern const char kProcessCmdlineFile[];
extern const char kProcessStatFile[];
extern const char kProcessStatmFile[];
extern const char kProcessStatusFile[];
// Returns an absolute path to the procfs subdirectory containing files related
// to the process with ID |pid|. On a real device, this will be /proc/|pid|.
base::FilePath GetProcProcessDirectoryPath(const base::FilePath& root_dir,
pid_t pid);
// Returns an absolute path to the cpuinfo file in procfs. On a real device,
// this will be /proc/cpuinfo.
base::FilePath GetProcCpuInfoPath(const base::FilePath& root_dir);
// Returns an absolute path to the stat file in procfs. On a real device, this
// will be /proc/stat.
base::FilePath GetProcStatPath(const base::FilePath& root_dir);
// Returns an absolute path to the uptime file in procfs. On a real device, this
// will be /proc/uptime.
base::FilePath GetProcUptimePath(const base::FilePath& root_dir);
} // namespace diagnostics
#endif // DIAGNOSTICS_CROS_HEALTHD_UTILS_PROCFS_UTILS_H_