Ignore:
File:
1 edited

Legend:

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

    ra1a17a74 rde94a60  
    4949thread_desc * mainThread;
    5050
     51struct { __dllist_t(thread_desc) list; __spinlock_t lock; } global_threads ;
    5152struct { __dllist_t(cluster    ) list; __spinlock_t lock; } global_clusters;
    5253
    5354//-----------------------------------------------------------------------------
    5455// Global state
     56
     57// volatile thread_local bool preemption_in_progress = 0;
     58// volatile thread_local bool preemption_enabled = false;
     59// volatile thread_local unsigned short disable_preempt_count = 1;
     60
    5561thread_local struct KernelThreadData kernelTLS = {
    5662        NULL,
     
    117123        node.next = NULL;
    118124        node.prev = NULL;
    119         doregister(curr_cluster, this);
     125        doregister(this);
    120126
    121127        monitors{ &self_mon_p, 1, (fptr_t)0 };
     
    166172        procs{ __get };
    167173        idles{ __get };
    168         threads{ __get };
    169174
    170175        doregister(this);
     
    518523        __cfaabi_dbg_print_safe("Kernel : Starting\n");
    519524
     525        global_threads. list{ __get };
     526        global_threads. lock{};
    520527        global_clusters.list{ __get };
    521528        global_clusters.lock{};
     
    617624        ^(mainThread){};
    618625
    619         ^(global_clusters.list){};
    620         ^(global_clusters.lock){};
    621 
    622626        __cfaabi_dbg_print_safe("Kernel : Shutdown complete\n");
    623627}
     
    693697        else {
    694698                int len = snprintf( abort_text, abort_text_size, "Error occurred outside of any thread.\n" );
    695                 __cfaabi_dbg_bits_write( abort_text, len );
    696699        }
    697700}
     
    757760//-----------------------------------------------------------------------------
    758761// Global Queues
     762void doregister( thread_desc & thrd ) {
     763        // lock      ( global_thread.lock );
     764        // push_front( global_thread.list, thrd );
     765        // unlock    ( global_thread.lock );
     766}
     767
     768void unregister( thread_desc & thrd ) {
     769        // lock  ( global_thread.lock );
     770        // remove( global_thread.list, thrd );
     771        // unlock( global_thread.lock );
     772}
     773
    759774void doregister( cluster     & cltr ) {
    760         lock      ( global_clusters.lock __cfaabi_dbg_ctx2);
    761         push_front( global_clusters.list, cltr );
    762         unlock    ( global_clusters.lock );
     775        // lock      ( global_cluster.lock );
     776        // push_front( global_cluster.list, cltr );
     777        // unlock    ( global_cluster.lock );
    763778}
    764779
    765780void unregister( cluster     & cltr ) {
    766         lock  ( global_clusters.lock __cfaabi_dbg_ctx2);
    767         remove( global_clusters.list, cltr );
    768         unlock( global_clusters.lock );
    769 }
    770 
    771 void doregister( cluster * cltr, thread_desc & thrd ) {
    772         lock      (cltr->thread_list_lock __cfaabi_dbg_ctx2);
    773         push_front(cltr->threads, thrd);
    774         unlock    (cltr->thread_list_lock);
    775 }
    776 
    777 void unregister( cluster * cltr, thread_desc & thrd ) {
    778         lock  (cltr->thread_list_lock __cfaabi_dbg_ctx2);
    779         remove(cltr->threads, thrd );
    780         unlock(cltr->thread_list_lock);
    781 }
     781        // lock  ( global_cluster.lock );
     782        // remove( global_cluster.list, cltr );
     783        // unlock( global_cluster.lock );
     784}
     785
    782786
    783787void doregister( cluster * cltr, processor * proc ) {
    784         lock      (cltr->proc_list_lock __cfaabi_dbg_ctx2);
    785         push_front(cltr->procs, *proc);
    786         unlock    (cltr->proc_list_lock);
     788        // lock      (cltr->proc_list_lock __cfaabi_dbg_ctx2);
     789        // push_front(cltr->procs, *proc);
     790        // unlock    (cltr->proc_list_lock);
    787791}
    788792
    789793void unregister( cluster * cltr, processor * proc ) {
    790         lock  (cltr->proc_list_lock __cfaabi_dbg_ctx2);
    791         remove(cltr->procs, *proc );
    792         unlock(cltr->proc_list_lock);
     794        // lock  (cltr->proc_list_lock __cfaabi_dbg_ctx2);
     795        // remove(cltr->procs, *proc );
     796        // unlock(cltr->proc_list_lock);
    793797}
    794798
Note: See TracChangeset for help on using the changeset viewer.