Rev 2581 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2581 | Rev 2586 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* |
1 | /* |
2 | * Copyright (c) 2006 Jakub Jermar |
2 | * Copyright (c) 2007 Jakub Jermar |
3 | * All rights reserved. |
3 | * All rights reserved. |
4 | * |
4 | * |
5 | * Redistribution and use in source and binary forms, with or without |
5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions |
6 | * modification, are permitted provided that the following conditions |
7 | * are met: |
7 | * are met: |
Line 30... | Line 30... | ||
30 | * @{ |
30 | * @{ |
31 | */ |
31 | */ |
32 | /** @file |
32 | /** @file |
33 | */ |
33 | */ |
34 | 34 | ||
35 | #ifndef LIBC_THREAD_H_ |
35 | #ifndef LIBC_TLS_H_ |
36 | #define LIBC_THREAD_H_ |
36 | #define LIBC_TLS_H_ |
37 | 37 | ||
38 | #include <kernel/proc/uarg.h> |
- | |
39 | #include <libarch/thread.h> |
38 | #include <libarch/tls.h> |
40 | #include <sys/types.h> |
39 | #include <sys/types.h> |
41 | 40 | ||
- | 41 | /* |
|
42 | typedef uint64_t thread_id_t; |
42 | * Symbols defined in the respective linker script. |
43 | 43 | */ |
|
44 | extern char _tls_alignment; |
44 | extern char _tls_alignment; |
- | 45 | extern char _tdata_start; |
|
- | 46 | extern char _tdata_end; |
|
- | 47 | extern char _tbss_start; |
|
- | 48 | extern char _tbss_end; |
|
45 | 49 | ||
46 | extern void __thread_entry(void); |
- | |
47 | extern void __thread_main(uspace_arg_t *uarg); |
- | |
48 | - | ||
49 | extern int thread_create(void (* function)(void *), void *arg, char *name, thread_id_t *tid); |
- | |
50 | extern void thread_exit(int status); |
- | |
51 | extern void thread_detach(thread_id_t thread); |
- | |
52 | extern int thread_join(thread_id_t thread); |
- | |
53 | extern thread_id_t thread_get_id(void); |
- | |
54 | extern tcb_t * __make_tls(void); |
50 | extern tcb_t *__make_tls(void); |
55 | extern tcb_t * __alloc_tls(void **data, size_t size); |
51 | extern tcb_t *__alloc_tls(void **, size_t); |
56 | extern void __free_tls(tcb_t *); |
52 | extern void __free_tls(tcb_t *); |
57 | extern void __free_tls_arch(tcb_t *, size_t size); |
53 | extern void __free_tls_arch(tcb_t *, size_t); |
- | 54 | ||
- | 55 | #ifdef CONFIG_TLS_VARIANT_1 |
|
- | 56 | extern tcb_t *tls_alloc_variant_1(void **, size_t); |
|
- | 57 | extern void tls_free_variant_1(tcb_t *, size_t); |
|
- | 58 | #endif |
|
- | 59 | #ifdef CONFIG_TLS_VARIANT_2 |
|
- | 60 | extern tcb_t *tls_alloc_variant_2(void **, size_t); |
|
- | 61 | extern void tls_free_variant_2(tcb_t *, size_t); |
|
- | 62 | #endif |
|
58 | 63 | ||
59 | #endif |
64 | #endif |
60 | 65 | ||
61 | /** @} |
66 | /** @} |
62 | */ |
67 | */ |