CProcessStatisticsReader.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. u32 priority;
  21. u32 effective_priority;
  22. String name;
  23. };
  24. struct CProcessStatistics {
  25. // Keep this in sync with /proc/all.
  26. // From the kernel side:
  27. pid_t pid;
  28. unsigned pgid;
  29. unsigned pgp;
  30. unsigned sid;
  31. uid_t uid;
  32. gid_t gid;
  33. pid_t ppid;
  34. unsigned nfds;
  35. String name;
  36. String tty;
  37. String pledge;
  38. size_t amount_virtual;
  39. size_t amount_resident;
  40. size_t amount_shared;
  41. size_t amount_dirty_private;
  42. size_t amount_clean_inode;
  43. size_t amount_purgeable_volatile;
  44. size_t amount_purgeable_nonvolatile;
  45. int icon_id;
  46. Vector<CThreadStatistics> threads;
  47. // synthetic
  48. String username;
  49. };
  50. class CProcessStatisticsReader {
  51. public:
  52. static HashMap<pid_t, CProcessStatistics> get_all();
  53. private:
  54. static String username_from_uid(uid_t);
  55. static HashMap<uid_t, String> s_usernames;
  56. };