Fixes procdata's ring buffers
[akaros.git] / kern / include / ros / procdata.h
1 /* See COPYRIGHT for copyright information. */
2
3 #ifndef ROS_PROCDATA_H
4 #define ROS_PROCDATA_H
5
6 #include <ros/memlayout.h>
7 #include <ros/syscall.h>
8 #include <ros/sysevent.h>
9 #include <ros/error.h>
10 #include <ros/common.h>
11
12 #define PROCINFO_MAX_ARGV_SIZE 1024
13 #define PROCINFO_MAX_ENV_SIZE 1024
14
15 typedef struct procinfo {
16         pid_t pid;
17         pid_t ppid;
18         size_t max_harts;
19         uint64_t tsc_freq;
20
21         char argv_buf[PROCINFO_MAX_ARGV_SIZE];
22         char env_buf[PROCINFO_MAX_ENV_SIZE];
23 } procinfo_t;
24 #define PROCINFO_NUM_PAGES  ((sizeof(procinfo_t)-1)/PGSIZE + 1) 
25
26 typedef struct procdata {
27         // The actual ring buffers for communicating with user space
28         syscall_sring_t  syscallring;  // Per-process ring buffer for async syscalls
29         char padding1[SYSCALLRINGSIZE - sizeof(syscall_sring_t)];
30         sysevent_sring_t syseventring; // Per-process ring buffer for async sysevents
31         char padding2[SYSEVENTRINGSIZE - sizeof(sysevent_sring_t)];
32 #ifdef __i386__
33         segdesc_t *ldt;
34 #endif
35 } procdata_t;
36 #define PROCDATA_NUM_PAGES  ((sizeof(procdata_t)-1)/PGSIZE + 1)
37
38 #endif // !ROS_PROCDATA_H