52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
#ifndef MANGO_TASK_H_
|
|
#define MANGO_TASK_H_
|
|
|
|
#include <mango/status.h>
|
|
#include <mango/types.h>
|
|
|
|
extern kern_status_t task_exit(int status);
|
|
extern kern_status_t task_self(kern_handle_t *out);
|
|
|
|
extern kern_status_t task_create(
|
|
kern_handle_t parent,
|
|
const char *name,
|
|
size_t name_len,
|
|
kern_handle_t *out_task,
|
|
kern_handle_t *out_address_space);
|
|
extern kern_status_t task_create_thread(
|
|
kern_handle_t task,
|
|
virt_addr_t ip,
|
|
virt_addr_t sp,
|
|
uintptr_t *args,
|
|
size_t nr_args,
|
|
kern_handle_t *out_thread);
|
|
extern kern_status_t task_get_address_space(
|
|
kern_handle_t task,
|
|
kern_handle_t *out);
|
|
extern kern_status_t task_config_get(
|
|
kern_handle_t task,
|
|
kern_config_key_t key,
|
|
void *ptr,
|
|
size_t len);
|
|
extern kern_status_t task_config_set(
|
|
kern_handle_t task,
|
|
kern_config_key_t key,
|
|
const void *ptr,
|
|
size_t len);
|
|
|
|
extern kern_status_t thread_self(kern_handle_t *out);
|
|
extern kern_status_t thread_start(kern_handle_t thread);
|
|
extern kern_status_t thread_exit(void);
|
|
extern kern_status_t thread_config_get(
|
|
kern_handle_t thread,
|
|
kern_config_key_t key,
|
|
void *ptr,
|
|
size_t len);
|
|
extern kern_status_t thread_config_set(
|
|
kern_handle_t thread,
|
|
kern_config_key_t key,
|
|
const void *ptr,
|
|
size_t len);
|
|
|
|
#endif
|