1,5 → 1,5 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* Copyright (c) 2007 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
32,31 → 32,36 |
/** @file |
*/ |
|
#ifndef LIBC_THREAD_H_ |
#define LIBC_THREAD_H_ |
#ifndef LIBC_TLS_H_ |
#define LIBC_TLS_H_ |
|
#include <kernel/proc/uarg.h> |
#include <libarch/thread.h> |
#include <libarch/tls.h> |
#include <sys/types.h> |
|
typedef uint64_t thread_id_t; |
|
/* |
* Symbols defined in the respective linker script. |
*/ |
extern char _tls_alignment; |
extern char _tdata_start; |
extern char _tdata_end; |
extern char _tbss_start; |
extern char _tbss_end; |
|
extern void __thread_entry(void); |
extern void __thread_main(uspace_arg_t *uarg); |
|
extern int thread_create(void (* function)(void *), void *arg, char *name, thread_id_t *tid); |
extern void thread_exit(int status); |
extern void thread_detach(thread_id_t thread); |
extern int thread_join(thread_id_t thread); |
extern thread_id_t thread_get_id(void); |
extern tcb_t * __make_tls(void); |
extern tcb_t * __alloc_tls(void **data, size_t size); |
extern tcb_t *__make_tls(void); |
extern tcb_t *__alloc_tls(void **, size_t); |
extern void __free_tls(tcb_t *); |
extern void __free_tls_arch(tcb_t *, size_t size); |
extern void __free_tls_arch(tcb_t *, size_t); |
|
#ifdef CONFIG_TLS_VARIANT_1 |
extern tcb_t *tls_alloc_variant_1(void **, size_t); |
extern void tls_free_variant_1(tcb_t *, size_t); |
#endif |
#ifdef CONFIG_TLS_VARIANT_2 |
extern tcb_t *tls_alloc_variant_2(void **, size_t); |
extern void tls_free_variant_2(tcb_t *, size_t); |
#endif |
|
#endif |
|
/** @} |
*/ |