Rev 3022 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
Line 77... | Line 77... | ||
77 | { |
77 | { |
78 | void *faddr; |
78 | void *faddr; |
79 | 79 | ||
80 | faddr = frame_alloc(ONE_FRAME, FRAME_ATOMIC); |
80 | faddr = frame_alloc(ONE_FRAME, FRAME_ATOMIC); |
81 | if (!faddr) |
81 | if (!faddr) |
82 | panic("Cannot allocate page for clock"); |
82 | panic("Cannot allocate page for clock."); |
83 | 83 | ||
84 | uptime = (uptime_t *) PA2KA(faddr); |
84 | uptime = (uptime_t *) PA2KA(faddr); |
85 | 85 | ||
86 | uptime->seconds1 = 0; |
86 | uptime->seconds1 = 0; |
87 | uptime->seconds2 = 0; |
87 | uptime->seconds2 = 0; |
88 | uptime->useconds = 0; |
88 | uptime->useconds = 0; |
89 | 89 | ||
90 | clock_parea.pbase = (uintptr_t) faddr; |
90 | clock_parea.pbase = (uintptr_t) faddr; |
91 | clock_parea.vbase = (uintptr_t) uptime; |
- | |
92 | clock_parea.frames = 1; |
91 | clock_parea.frames = 1; |
93 | clock_parea.cacheable = true; |
- | |
94 | ddi_parea_register(&clock_parea); |
92 | ddi_parea_register(&clock_parea); |
95 | 93 | ||
96 | /* |
94 | /* |
97 | * Prepare information for the userspace so that it can successfully |
95 | * Prepare information for the userspace so that it can successfully |
98 | * physmem_map() the clock_parea. |
96 | * physmem_map() the clock_parea. |
Line 187... | Line 185... | ||
187 | THREAD->ticks = 0; |
185 | THREAD->ticks = 0; |
188 | } |
186 | } |
189 | spinlock_unlock(&THREAD->lock); |
187 | spinlock_unlock(&THREAD->lock); |
190 | 188 | ||
191 | if (!ticks && !PREEMPTION_DISABLED) { |
189 | if (!ticks && !PREEMPTION_DISABLED) { |
- | 190 | #ifdef CONFIG_UDEBUG |
|
- | 191 | istate_t *istate; |
|
- | 192 | #endif |
|
192 | scheduler(); |
193 | scheduler(); |
- | 194 | #ifdef CONFIG_UDEBUG |
|
- | 195 | /* |
|
- | 196 | * Give udebug chance to stop the thread |
|
- | 197 | * before it begins executing userspace code. |
|
- | 198 | */ |
|
- | 199 | istate = THREAD->udebug.uspace_state; |
|
- | 200 | if (istate && istate_from_uspace(istate)) |
|
- | 201 | udebug_before_thread_runs(); |
|
- | 202 | #endif |
|
193 | } |
203 | } |
194 | } |
204 | } |
195 | 205 | ||
196 | } |
206 | } |
197 | 207 |