Changeset 46b305a in mainline
- Timestamp:
- 2022-08-15T16:35:04Z (3 years ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 61ae4b0
- Parents:
- ad58fd2
- Location:
- kernel/generic
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/time/timeout.h
rad58fd2 r46b305a 43 43 44 44 typedef struct { 45 IRQ_SPINLOCK_DECLARE(lock);46 47 45 /** Link to the list of active timeouts on timeout->cpu */ 48 46 link_t link; -
kernel/generic/src/time/clock.c
rad58fd2 r46b305a 163 163 link); 164 164 165 irq_spinlock_lock(&timeout->lock, false);166 165 if (current_clock_tick <= timeout->deadline) { 167 irq_spinlock_unlock(&timeout->lock, false);168 166 break; 169 167 } … … 173 171 void *arg = timeout->arg; 174 172 175 irq_spinlock_unlock(&timeout->lock, false);176 173 irq_spinlock_unlock(&CPU->timeoutlock, false); 177 174 -
kernel/generic/src/time/timeout.c
rad58fd2 r46b305a 66 66 void timeout_initialize(timeout_t *timeout) 67 67 { 68 irq_spinlock_initialize(&timeout->lock, "timeout_t_lock");69 68 link_initialize(&timeout->link); 70 69 timeout->cpu = NULL; … … 87 86 { 88 87 irq_spinlock_lock(&CPU->timeoutlock, true); 89 irq_spinlock_lock(&timeout->lock, false);90 88 91 89 timeout->cpu = CPU; … … 103 101 cur != NULL; cur = list_next(cur, &CPU->timeout_active_list)) { 104 102 target = list_get_instance(cur, timeout_t, link); 105 irq_spinlock_lock(&target->lock, false);106 103 107 if (timeout->deadline < target->deadline) { 108 irq_spinlock_unlock(&target->lock, false); 104 if (timeout->deadline < target->deadline) 109 105 break; 110 }111 106 112 irq_spinlock_unlock(&target->lock, false);113 107 prev = cur; 114 108 } … … 119 113 list_insert_after(&timeout->link, prev); 120 114 121 irq_spinlock_unlock(&timeout->lock, false);122 115 irq_spinlock_unlock(&CPU->timeoutlock, true); 123 116 }
Note:
See TracChangeset
for help on using the changeset viewer.