Changeset 0b9ac3c in mainline for kernel/generic/src
- Timestamp:
- 2010-02-23T19:03:28Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c62d2e1
- Parents:
- 1ccafee (diff), 5e50394 (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. - Location:
- kernel/generic/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/console.c
r1ccafee r0b9ac3c 45 45 #include <ipc/irq.h> 46 46 #include <arch.h> 47 #include <panic.h> 47 48 #include <print.h> 48 49 #include <putchar.h> -
kernel/generic/src/ddi/ddi.c
r1ccafee r0b9ac3c 146 146 (btree_key_t) pf, &nodep); 147 147 148 if ((!parea) || (parea->frames < pages)) 148 if ((!parea) || (parea->frames < pages)) { 149 spinlock_unlock(&parea_lock); 149 150 goto err; 151 } 150 152 151 153 spinlock_unlock(&parea_lock); … … 153 155 } 154 156 157 spinlock_unlock(&zones.lock); 155 158 err: 156 spinlock_unlock(&zones.lock);157 159 interrupts_restore(ipl); 158 160 return ENOENT; -
kernel/generic/src/ddi/irq.c
r1ccafee r0b9ac3c 74 74 #include <synch/spinlock.h> 75 75 #include <console/console.h> 76 #include <interrupt.h> 76 77 #include <memstr.h> 77 78 #include <arch.h> … … 169 170 irq->inr = -1; 170 171 irq->devno = -1; 172 173 irq_initialize_arch(irq); 171 174 } 172 175 -
kernel/generic/src/ipc/ipc.c
r1ccafee r0b9ac3c 212 212 * 213 213 * @param call Call structure to be answered. 214 */ 215 static void _ipc_answer_free_call(call_t *call) 214 * @param selflocked If true, then TASK->answebox is locked. 215 */ 216 static void _ipc_answer_free_call(call_t *call, bool selflocked) 216 217 { 217 218 answerbox_t *callerbox = call->callerbox; 219 bool do_lock = ((!selflocked) || callerbox != (&TASK->answerbox)); 218 220 219 221 call->flags |= IPC_CALL_ANSWERED; … … 226 228 } 227 229 228 spinlock_lock(&callerbox->lock); 230 if (do_lock) 231 spinlock_lock(&callerbox->lock); 229 232 list_append(&call->link, &callerbox->answers); 230 spinlock_unlock(&callerbox->lock); 233 if (do_lock) 234 spinlock_unlock(&callerbox->lock); 231 235 waitq_wakeup(&callerbox->wq, WAKEUP_FIRST); 232 236 } … … 244 248 spinlock_unlock(&box->lock); 245 249 /* Send back answer */ 246 _ipc_answer_free_call(call );250 _ipc_answer_free_call(call, false); 247 251 } 248 252 … … 261 265 atomic_inc(&phone->active_calls); 262 266 IPC_SET_RETVAL(call->data, err); 263 _ipc_answer_free_call(call );267 _ipc_answer_free_call(call, false); 264 268 } 265 269 … … 300 304 if (call->flags & IPC_CALL_FORWARDED) { 301 305 IPC_SET_RETVAL(call->data, EFORWARD); 302 _ipc_answer_free_call(call );306 _ipc_answer_free_call(call, false); 303 307 } else { 304 308 if (phone->state == IPC_PHONE_HUNGUP) … … 455 459 456 460 IPC_SET_RETVAL(call->data, EHANGUP); 457 _ipc_answer_free_call(call );461 _ipc_answer_free_call(call, true); 458 462 } 459 463 } -
kernel/generic/src/main/kinit.c
r1ccafee r0b9ac3c 94 94 void kinit(void *arg) 95 95 { 96 97 96 #if defined(CONFIG_SMP) || defined(CONFIG_KCONSOLE) 98 97 thread_t *thread; … … 217 216 } 218 217 } 219 218 220 219 /* 221 220 * Run user tasks. … … 225 224 program_ready(&programs[i]); 226 225 } 227 226 228 227 #ifdef CONFIG_KCONSOLE 229 228 if (!stdin) { -
kernel/generic/src/mm/as.c
r1ccafee r0b9ac3c 952 952 if (!THREAD) 953 953 return AS_PF_FAULT; 954 955 ASSERT(AS); 956 954 955 if (!AS) 956 return AS_PF_FAULT; 957 957 958 mutex_lock(&AS->lock); 958 area = find_area_and_lock(AS, page); 959 area = find_area_and_lock(AS, page); 959 960 if (!area) { 960 961 /* -
kernel/generic/src/proc/scheduler.c
r1ccafee r0b9ac3c 542 542 { 543 543 thread_t *t; 544 int count, average, j, k = 0; 544 int count; 545 atomic_count_t average; 545 546 unsigned int i; 547 int j; 548 int k = 0; 546 549 ipl_t ipl; 547 550 -
kernel/generic/src/smp/ipi.c
r1ccafee r0b9ac3c 27 27 */ 28 28 29 /** @addtogroup generic 29 /** @addtogroup generic 30 30 * @{ 31 31 */ … … 33 33 /** 34 34 * @file 35 * @brief Generic IPI interface.35 * @brief Generic IPI interface. 36 36 */ 37 37 38 38 #ifdef CONFIG_SMP 39 39 40 40 #include <smp/ipi.h> 41 41 #include <config.h> 42 43 42 44 43 /** Broadcast IPI message … … 49 48 * 50 49 * @bug The decision whether to actually send the IPI must be based 51 * on a different criterion. The current version has52 * problems when some of the detected CPUs are marked53 * disabled in machine configuration.50 * on a different criterion. The current version has 51 * problems when some of the detected CPUs are marked 52 * disabled in machine configuration. 54 53 */ 55 54 void ipi_broadcast(int ipi) … … 60 59 * - if there is only one CPU but the kernel was compiled with CONFIG_SMP 61 60 */ 62 61 63 62 if ((config.cpu_active > 1) && (config.cpu_active == config.cpu_count)) 64 63 ipi_broadcast_arch(ipi);
Note:
See TracChangeset
for help on using the changeset viewer.
