CProcessStatisticsReader.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. size_t amount_virtual;
  38. size_t amount_resident;
  39. size_t amount_shared;
  40. size_t amount_dirty_private;
  41. size_t amount_clean_inode;
  42. size_t amount_purgeable_volatile;
  43. size_t amount_purgeable_nonvolatile;
  44. int icon_id;
  45. Vector<CThreadStatistics> threads;
  46. // synthetic
  47. String username;
  48. };
  49. class CProcessStatisticsReader {
  50. public:
  51. static HashMap<pid_t, CProcessStatistics> get_all();
  52. private:
  53. static String username_from_uid(uid_t);
  54. static HashMap<uid_t, String> s_usernames;
  55. };