source: proiecte/swift/trunk/include/swift_thread.h @ 176

Last change on this file since 176 was 176, checked in by (none), 14 years ago
  • imported repo from "guagal"
File size: 1.5 KB
Line 
1/*
2 * swift_thread.h
3 *
4 * (c) 2009 Ionut Rosoiu <ionut.rosoiu@gmail.com>
5 *
6 */
7
8#ifndef SWIFT_THREAD_H_
9#define SWIFT_THREAD_H_
10
11#include "swift_common.h"
12#include "swift_allocator.h"
13#include "swift_declarations.h"
14#include "swift_context.h"
15#include "swift_deque.h"
16#include <pthread.h>
17
18#define SWIFT_THREAD_RUNNING    0
19#define SWIFT_THREAD_WAITING    1
20
21struct swift_thread {
22        struct swift_context *context;          /*< global info (related to the other threads) */
23        volatile int state;                                     /*< the state of the thread */
24        volatile int stop;                                      /*< true if the thread must stop */
25
26        int stats;                                                      /*< thread statistics */
27
28        swift_id_t      id;                                             /*< the id of the thread */
29        swift_deque_t workque;                          /*< the workqueue */
30
31#ifdef SWIFT_USE_CUSTOM_ALLOCATOR
32        void *heap;                                                     /*< base for the thread's heap */
33        void *heap_top;                                         /*< the top of the thread's heap */
34        void *heap_limit;                                       /*< the limit for the thread's heap */
35        swift_allocator_list_t **buckets;       /*< the allocator's buckets */
36#endif
37
38        swift_size_t last_sleep_time;           /*< used by the backoff algorithm (in ns) */
39        swift_size_t round_robin_id;            /*< the last target in a round robin steal search */
40        swift_size_t frame_no;                          /*< the number of frames this thread has spawned */
41
42        pthread_t thread;                                       /*< system-level thread */
43};
44
45typedef void* (*swift_entrypoint_t) (void*);
46
47void swift_thread_start(swift_thread_t *thread,
48                                                swift_entrypoint_t func);
49
50void swift_thread_wait(swift_thread_t *thread);
51
52
53
54#endif /* SWIFT_THREAD_H_ */
Note: See TracBrowser for help on using the repository browser.