os/kernelhwsrv/kernel/eka/nkernsmp/arm/ncsched.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of the License "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// e32\nkernsmp\arm\ncsched.cpp
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
// NThreadBase member data
sl@0
    19
#define __INCLUDE_NTHREADBASE_DEFINES__
sl@0
    20
sl@0
    21
#include <arm.h>
sl@0
    22
sl@0
    23
extern "C" void NewThreadTrace(NThread* a)
sl@0
    24
	{
sl@0
    25
	__ACQUIRE_BTRACE_LOCK();
sl@0
    26
	BTraceData.iHandler(BTRACE_HEADER_C(4,BTrace::ECpuUsage,BTrace::ENewThreadContext),0,(TUint32)a,0,0,0,0,0);
sl@0
    27
	__RELEASE_BTRACE_LOCK();
sl@0
    28
	}
sl@0
    29
sl@0
    30
extern "C" void __DebugMsgSendReschedIPI(int a)
sl@0
    31
	{
sl@0
    32
	__KTRACE_OPT(KSCHED2,DEBUGPRINT("@%d",a));
sl@0
    33
	}
sl@0
    34
sl@0
    35
extern "C" void __DebugMsgSendReschedIPIs(int a)
sl@0
    36
	{
sl@0
    37
	__KTRACE_OPT(KSCHED2,DEBUGPRINT("@%02x",a));
sl@0
    38
	}
sl@0
    39
sl@0
    40
extern "C" void __DebugMsgSendReschedIPIAndWait(int a)
sl@0
    41
	{
sl@0
    42
	__KTRACE_OPT(KSCHED2,DEBUGPRINT("@@%d",a));
sl@0
    43
	}
sl@0
    44
sl@0
    45
#ifdef __FAST_SEM_MACHINE_CODED__
sl@0
    46
extern "C" void PanicFastSemaphoreWait()
sl@0
    47
	{
sl@0
    48
	FAULT();
sl@0
    49
	}
sl@0
    50
#endif
sl@0
    51
sl@0
    52
#ifdef BTRACE_CPU_USAGE
sl@0
    53
extern "C" void btrace_irq_entry(TInt aVector)
sl@0
    54
	{
sl@0
    55
	BTrace4(BTrace::ECpuUsage, BTrace::EIrqStart, aVector);
sl@0
    56
	}
sl@0
    57
sl@0
    58
extern "C" void btrace_fiq_entry()
sl@0
    59
	{
sl@0
    60
	BTrace0(BTrace::ECpuUsage, BTrace::EFiqStart);
sl@0
    61
	}
sl@0
    62
sl@0
    63
extern "C" void btrace_irq_exit()
sl@0
    64
	{
sl@0
    65
	BTrace0(BTrace::ECpuUsage, BTrace::EIrqEnd);
sl@0
    66
	}
sl@0
    67
sl@0
    68
extern "C" void btrace_fiq_exit()
sl@0
    69
	{
sl@0
    70
	BTrace0(BTrace::ECpuUsage, BTrace::EFiqEnd);
sl@0
    71
	}
sl@0
    72
#endif
sl@0
    73
sl@0
    74
extern "C" void __DebugMsgIrq(TUint a)
sl@0
    75
	{
sl@0
    76
	if ((a & 0x3ffu) >= 0x20u)
sl@0
    77
		return;
sl@0
    78
	__KTRACE_OPT(KSCHED2,DEBUGPRINT("!%x",a));
sl@0
    79
	}
sl@0
    80
sl@0
    81
sl@0
    82
#ifdef _DEBUG
sl@0
    83
extern "C" void __DebugMsgFSWait(NFastSemaphore* a)
sl@0
    84
	{
sl@0
    85
	CHECK_PRECONDITIONS(MASK_KERNEL_LOCKED|MASK_NO_FAST_MUTEX,"NFastSemaphore::Wait");
sl@0
    86
	NThreadBase* pC = NCurrentThreadL();
sl@0
    87
	__ASSERT_WITH_MESSAGE_ALWAYS(pC==a->iOwningThread,"The calling thread must own the semaphore","NFastSemaphore::Wait");
sl@0
    88
	}
sl@0
    89
sl@0
    90
extern "C" void __DebugMsgNKFSWait(NFastSemaphore* a)
sl@0
    91
	{
sl@0
    92
	__KTRACE_OPT(KNKERN,DEBUGPRINT("NFSW %m",a));
sl@0
    93
	NThreadBase* pC = NCurrentThread();
sl@0
    94
	__ASSERT_WITH_MESSAGE_ALWAYS(pC==a->iOwningThread,"The calling thread must own the semaphore","NKern::FSWait");
sl@0
    95
	}
sl@0
    96
sl@0
    97
