Changeset 78b3f52 for src/libcfa/concurrency/threads
- Timestamp:
- Dec 2, 2016, 5:10:22 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- d7bcbf5
- Parents:
- 4cb935e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/concurrency/threads
r4cb935e r78b3f52 1 // -*- Mode: CFA -*- 1 2 // 2 // Cforall Version 1.0.0 Copyright (C) 201 5University of Waterloo3 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo 3 4 // 4 5 // The contents of this file are covered under the licence agreement in the 5 6 // file "LICENCE" distributed with Cforall. 6 7 // 7 // fstream--8 // threads -- 8 9 // 9 // Author : Peter A. Buhr10 // Created On : Wed May 27 17:56:53 201511 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Apr 28 08:08:04201613 // Update Count : 8810 // Author : Thierry Delisle 11 // Created On : Mon Nov 28 12:27:26 2016 12 // Last Modified By : Thierry Delisle 13 // Last Modified On : Mon Nov 28 12:27:26 2016 14 // Update Count : 0 14 15 // 15 16 … … 19 20 #include <stdbool.h> 20 21 21 struct coroutine { 22 coroutine* last; 23 const char* name; 24 bool notHalted; 25 }; 22 extern "C" { 23 struct coVtable { 24 void (*main)(void*); 25 struct coroutine* (*this_coroutine)(void*); 26 }; 27 28 struct coStack_t { 29 unsigned int size; // size of stack 30 void *storage; // pointer to stack 31 void *limit; // stack grows towards stack limit 32 void *base; // base of stack 33 void *context; // address of cfa_context_t 34 void *top; // address of top of storage 35 bool userStack; 36 }; 37 38 39 enum coroutine_state { Start, Inactive, Active, Halt }; 40 41 struct coroutine { 42 coStack_t stack; 43 const char *name; // textual name for coroutine/task, initialized by uC++ generated code 44 int errno_; // copy of global UNIX variable errno 45 coroutine_state state; // current execution status for coroutine 46 bool notHalted; // indicate if execuation state is not halted 47 48 coroutine *starter; // first coroutine to resume this one 49 coroutine *last; // last coroutine to resume this one 50 }; 51 } 52 53 void ?{}(coStack_t* this); 26 54 27 55 void ?{}(coroutine* this); … … 29 57 trait coroutine_t(dtype T) { 30 58 coroutine* this_coroutine(T* this); 59 void co_main(T* this); 60 coVtable* vtable(T* this); 31 61 }; 62 63 forall(dtype T | coroutine_t(T)) 64 void start(T* cor); 32 65 33 66 void suspend(void); … … 37 70 38 71 #endif //__THREADS_H__ 72 73 // Local Variables: // 74 // mode: c // 75 // tab-width: 4 // 76 // End: //
Note: See TracChangeset
for help on using the changeset viewer.