Ignore:
Timestamp:
Mar 12, 2021, 4:30:39 PM (2 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
arm-eh, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
df65c0c
Parents:
b1d83ba
Message:

Implemented part of the same C api for threads as libfibre.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/kernel/startup.cfa

    rb1d83ba ra1538cd  
    7373static void __kernel_first_resume( processor * this );
    7474static void __kernel_last_resume ( processor * this );
    75 static void init(processor & this, const char name[], cluster & _cltr);
     75static void init(processor & this, const char name[], cluster & _cltr, void (*fnc) (void *), void * arg);
    7676static void deinit(processor & this);
    7777static void doregister( struct cluster & cltr );
     
    198198                ( this.terminated ){};
    199199                ( this.runner ){};
    200                 init( this, "Main Processor", *mainCluster );
     200                init( this, "Main Processor", *mainCluster, 0p, 0p );
    201201                kernel_thread = pthread_self();
    202202
     
    452452}
    453453
    454 static void init(processor & this, const char name[], cluster & _cltr) with( this ) {
     454static void init(processor & this, const char name[], cluster & _cltr, void (*fnc) (void *), void * arg) with( this ) {
    455455        this.name = name;
    456456        this.cltr = &_cltr;
     
    464464        this.io.dirty   = false;
    465465
     466        this.init.fnc = fnc;
     467        this.init.arg = arg;
     468
    466469        this.idle = eventfd(0, 0);
    467470        if (idle < 0) {
     
    513516}
    514517
    515 void ?{}(processor & this, const char name[], cluster & _cltr) {
     518void ?{}(processor & this, const char name[], cluster & _cltr, void (*fnc) (void *), void * arg) {
    516519        ( this.terminated ){};
    517520        ( this.runner ){};
    518521
    519522        disable_interrupts();
    520                 init( this, name, _cltr );
     523                init( this, name, _cltr, fnc, arg );
    521524        enable_interrupts( __cfaabi_dbg_ctx );
    522525
Note: See TracChangeset for help on using the changeset viewer.