source: src/libcfa/concurrency/kernel.c@ 5ebb2fbc

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since 5ebb2fbc was 8118303, checked in by Thierry Delisle <tdelisle@…>, 9 years ago

First prototype of cfa threads running (1 thread on 1 processor)

  • Property mode set to 100644
File size: 1.3 KB
Line 
1// -*- Mode: CFA -*-
2//
3// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
4//
5// The contents of this file are covered under the licence agreement in the
6// file "LICENCE" distributed with Cforall.
7//
8// kernel.c --
9//
10// Author : Thierry Delisle
11// Created On : Tue Jan 17 12:27:26 2016
12// Last Modified By : Thierry Delisle
13// Last Modified On : --
14// Update Count : 0
15//
16
17//Header
18#include "kernel"
19
20//C Includes
21#include <stdbool.h>
22
23//CFA Includes
24#include "libhdr.h"
25#include "threads"
26
27//Private includes
28#define __CFA_INVOKE_PRIVATE__
29#include "invoke.h"
30
31thread_h * the_thread = 0;
32
33void kernel_run( void ) {
34
35 bool done = true;
36 coroutine* processor_cor = this_coroutine();
37 LIB_DEBUG_PRINTF("Kernel : processor cor is %p\n", processor_cor);
38
39 do {
40 thread_h * dst = the_thread;
41
42 LIB_DEBUG_PRINTF("Kernel : picked thread %p\n", dst);
43
44 // set new coroutine that task is executing
45 current_coroutine = &dst->c;
46
47 // context switch to specified coroutine
48 LIB_DEBUG_PRINTF("Kernel : switching to ctx %p (from %p)\n", current_coroutine, processor_cor);
49 CtxSwitch( processor_cor->stack.context, current_coroutine->stack.context );
50 // when CtxSwitch returns we are back in the processor coroutine
51 } while( ! done );
52}
53
54// Local Variables: //
55// mode: c //
56// tab-width: 4 //
57// End: //
Note: See TracBrowser for help on using the repository browser.