PatchworkOS
Loading...
Searching...
No Matches
thread.h File Reference

Go to the source code of this file.

Data Structures

struct  thread_t
 Thread of execution structure. More...
 

Enumerations

enum  thread_state_t {
  THREAD_PARKED = 0 ,
  THREAD_READY ,
  THREAD_RUNNING ,
  THREAD_PRE_BLOCK ,
  THREAD_BLOCKED ,
  THREAD_UNBLOCKING
}
 Thread state enum. More...
 

Functions

thread_tthread_new (process_t *process)
 Creates a new thread structure.
 
void thread_free (thread_t *thread)
 Frees a thread structure.
 
void thread_save (thread_t *thread, const interrupt_frame_t *frame)
 Save state to a thread.
 
void thread_load (thread_t *thread, interrupt_frame_t *frame)
 Load state from a thread.
 
_NORETURN void thread_jump (thread_t *thread)
 Jump to a thread by calling thread_load() and then loading its interrupt frame.
 
void thread_get_interrupt_frame (thread_t *thread, interrupt_frame_t *frame)
 Retrieve the interrupt frame from a thread.
 
bool thread_is_note_pending (thread_t *thread)
 Check if a thread has a note pending.
 
uint64_t thread_send_note (thread_t *thread, const void *buffer, uint64_t count)
 Send a note to a thread.
 
thread_tthread_get_boot (void)
 Retrieves the boot thread.
 
uint64_t thread_handle_page_fault (const interrupt_frame_t *frame)
 Handles a page fault that occurred in the currently running thread.
 
uint64_t thread_copy_from_user (thread_t *thread, void *dest, const void *userSrc, uint64_t length)
 Safely copy data from user space.
 
uint64_t thread_copy_to_user (thread_t *thread, void *dest, const void *userSrc, uint64_t length)
 Safely copy data to user space.
 
uint64_t thread_copy_from_user_terminated (thread_t *thread, const void *userArray, const void *terminator, uint8_t objectSize, uint64_t maxCount, void **outArray, uint64_t *outCount)
 Safely copy a null-terminated array of objects from user space.
 
uint64_t thread_copy_from_user_pathname (thread_t *thread, pathname_t *pathname, const char *userPath)
 Safely copy a string from user space and use it to initialize a pathname.
 
uint64_t thread_load_atomic_from_user (thread_t *thread, atomic_uint64_t *userObj, uint64_t *outValue)
 Atomically load a 64-bit value from a user-space atomic variable.