CProcessStatisticsReader.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #pragma once
  2. #include <AK/HashMap.h>
  3. #include <AK/String.h>
  4. #include <unistd.h>
  5. struct CThreadStatistics {
  6. int tid;
  7. unsigned times_scheduled;
  8. unsigned ticks;
  9. unsigned syscall_count;
  10. unsigned inode_faults;
  11. unsigned zero_faults;
  12. unsigned cow_faults;
  13. unsigned unix_socket_read_bytes;
  14. unsigned unix_socket_write_bytes;
  15. unsigned ipv4_socket_read_bytes;
  16. unsigned ipv4_socket_write_bytes;
  17. unsigned file_read_bytes;
  18. unsigned file_write_bytes;
  19. String state;
  20. String priority;
  21. String name;
  22. };
  23. struct CProcessStatistics {
  24. // Keep this in sync with /proc/all.
  25. // From the kernel side:
  26. pid_t pid;
  27. unsigned pgid;
  28. unsigned pgp;
  29. unsigned sid;
  30. uid_t uid;
  31. gid_t gid;
  32. pid_t ppid;
  33. unsigned nfds;
  34. String name;
  35. String tty;
  36. size_t amount_virtual;
  37. size_t amount_resident;
  38. size_t amount_shared;
  39. int icon_id;
  40. Vector<CThreadStatistics> threads;
  41. // synthetic
  42. String username;
  43. };
  44. class CProcessStatisticsReader {
  45. public:
  46. static HashMap<pid_t, CProcessStatistics> get_all();
  47. private:
  48. static String username_from_uid(uid_t);
  49. static HashMap<uid_t, String> s_usernames;
  50. };