ptos: ps+hal: Add thread control block init
Signed-off-by: Chloe M <chloe@mensia.org>
This commit is contained in:
@@ -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_ */
|
||||
@@ -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_ */
|
||||
@@ -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,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_ */
|
||||
|
||||
Reference in New Issue
Block a user