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 | */ |