process.odin 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package os2
  2. import sync "core:sync/sync2"
  3. import "core:time"
  4. args: []string;
  5. exit :: proc "contextless" (code: int) -> ! {
  6. //
  7. }
  8. get_uid :: proc() -> int {
  9. return -1;
  10. }
  11. get_euid :: proc() -> int {
  12. return -1;
  13. }
  14. get_gid :: proc() -> int {
  15. return -1;
  16. }
  17. get_egid :: proc() -> int {
  18. return -1;
  19. }
  20. get_pid :: proc() -> int {
  21. return -1;
  22. }
  23. get_ppid :: proc() -> int {
  24. return -1;
  25. }
  26. Process :: struct {
  27. pid: int,
  28. handle: uintptr,
  29. is_done: b32,
  30. signal_mutex: sync.RW_Mutex,
  31. }
  32. Process_Attributes :: struct {
  33. dir: string,
  34. env: []string,
  35. files: []Handle,
  36. sys: ^Process_Attributes_OS_Specific,
  37. }
  38. Process_Attributes_OS_Specific :: struct{};
  39. Process_Error :: enum {
  40. None,
  41. }
  42. Process_State :: struct {
  43. pid: int,
  44. exit_code: int,
  45. exited: bool,
  46. success: bool,
  47. system_time: time.Duration,
  48. user_time: time.Duration,
  49. sys: rawptr,
  50. }
  51. Signal :: #type proc();
  52. Kill: Signal = nil;
  53. Interrupt: Signal = nil;
  54. find_process :: proc(pid: int) -> (^Process, Process_Error) {
  55. return nil, .None;
  56. }
  57. process_start :: proc(name: string, argv: []string, attr: ^Process_Attributes) -> (^Process, Process_Error) {
  58. return nil, .None;
  59. }
  60. process_release :: proc(p: ^Process) -> Process_Error {
  61. return .None;
  62. }
  63. process_kill :: proc(p: ^Process) -> Process_Error {
  64. return .None;
  65. }
  66. process_signal :: proc(p: ^Process, sig: Signal) -> Process_Error {
  67. return .None;
  68. }
  69. process_wait :: proc(p: ^Process) -> (Process_State, Process_Error) {
  70. return {}, .None;
  71. }