Changeset aaa3c457 in mainline for uspace/lib/c/generic/thread
- Timestamp:
- 2018-11-12T10:36:10Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a43dfcb
- Parents:
- 3ce781f4 (diff), 6874bd2 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - git-author:
- Jakub Jermář <jakub@…> (2018-11-12 10:36:10)
- git-committer:
- GitHub <noreply@…> (2018-11-12 10:36:10)
- Location:
- uspace/lib/c/generic/thread
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/thread/fibril.c
r3ce781f4 raaa3c457 87 87 88 88 /* This futex serializes access to global data. */ 89 static futex_t fibril_futex = FUTEX_INITIALIZER;89 static futex_t fibril_futex; 90 90 static futex_t ready_semaphore; 91 91 static long ready_st_count; … … 95 95 static LIST_INITIALIZE(timeout_list); 96 96 97 static futex_t ipc_lists_futex = FUTEX_INITIALIZER;97 static futex_t ipc_lists_futex; 98 98 static LIST_INITIALIZE(ipc_waiter_list); 99 99 static LIST_INITIALIZE(ipc_buffer_list); … … 796 796 if (!multithreaded) { 797 797 _ready_debug_check(); 798 futex_initialize(&ready_semaphore, ready_st_count); 798 if (futex_initialize(&ready_semaphore, ready_st_count) != EOK) 799 abort(); 799 800 multithreaded = true; 800 801 } … … 861 862 void __fibrils_init(void) 862 863 { 864 if (futex_initialize(&fibril_futex, 1) != EOK) 865 abort(); 866 if (futex_initialize(&ipc_lists_futex, 1) != EOK) 867 abort(); 868 863 869 /* 864 870 * We allow a fixed, small amount of parallelism for IPC reads, but … … 876 882 } 877 883 884 void __fibrils_fini(void) 885 { 886 futex_destroy(&fibril_futex); 887 futex_destroy(&ipc_lists_futex); 888 } 889 878 890 void fibril_usleep(usec_t timeout) 879 891 { -
uspace/lib/c/generic/thread/fibril_synch.c
r3ce781f4 raaa3c457 51 51 #include "../private/futex.h" 52 52 53 void fibril_rmutex_initialize(fibril_rmutex_t *m) 54 { 55 futex_initialize(&m->futex, 1); 53 errno_t fibril_rmutex_initialize(fibril_rmutex_t *m) 54 { 55 return futex_initialize(&m->futex, 1); 56 } 57 58 void fibril_rmutex_destroy(fibril_rmutex_t *m) 59 { 60 futex_destroy(&m->futex); 56 61 } 57 62 … … 85 90 static fibril_local bool deadlocked = false; 86 91 87 static futex_t fibril_synch_futex = FUTEX_INITIALIZER; 92 static futex_t fibril_synch_futex; 93 94 void __fibril_synch_init(void) 95 { 96 if (futex_initialize(&fibril_synch_futex, 1) != EOK) 97 abort(); 98 } 99 100 void __fibril_synch_fini(void) 101 { 102 futex_destroy(&fibril_synch_futex); 103 } 88 104 89 105 typedef struct { -
uspace/lib/c/generic/thread/futex.c
r3ce781f4 raaa3c457 49 49 * @param val Initialization value. 50 50 * 51 * @return Error code. 51 52 */ 52 voidfutex_initialize(futex_t *futex, int val)53 errno_t futex_initialize(futex_t *futex, int val) 53 54 { 54 55 atomic_store_explicit(&futex->val, val, memory_order_relaxed); 56 futex->whandle = CAP_NIL; 57 return futex_allocate_waitq(futex); 55 58 } 56 59 -
uspace/lib/c/generic/thread/mpsc.c
r3ce781f4 raaa3c457 80 80 } 81 81 82 if (fibril_rmutex_initialize(&q->t_lock) != EOK) { 83 free(q); 84 free(n); 85 free(c); 86 return NULL; 87 } 88 82 89 q->elem_size = elem_size; 83 fibril_rmutex_initialize(&q->t_lock);84 90 q->head = q->tail = n; 85 91 q->close_node = c; … … 97 103 } 98 104 99 // TODO: fibril_rmutex_destroy()105 fibril_rmutex_destroy(&q->t_lock); 100 106 101 107 free(q);
Note:
See TracChangeset
for help on using the changeset viewer.
