- File:
-
- 1 edited
-
src/libcfa/concurrency/kernel.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/concurrency/kernel.c
ra1a17a74 rde94a60 49 49 thread_desc * mainThread; 50 50 51 struct { __dllist_t(thread_desc) list; __spinlock_t lock; } global_threads ; 51 52 struct { __dllist_t(cluster ) list; __spinlock_t lock; } global_clusters; 52 53 53 54 //----------------------------------------------------------------------------- 54 55 // 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 55 61 thread_local struct KernelThreadData kernelTLS = { 56 62 NULL, … … 117 123 node.next = NULL; 118 124 node.prev = NULL; 119 doregister( curr_cluster,this);125 doregister(this); 120 126 121 127 monitors{ &self_mon_p, 1, (fptr_t)0 }; … … 166 172 procs{ __get }; 167 173 idles{ __get }; 168 threads{ __get };169 174 170 175 doregister(this); … … 518 523 __cfaabi_dbg_print_safe("Kernel : Starting\n"); 519 524 525 global_threads. list{ __get }; 526 global_threads. lock{}; 520 527 global_clusters.list{ __get }; 521 528 global_clusters.lock{}; … … 617 624 ^(mainThread){}; 618 625 619 ^(global_clusters.list){};620 ^(global_clusters.lock){};621 622 626 __cfaabi_dbg_print_safe("Kernel : Shutdown complete\n"); 623 627 } … … 693 697 else { 694 698 int len = snprintf( abort_text, abort_text_size, "Error occurred outside of any thread.\n" ); 695 __cfaabi_dbg_bits_write( abort_text, len );696 699 } 697 700 } … … 757 760 //----------------------------------------------------------------------------- 758 761 // Global Queues 762 void doregister( thread_desc & thrd ) { 763 // lock ( global_thread.lock ); 764 // push_front( global_thread.list, thrd ); 765 // unlock ( global_thread.lock ); 766 } 767 768 void unregister( thread_desc & thrd ) { 769 // lock ( global_thread.lock ); 770 // remove( global_thread.list, thrd ); 771 // unlock( global_thread.lock ); 772 } 773 759 774 void 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 ); 763 778 } 764 779 765 780 void 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 782 786 783 787 void 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); 787 791 } 788 792 789 793 void 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); 793 797 } 794 798
Note:
See TracChangeset
for help on using the changeset viewer.