Changeset 0b9ac3c in mainline for kernel/generic/src


Ignore:
Timestamp:
2010-02-23T19:03:28Z (16 years ago)
Author:
Jiri Svoboda <jiri@…>
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.
Message:

Merge mainline changes.

Location:
kernel/generic/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/console/console.c

    r1ccafee r0b9ac3c  
    4545#include <ipc/irq.h>
    4646#include <arch.h>
     47#include <panic.h>
    4748#include <print.h>
    4849#include <putchar.h>
  • kernel/generic/src/ddi/ddi.c

    r1ccafee r0b9ac3c  
    146146                    (btree_key_t) pf, &nodep);
    147147               
    148                 if ((!parea) || (parea->frames < pages))
     148                if ((!parea) || (parea->frames < pages)) {
     149                        spinlock_unlock(&parea_lock);
    149150                        goto err;
     151                }
    150152               
    151153                spinlock_unlock(&parea_lock);
     
    153155        }
    154156       
     157        spinlock_unlock(&zones.lock);
    155158err:
    156         spinlock_unlock(&zones.lock);
    157159        interrupts_restore(ipl);
    158160        return ENOENT;
  • kernel/generic/src/ddi/irq.c

    r1ccafee r0b9ac3c  
    7474#include <synch/spinlock.h>
    7575#include <console/console.h>
     76#include <interrupt.h>
    7677#include <memstr.h>
    7778#include <arch.h>
     
    169170        irq->inr = -1;
    170171        irq->devno = -1;
     172
     173        irq_initialize_arch(irq);
    171174}
    172175
  • kernel/generic/src/ipc/ipc.c

    r1ccafee r0b9ac3c  
    212212 *
    213213 * @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 */
     216static void _ipc_answer_free_call(call_t *call, bool selflocked)
    216217{
    217218        answerbox_t *callerbox = call->callerbox;
     219        bool do_lock = ((!selflocked) || callerbox != (&TASK->answerbox));
    218220
    219221        call->flags |= IPC_CALL_ANSWERED;
     
    226228        }
    227229
    228         spinlock_lock(&callerbox->lock);
     230        if (do_lock)
     231                spinlock_lock(&callerbox->lock);
    229232        list_append(&call->link, &callerbox->answers);
    230         spinlock_unlock(&callerbox->lock);
     233        if (do_lock)
     234                spinlock_unlock(&callerbox->lock);
    231235        waitq_wakeup(&callerbox->wq, WAKEUP_FIRST);
    232236}
     
    244248        spinlock_unlock(&box->lock);
    245249        /* Send back answer */
    246         _ipc_answer_free_call(call);
     250        _ipc_answer_free_call(call, false);
    247251}
    248252
     
    261265        atomic_inc(&phone->active_calls);
    262266        IPC_SET_RETVAL(call->data, err);
    263         _ipc_answer_free_call(call);
     267        _ipc_answer_free_call(call, false);
    264268}
    265269
     
    300304                if (call->flags & IPC_CALL_FORWARDED) {
    301305                        IPC_SET_RETVAL(call->data, EFORWARD);
    302                         _ipc_answer_free_call(call);
     306                        _ipc_answer_free_call(call, false);
    303307                } else {
    304308                        if (phone->state == IPC_PHONE_HUNGUP)
     
    455459
    456460                IPC_SET_RETVAL(call->data, EHANGUP);
    457                 _ipc_answer_free_call(call);
     461                _ipc_answer_free_call(call, true);
    458462        }
    459463}
  • kernel/generic/src/main/kinit.c

    r1ccafee r0b9ac3c  
    9494void kinit(void *arg)
    9595{
    96 
    9796#if defined(CONFIG_SMP) || defined(CONFIG_KCONSOLE)
    9897        thread_t *thread;
     
    217216                }
    218217        }
    219        
     218
    220219        /*
    221220         * Run user tasks.
     
    225224                        program_ready(&programs[i]);
    226225        }
    227        
     226
    228227#ifdef CONFIG_KCONSOLE
    229228        if (!stdin) {
  • kernel/generic/src/mm/as.c

    r1ccafee r0b9ac3c  
    952952        if (!THREAD)
    953953                return AS_PF_FAULT;
    954                
    955         ASSERT(AS);
    956 
     954       
     955        if (!AS)
     956                return AS_PF_FAULT;
     957       
    957958        mutex_lock(&AS->lock);
    958         area = find_area_and_lock(AS, page);   
     959        area = find_area_and_lock(AS, page);
    959960        if (!area) {
    960961                /*
  • kernel/generic/src/proc/scheduler.c

    r1ccafee r0b9ac3c  
    542542{
    543543        thread_t *t;
    544         int count, average, j, k = 0;
     544        int count;
     545        atomic_count_t average;
    545546        unsigned int i;
     547        int j;
     548        int k = 0;
    546549        ipl_t ipl;
    547550
  • kernel/generic/src/smp/ipi.c

    r1ccafee r0b9ac3c  
    2727 */
    2828
    29 /** @addtogroup generic 
     29/** @addtogroup generic
    3030 * @{
    3131 */
     
    3333/**
    3434 * @file
    35  * @brief       Generic IPI interface.
     35 * @brief Generic IPI interface.
    3636 */
    37  
     37
    3838#ifdef CONFIG_SMP
    3939
    4040#include <smp/ipi.h>
    4141#include <config.h>
    42 
    4342
    4443/** Broadcast IPI message
     
    4948 *
    5049 * @bug The decision whether to actually send the IPI must be based
    51  *      on a different criterion. The current version has
    52  *      problems when some of the detected CPUs are marked
    53  *      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.
    5453 */
    5554void ipi_broadcast(int ipi)
     
    6059         * - if there is only one CPU but the kernel was compiled with CONFIG_SMP
    6160         */
    62 
     61       
    6362        if ((config.cpu_active > 1) && (config.cpu_active == config.cpu_count))
    6463                ipi_broadcast_arch(ipi);
Note: See TracChangeset for help on using the changeset viewer.