Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/invoke.c

    r76e069f rbf71cfd  
    1717#include <stdlib.h>
    1818#include <stdio.h>
    19 #include <unwind.h>
    2019
    2120#include "invoke.h"
     
    5150        main( this );
    5251
     52        cor->state = Halted;
     53
    5354        //Final suspend, should never return
    5455        __leave_coroutine();
    5556        __cabi_abort( "Resumed dead coroutine" );
    56 }
    57 
    58 static _Unwind_Reason_Code _CtxCoroutine_UnwindStop(
    59         __attribute((__unused__)) int version,
    60         _Unwind_Action actions,
    61         __attribute((__unused__)) _Unwind_Exception_Class exceptionClass,
    62         __attribute((__unused__)) struct _Unwind_Exception * unwind_exception,
    63         __attribute((__unused__)) struct _Unwind_Context * context,
    64         __attribute((__unused__)) void * param
    65 ) {
    66         if( actions & _UA_END_OF_STACK  ) {
    67                 // We finished unwinding the coroutine,
    68                 // leave it
    69                 __leave_coroutine();
    70                 __cabi_abort( "Resumed dead coroutine" );
    71         }
    72         if( actions & _UA_CLEANUP_PHASE ) return _URC_NO_REASON;
    73 
    74         return _URC_FATAL_PHASE2_ERROR;
    75 }
    76 
    77 void _CtxCoroutine_Unwind(struct _Unwind_Exception * storage) __attribute__ ((__noreturn__));
    78 void _CtxCoroutine_Unwind(struct _Unwind_Exception * storage) {
    79         _Unwind_Reason_Code ret = _Unwind_ForcedUnwind( storage, _CtxCoroutine_UnwindStop, NULL );
    80         printf("UNWIND ERROR %d after force unwind\n", ret);
    81         abort();
    8257}
    8358
Note: See TracChangeset for help on using the changeset viewer.