summaryrefslogtreecommitdiff
path: root/src/sys/include
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-10 18:49:43 -0400
committerIan Moffett <ian@osmora.org>2025-10-10 18:49:43 -0400
commit2f8da5a5eb726f3c05b8fca19e82928d8acb147d (patch)
tree59bcbbddb3dbf86879821e40fe4d65693a5e2ddc /src/sys/include
parentfe317f8e7cb245cc36c0c6ac8fdef5d54168e978 (diff)
kern: proc: Add initial penv block support
This commit introduces the initial support for the process environment block and implements argv and argc. Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys/include')
-rw-r--r--src/sys/include/sys/limits.h2
-rw-r--r--src/sys/include/sys/proc.h16
2 files changed, 13 insertions, 5 deletions
diff --git a/src/sys/include/sys/limits.h b/src/sys/include/sys/limits.h
index 5e32233..180d3fc 100644
--- a/src/sys/include/sys/limits.h
+++ b/src/sys/include/sys/limits.h
@@ -37,5 +37,7 @@
#define SC_MAX 64 /* Max syscalls */
#define SCWIN_MAX 2 /* Max syscall windows */
#define FD_MAX 256 /* Max file descriptors */
+#define NARG_MAX 16 /* Max arguments */
+#define ARG_LEN 64 /* Max length per argument */
#endif /* !_SYS_LIMITS_H_ */
diff --git a/src/sys/include/sys/proc.h b/src/sys/include/sys/proc.h
index ea89d4c..5bffc3e 100644
--- a/src/sys/include/sys/proc.h
+++ b/src/sys/include/sys/proc.h
@@ -35,12 +35,15 @@
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/queue.h>
+#if defined(_KERNEL)
+#include <lib/ptrbox.h>
#include <os/mac.h>
#include <os/signal.h>
#include <os/spinlock.h>
#include <os/filedesc.h>
#include <vm/vm.h>
#include <machine/pcb.h> /* standard */
+#endif /* _KERNEL */
/*
* The stack starts here and grows down
@@ -48,18 +51,20 @@
#define STACK_TOP 0xBFFFFFFF
#define STACK_LEN 4096
-#if defined(_KERNEL)
-
/*
* Process environment block, used to store arguments
* and other information.
*
- * @pid: PID of the process that owns this block
+ * @argv: Argument vector
+ * @argc: Argument count
*/
struct penv_blk {
- pid_t pid;
+ char **argv;
+ uint16_t argc;
};
+#if defined(_KERNEL)
+
/*
* A process describes a running program image
* on the system.
@@ -81,7 +86,8 @@ struct proc {
struct md_pcb pcb;
struct syscall_domain scdom;
struct filedesc *fdtab[FD_MAX];
- struct penv_blk envblk;
+ struct penv_blk *envblk;
+ struct ptrbox *envblk_box;
mac_level_t level;
struct spinlock maplist_lock;
sigtab_t sigtab;