extern "C" void __DebugMsgWFAR()
sl@0
    98
	{
sl@0
    99
	CHECK_PRECONDITIONS(MASK_THREAD_STANDARD,"NKern::WaitForAnyRequest");
sl@0
   100
	__KTRACE_OPT(KNKERN,DEBUGPRINT("WfAR"));
sl@0
   101
	}
sl@0
   102
sl@0
   103
extern "C" void __DebugMsgFSSignal(NFastSemaphore* /*a*/)
sl@0
   104
	{
sl@0
   105
	CHECK_PRECONDITIONS(MASK_KERNEL_LOCKED|MASK_NOT_ISR,"NFastSemaphore::Signal");
sl@0
   106
	}
sl@0
   107
sl@0
   108
extern "C" void __DebugMsgFSSignalN(NFastSemaphore* /*a*/, TInt aCount)
sl@0
   109
	{
sl@0
   110
	CHECK_PRECONDITIONS(MASK_KERNEL_LOCKED|MASK_NOT_ISR,"NFastSemaphore::SignalN");			
sl@0
   111
	__NK_ASSERT_DEBUG(aCount>=0);
sl@0
   112
	}
sl@0
   113
sl@0
   114
extern "C" void __DebugMsgNKThreadRequestSignalN(NThread* /*aThread*/, TInt aCount)
sl@0
   115
	{
sl@0
   116
	__ASSERT_WITH_MESSAGE_DEBUG(aCount>=0, "aCount>=0", "NKern::ThreadRequestSignal");
sl@0
   117
	}
sl@0
   118
sl@0
   119
extern "C" void __DebugMsgNKThreadRequestSignal(NThread* /*aThread*/)
sl@0
   120
	{
sl@0
   121
	}
sl@0
   122
sl@0
   123
extern "C" void __DebugMsgNKFSSignal(NFastSemaphore* a)
sl@0
   124
	{
sl@0
   125
	CHECK_PRECONDITIONS(MASK_INTERRUPTS_ENABLED|MASK_NOT_ISR,"NKern::FSSignal(NFastSemaphore*)");
sl@0
   126
	__KTRACE_OPT(KNKERN,DEBUGPRINT("NFSS %m",a));
sl@0
   127
	}
sl@0
   128
sl@0
   129
extern "C" void __DebugMsgNKFSSignalN(NFastSemaphore* a, TInt aCount)
sl@0
   130
	{
sl@0
   131
	CHECK_PRECONDITIONS(MASK_INTERRUPTS_ENABLED|MASK_NOT_ISR,"NKern::FSSignalN(NFastSemaphore*, TInt)");
sl@0
   132
	__KTRACE_OPT(KNKERN,DEBUGPRINT("NFSSN %m %d",a,aCount));
sl@0
   133
	__NK_ASSERT_DEBUG(aCount>=0);
sl@0
   134
	}
sl@0
   135
sl@0
   136
extern "C" void __DebugMsgFMSignal(NFastMutex* /*a*/)
sl@0
   137
	{
sl@0
   138
	CHECK_PRECONDITIONS(MASK_KERNEL_LOCKED,"NFastMutex::Signal");
sl@0
   139
	}
sl@0
   140
sl@0
   141
extern "C" void __DebugMsgNKFMWait(NFastMutex* a)
sl@0
   142
	{
sl@0
   143
	__KTRACE_OPT(KNKERN,DEBUGPRINT("NFMW %M", a));
sl@0
   144
	CHECK_PRECONDITIONS(MASK_THREAD_STANDARD,"NKern::FMWait");
sl@0
   145
	}
sl@0
   146
sl@0
   147
extern "C" void __DebugMsgNKFMSignal(NFastMutex* a)
sl@0
   148
	{
sl@0
   149
	__KTRACE_OPT(KNKERN,DEBUGPRINT("NFMS %M", a));
sl@0
   150
	CHECK_PRECONDITIONS(MASK_KERNEL_UNLOCKED | MASK_INTERRUPTS_ENABLED | MASK_NOT_ISR | MASK_NOT_IDFC, "NKern::FMSignal");
sl@0
   151
	__ASSERT_WITH_MESSAGE_DEBUG(a->HeldByCurrentThread(),"The calling thread holds the mutex","NKern::FMSignal");
sl@0
   152
	}
sl@0
   153
sl@0
   154
extern "C" void __DebugMsgNKFMFlash(NFastMutex* a)
sl@0
   155
	{
sl@0
   156
	CHECK_PRECONDITIONS(MASK_KERNEL_UNLOCKED | MASK_INTERRUPTS_ENABLED | MASK_NOT_ISR | MASK_NOT_IDFC, "NKern::FMFlash");
sl@0
   157
	__ASSERT_WITH_MESSAGE_DEBUG(a->HeldByCurrentThread(),"The calling thread holds the mutex","NKern::FMFlash");
sl@0
   158
	}
sl@0
   159
sl@0
   160
#endif
sl@0
   161