17 #ifndef __CGROUPS_HPP__
18 #define __CGROUPS_HPP__
27 #include <sys/types.h>
79 const std::string& baseHierarchy,
80 const std::string& subsystem,
81 const std::string&
cgroup);
191 const std::string&
cgroup,
192 bool recursive =
false);
222 const std::string&
cgroup =
"/");
233 const std::string&
cgroup,
248 const std::string&
cgroup,
249 const std::string& control);
261 const std::string&
cgroup,
262 const std::string& control,
263 const std::string& value);
277 const std::string&
cgroup,
278 const std::string& control);
288 const std::string&
cgroup);
298 const std::string&
cgroup);
312 const std::string&
cgroup,
327 const std::string&
cgroup,
345 const std::string&
cgroup,
346 const std::string& control,
369 const std::string&
cgroup =
"/");
378 const std::string&
cgroup,
400 const std::string&
cgroup,
401 const std::string&
file);
417 constexpr
Device(dev_t device) : value(device) {}
423 return value == that.value;
428 return value != that.value;
431 inline operator dev_t()
const {
return value; }
472 const std::string& cgroup);
476 const std::string& hierarchy,
477 const std::string& cgroup);
481 const std::string& hierarchy,
482 const std::string& cgroup);
486 const std::string& hierarchy,
487 const std::string& cgroup);
493 const std::string& hierarchy,
494 const std::string& cgroup);
501 const std::string& hierarchy,
502 const std::string& cgroup);
508 const std::string& hierarchy,
509 const std::string& cgroup);
515 const std::string& hierarchy,
516 const std::string& cgroup);
522 const std::string& hierarchy,
523 const std::string& cgroup);
530 const std::string& hierarchy,
531 const std::string& cgroup);
538 const std::string& hierarchy,
539 const std::string& cgroup);
546 const std::string& hierarchy,
547 const std::string& cgroup);
553 const std::string& hierarchy,
554 const std::string& cgroup);
560 const std::string& hierarchy,
561 const std::string& cgroup);
568 const std::string& hierarchy,
569 const std::string& cgroup);
576 const std::string& hierarchy,
577 const std::string& cgroup);
588 const std::string& cgroup);
594 const std::string& hierarchy,
595 const std::string& cgroup);
610 return stream <<
"Total";
612 return stream <<
"Read";
614 return stream <<
"Write";
616 return stream <<
"Sync";
618 return stream <<
"Async";
627 if (value.
device.isSome()) {
628 stream << value.
device.get() <<
' ';
632 stream << value.
op.
get() <<
' ';
635 return stream << value.
value;
653 const std::string& cgroup,
659 const std::string& hierarchy,
660 const std::string& cgroup);
665 const std::string& hierarchy,
666 const std::string& cgroup,
672 const std::string& hierarchy,
673 const std::string& cgroup);
678 const std::string& hierarchy,
679 const std::string& cgroup,
715 const std::string& cgroup);
732 const std::string& cgroup);
737 const std::string& hierarchy,
738 const std::string& cgroup,
746 const std::string& hierarchy,
747 const std::string& cgroup);
754 const std::string& hierarchy,
755 const std::string& cgroup,
761 const std::string& hierarchy,
762 const std::string& cgroup);
767 const std::string& hierarchy,
768 const std::string& cgroup,
774 const std::string& hierarchy,
775 const std::string& cgroup);
780 const std::string& hierarchy,
781 const std::string& cgroup);
786 const std::string& hierarchy,
787 const std::string& cgroup);
795 const std::string& hierarchy,
796 const std::string& cgroup);
803 const std::string& hierarchy,
804 const std::string& cgroup);
809 const std::string& hierarchy,
810 const std::string& cgroup);
815 const std::string& hierarchy,
816 const std::string& cgroup);
838 class CounterProcess;
851 const std::string& hierarchy,
852 const std::string& cgroup,
865 Counter(
const std::string& hierarchy,
866 const std::string& cgroup,
910 std::ostream& stream,
914 std::ostream& stream,
918 std::ostream& stream,
922 std::ostream& stream,
942 const std::string&
cgroup);
947 const std::string&
cgroup,
953 const std::string&
cgroup,
971 const std::string&
cgroup);
979 const std::string& hierarchy,
980 const std::string& cgroup);
991 const std::string&
cgroup);
996 const std::string& hierarchy,
997 const std::string& cgroup,
998 const uint32_t handle);
1016 return static_cast<size_t>(level);
1022 #endif // __CGROUPS_HPP__
Try< Nothing > isolate(const std::string &hierarchy, const std::string &cgroup, pid_t pid)
Try< std::vector< Value > > sectors(const std::string &hierarchy, const std::string &cgroup)
bool mknod
Definition: cgroups.hpp:902
Try< bool > enabled(const std::string &hierarchy, const std::string &cgroup)
Try< Nothing > enable(const std::string &hierarchy, const std::string &cgroup)
Definition: cgroups.hpp:880
Option< unsigned int > minor
Definition: cgroups.hpp:895
Try< std::vector< Value > > io_serviced(const std::string &hierarchy, const std::string &cgroup)
Try< bool > busy(const std::string &subsystems)
Try< std::vector< Value > > io_wait_time(const std::string &hierarchy, const std::string &cgroup)
Try< std::vector< Value > > io_serviced(const std::string &hierarchy, const std::string &cgroup)
Definition: cgroups.hpp:884
Try< Nothing > shares(const std::string &hierarchy, const std::string &cgroup, uint64_t shares)
Option< Operation > op
Definition: cgroups.hpp:461
Try< Stats > stat(const std::string &hierarchy, const std::string &cgroup)
std::ostream & operator<<(std::ostream &stream, const Entry::Selector::Type &type)
Try< Bytes > max_usage_in_bytes(const std::string &hierarchy, const std::string &cgroup)
process::Future< bool > cleanup(const std::string &hierarchy)
process::Future< Nothing > listen(const std::string &hierarchy, const std::string &cgroup)
Try< std::vector< Value > > io_queued_recursive(const std::string &hierarchy, const std::string &cgroup)
Try< Bytes > memsw_usage_in_bytes(const std::string &hierarchy, const std::string &cgroup)
Try< std::vector< Value > > time_recursive(const std::string &hierarchy, const std::string &cgroup)
static Try< Entry > parse(const std::string &s)
bool write
Definition: cgroups.hpp:901
Try< Bytes > limit_in_bytes(const std::string &hierarchy, const std::string &cgroup)
result_type operator()(const argument_type &level) const
Definition: cgroups.hpp:1013
Result< Bytes > memsw_limit_in_bytes(const std::string &hierarchy, const std::string &cgroup)
Operation
Definition: cgroups.hpp:441
uint64_t value
Definition: cgroups.hpp:462
cgroups::memory::pressure::Level argument_type
Definition: cgroups.hpp:1011
const Duration system
Definition: cgroups.hpp:703
const unsigned int THREAD_ASSIGN_RETRIES
Definition: cgroups.hpp:54
unsigned int getMinor() const
Definition: duration.hpp:32
Definition: result.hpp:40
Definition: cgroups.hpp:830
process::Future< uint64_t > listen(const std::string &hierarchy, const std::string &cgroup, const std::string &control, const Option< std::string > &args=Option< std::string >::none())
Try< bool > access(const std::string &path, int how)
Definition: access.hpp:28
bool isSome() const
Definition: option.hpp:115
Result< std::string > cgroup(pid_t pid)
Try< std::vector< Value > > io_queued(const std::string &hierarchy, const std::string &cgroup)
Definition: cgroups.hpp:898
Try< std::vector< Value > > sectors_recursive(const std::string &hierarchy, const std::string &cgroup)
Try< std::vector< Value > > io_service_bytes(const std::string &hierarchy, const std::string &cgroup)
DWORD pid_t
Definition: windows.hpp:187
Definition: cgroups.hpp:828
Definition: cgroups.hpp:829
Try< std::vector< Value > > io_service_time(const std::string &hierarchy, const std::string &cgroup)
static Try< Value > parse(const std::string &s)
URI file(const std::string &path)
Creates a file URI with the given path on the local host.
Definition: file.hpp:33
Type
Definition: cgroups.hpp:886
Definition: cgroups.hpp:414
Try< Nothing > unmount(const std::string &hierarchy)
Try< Nothing > disable(const std::string &hierarchy, const std::string &cgroup)
Definition: duration.hpp:259
Try< Nothing > cfs_period_us(const std::string &hierarchy, const std::string &cgroup, const Duration &duration)
Selector selector
Definition: cgroups.hpp:905
Try< std::vector< Value > > io_service_bytes_recursive(const std::string &hierarchy, const std::string &cgroup)
Result< std::string > cgroup(pid_t pid)
const Duration FREEZE_RETRY_INTERVAL
Definition: cgroups.hpp:50
const T & get() const &
Definition: option.hpp:118
process::Future< Nothing > destroy(const std::string &hierarchy, const std::string &cgroup="/")
Definition: cgroups.hpp:458
Try< hashmap< std::string, uint64_t > > stat(const std::string &hierarchy, const std::string &cgroup, const std::string &file)
Try< std::vector< Value > > io_merged(const std::string &hierarchy, const std::string &cgroup)
Try< Bytes > soft_limit_in_bytes(const std::string &hierarchy, const std::string &cgroup)
process::Future< uint64_t > value() const
Try< std::vector< Value > > io_wait_time_recursive(const std::string &hierarchy, const std::string &cgroup)
#define UNREACHABLE()
Definition: unreachable.hpp:22
Try< std::vector< Entry > > list(const std::string &hierarchy, const std::string &cgroup)
std::ostream & operator<<(std::ostream &stream, Level level)
Try< bool > mounted(const std::string &hierarchy, const std::string &subsystems="")
Option< unsigned int > major
Definition: cgroups.hpp:894
static Try< Device > parse(const std::string &s)
Result< std::string > cgroup(pid_t pid)
Result< std::string > cgroup(pid_t pid)
Try< std::vector< Value > > io_serviced_recursive(const std::string &hierarchy, const std::string &cgroup)
constexpr Device(dev_t device)
Definition: cgroups.hpp:417
Try< Nothing > mount(const std::string &hierarchy, const std::string &subsystems, int retry=0)
std::ostream & operator<<(std::ostream &stream, const Device &device)
Definition: cgroups.hpp:600
bool read
Definition: cgroups.hpp:900
bool operator!=(const Device &that) const
Definition: cgroups.hpp:426
Access access
Definition: cgroups.hpp:906
Try< std::set< pid_t > > processes(const std::string &hierarchy, const std::string &cgroup)
Try< uint32_t > classid(const std::string &hierarchy, const std::string &cgroup)
Try< Bytes > usage_in_bytes(const std::string &hierarchy, const std::string &cgroup)
Definition: cgroups.hpp:845
process::Future< Nothing > freeze(const std::string &hierarchy, const std::string &cgroup)
Try< uint32_t > type(const std::string &path)
Try< Nothing > allow(const std::string &hierarchy, const std::string &cgroup, const Entry &entry)
static Try< process::Owned< Counter > > create(const std::string &hierarchy, const std::string &cgroup, Level level)
Try< std::vector< Value > > io_service_bytes(const std::string &hierarchy, const std::string &cgroup)
Level
Definition: cgroups.hpp:826
Try< std::vector< Value > > io_merged_recursive(const std::string &hierarchy, const std::string &cgroup)
Option< Device > device
Definition: cgroups.hpp:460
Try< std::set< std::string > > hierarchies()
Definition: cgroups.hpp:700
Try< std::string > prepare(const std::string &baseHierarchy, const std::string &subsystem, const std::string &cgroup)
Try< Nothing > create(const std::string &hierarchy, const std::string &cgroup, bool recursive=false)
Try< Duration > cfs_quota_us(const std::string &hierarchy, const std::string &cgroup)
Try< Nothing > kill(const std::string &hierarchy, const std::string &cgroup, int signal)
const Duration DESTROY_TIMEOUT
Definition: cgroups.hpp:44
size_t result_type
Definition: cgroups.hpp:1009
Result< std::string > hierarchy(const std::string &subsystems)
Try< Memory > memory()
Definition: freebsd.hpp:78
const Duration user
Definition: cgroups.hpp:702
Try< Nothing > assign(const std::string &hierarchy, const std::string &cgroup, pid_t pid)
Type type
Definition: cgroups.hpp:893
Try< Nothing > write(const std::string &hierarchy, const std::string &cgroup, const std::string &control, const std::string &value)
Try< std::set< pid_t > > threads(const std::string &hierarchy, const std::string &cgroup)
Try< Nothing > deny(const std::string &hierarchy, const std::string &cgroup, const Entry &entry)
Try< std::vector< Value > > io_service_time_recursive(const std::string &hierarchy, const std::string &cgroup)
Try< bool > exists(const std::string &hierarchy, const std::string &cgroup)
Try< std::vector< Value > > time(const std::string &hierarchy, const std::string &cgroup)
Try< std::set< std::string > > subsystems()
Try< std::string > read(const std::string &hierarchy, const std::string &cgroup, const std::string &control)
bool operator==(const Device &that) const
Definition: cgroups.hpp:421
unsigned int getMajor() const
Definition: future.hpp:57
process::Future< Nothing > thaw(const std::string &hierarchy, const std::string &cgroup)
bool operator==(const Entry::Selector &left, const Entry::Selector &right)