ptos: ps+hal: Add thread control block init

Signed-off-by: Chloe M <chloe@mensia.org>
This commit is contained in:
2026-07-14 16:14:03 -04:00
parent fe6be93d32
commit fcfe1dfb4a
6 changed files with 168 additions and 2 deletions
+25
View File
@@ -0,0 +1,25 @@
/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause.
*
* Description: Thread control block
* Author: Chloe M.
*/
#ifndef _MACHINE_TCB_H_
#define _MACHINE_TCB_H_ 1
#include <ptdef.h>
#include <machine/frame.h>
/*
* The thread control block contains machine specific thread
* information.
*
* @FrameSnapshot: Processor state snapshot
*/
typedef struct {
TRAP_FRAME FrameSnapshot;
} TCB;
#endif /* !_MACHINE_TCB_H_ */
+18
View File
@@ -0,0 +1,18 @@
/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause.
*
* Description: Thread control block bridge
* Author: Chloe M.
*/
#ifndef _HAL_TCB_H_
#define _HAL_TCB_H_ 1
/*
* This header must define the TCB structure for MD
* thread information.
*/
#include <machine/tcb.h>
#endif /* !_HAL_TCB_H_ */
+25
View File
@@ -0,0 +1,25 @@
/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause.
*
* Description: HAL thread management
* Author: Chloe M.
*/
#ifndef _HAL_THREAD_H_
#define _HAL_THREAD_H_ 1
#include <ps/thread.h>
#include <ptapi/status.h>
#include <ptdef.h>
/*
* Initialize machine specific thread information
*
* @Thread: Thread to initialize
* @Flags: Optional init flags
* @Ip: Instruction pointer value to start off with
*/
PT_STATUS HalThreadInit(THREAD *Thread, ULONG Flags, UPTR Ip);
#endif /* !_HAL_THREAD_H_ */
+10 -1
View File
@@ -10,6 +10,7 @@
#define _PS_THREAD_H_ 1
#include <ptapi/status.h>
#include <hal/tcb.h>
#include <ptdef.h>
#include <queue.h>
@@ -22,11 +23,15 @@ struct _PROCESS;
* processes.
*
* @Tid: Thread ID
* @Tcb: Thread control block
* @StackBase: Execution stack base
* @Parent: Parent process
* @ThreadLink: Thread queue link
*/
typedef struct _THREAD {
UQUAD Tid;
TCB Tcb;
UPTR StackBase;
struct _PROCESS *Parent;
TAILQ_ENTRY(_THREAD) ThreadLink;
} THREAD;
@@ -36,8 +41,12 @@ typedef struct _THREAD {
*
* @Parent: Parent of thread to create
* @Flags: Optional init flags
* @Ip: Instruction pointer value to start off with
* @Result: Result is written here
*/
PT_STATUS PsCreateThread(struct _PROCESS *Parent, ULONG Flags, THREAD **Result);
PT_STATUS PsCreateThread(
struct _PROCESS *Parent, ULONG Flags,
UPTR Ip, THREAD **Result
);
#endif /* !_PS_THREAD_H_ */