xref: /llvm-project/lldb/source/Plugins/Process/Linux/Procfs.h (revision 6db44e52ce474bbeb66042073a6e3c6c586f78a2)
1 //===-- Procfs.h ---------------------------------------------- -*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "lldb/lldb-types.h"
10 #include "llvm/Support/Error.h"
11 #include <vector>
12 
13 namespace lldb_private {
14 namespace process_linux {
15 
16 /// \return
17 ///     The content of /proc/cpuinfo and cache it if errors didn't happen.
18 llvm::Expected<llvm::ArrayRef<uint8_t>> GetProcfsCpuInfo();
19 
20 /// \return
21 ///     A list of available logical core ids given the contents of
22 ///     /proc/cpuinfo.
23 llvm::Expected<std::vector<lldb::cpu_id_t>>
24 GetAvailableLogicalCoreIDs(llvm::StringRef cpuinfo);
25 
26 /// \return
27 ///     A list with all the logical cores available in the system and cache it
28 ///     if errors didn't happen.
29 llvm::Expected<llvm::ArrayRef<lldb::cpu_id_t>> GetAvailableLogicalCoreIDs();
30 
31 /// \return
32 ///     The current value of /proc/sys/kernel/yama/ptrace_scope, parsed as an
33 ///     integer, or an error if the proc file cannot be read or has non-integer
34 ///     contents.
35 llvm::Expected<int> GetPtraceScope();
36 
37 } // namespace process_linux
38 } // namespace lldb_private
39