Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2581 → Rev 2586

/trunk/uspace/lib/libc/include/tls.h/thread.h
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
 
/** @}
*/