--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/kernel/execs.txt Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,2463 @@
+// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32\kernel\execs.txt
+
+/*
+
+Description file declaring all executive calls
+
+Syntax:
+
+<TYPE> {
+ keyword1 [= argument1]
+ keyword2 [= argument2]
+ ...
+}
+
+where <TYPE> is either fast or slow and indicates the type of executive call
+and the keywords describe the executive call. Keywords may take a single argument
+(shown in square brackets above.)
+
+In the following table, the first line specifies the keyword name and any synonyms,
+applicability to fast or slow executive calls and whether an argument is required,
+is optional or is not used. For example
+
+KEYWORD(SYNONYM) FAST SLOW ARG KEYWORD applies to fast and slow and always takes
+ an argument. SYNONYM is a synonym for KEYWORD.
+KEYWORD SLOW KEYWORD applies only to slow and never takes an
+ argument.
+KEYWORD SLOW OPTIONAL KEYWORD applies only to slow and may or may not
+ take an argument.
+
+Note that any unambiguous abbreviation of a keyword is also acceptable.
+
+The following keywords are supported:
+
+name FAST SLOW ARG
+ Specifies generic name for the executive call
+ Unless overridden by other options:
+ enumerator name is EExec<name> or EFastExec<name>
+ user function name is Exec::<name>
+ kernel function name is ExecHandler::<name>
+
+ The class definitions for Exec:: and ExecHandler:: classes are generated.
+ No other function declarations are generated.
+
+number FAST SLOW ARG
+ Specify that a particular dispatch number should be used for this call
+
+user FAST SLOW ARG
+ Override the name of the user-side executive function
+ Usable in the following ways:
+
+ user=CLASS Function name is CLASS::<name>
+ user=::FUNC Function name is FUNC
+ user=CLASS::FUNC Function name is CLASS::FUNC
+ user=special Don't generate either a declaration or a definition
+ for the user side function.
+
+specialuser FAST SLOW
+ Generate a declaration for the user side function if it's in the Exec::
+ class but don't generate a definition.
+
+kernel FAST SLOW ARG
+ Override the name of the kernel-side executive function
+ Usable in the following ways:
+
+ kernel=CLASS Function name is CLASS::<name>
+ kernel=::FUNC Function name is FUNC
+ kernel=CLASS::FUNC Function name is CLASS::FUNC
+ kernel=special Don't generate either a declaration or a definition
+ for the kernel side function. Only applicable to fast
+ executive call number 0.
+
+specialkernel FAST SLOW ARG
+ Override the function name in the kernel dispatch table but leave the
+ declaration in class ExecHandler:: unchanged.
+
+export FAST SLOW
+ Export the user side executive function.
+
+return FAST SLOW ARG
+ Set the return type. If this keyword is not present, defaults to void.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+arg1 FAST SLOW ARG
+ Specify the type of argument 1. If handle lookup is being used this can be
+ omitted and will be defaulted to TInt.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+arg2 SLOW ARG
+ Specify the type of argument 2.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+arg3 SLOW ARG
+ Specify the type of argument 3.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+arg4 SLOW ARG
+ Specify the type of argument 4.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+karg1 FAST SLOW ARG
+ Override the type of argument 1 on the kernel side. By default is the same
+ as arg1. If handle lookup is being used this can be omitted and will be
+ defaulted to Dxxxx* as appropriate to the type of handle.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+karg2 SLOW ARG
+ Override the type of argument 2 on the kernel side. By default is the same
+ as arg2.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+karg3 SLOW ARG
+ Override the type of argument 3 on the kernel side. By default is the same
+ as arg3.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+karg4 SLOW ARG
+ Override the type of argument 4 on the kernel side. By default is the same
+ as arg4.
+ NOTE: Only simple types (i.e. 32 bit integers, pointers and references)
+ are permitted.
+
+unprotected SLOW
+ Specify that no locking or unlocking or handle lookup should be done in the
+ executive call dispatcher. May be omitted since it is the default option.
+
+lock SLOW
+ Specify that the system lock should be held on the way in to the executive
+ call and should be released on the way out.
+
+norelease (nr) SLOW
+ This is used in conjunction with the lock or handle keywords to specify that
+ the system lock should not be released on exit from the kernel function.
+ The system lock will still be acquired on entry.
+
+handle SLOW ARG
+ Specify that the first argument is a handle which should be translated into
+ a pointer to a DObject-derived class on the way in to the executive call.
+ This keyword automatically enables the lock keyword. It also automatically
+ sets the type of the first argument on both user and kernel side.
+ The argument specifies the type of object referred to by the handle. The
+ following values are accepted (synonyms in brackets):
+
+ thread
+ process
+ chunk
+ library
+ semaphore
+ mutex
+ timer
+ server
+ session
+ logicaldevice (ldevice)
+ physicaldevice (pdevice)
+ logicalchannel (channel)
+ changenotifier (chnotifier)
+ undertaker
+ msgqueue
+ property
+ condvar
+ shpool
+ shbuf
+ any
+
+ As with keywords, any unambiguous abbreviation will be accepted.
+
+ The following keywords indicate IPC handle lookups:
+
+ ipcmessaged
+ ipcmessage
+ ipcclient
+
+asm FAST SLOW OPTIONAL
+ Specifies that the kernel side function is implemented in assembler and
+ that an assembler label should be called rather than a C++ function.
+ The assembler label used is always _asm_exec_<name> where <name> is the
+ argument of the name keyword. It is not overridden by the kernel or
+ specialkernel keywords.
+ If an argument is supplied to the asm keyword it specifies a preprocessor
+ macro name which is used to conditionally enable the use of assembler,
+ for example:
+
+ asm = __MESSAGE_MACHINE_CODED__
+
+ will give rise to
+
+ #ifdef __MESSAGE_MACHINE_CODED__
+ DECLARE_ASM_FUNC(<assembler label>, <C++ name>)
+ #else
+ DECLARE_FUNC(<C++ name>)
+ #endif
+
+ Note that the C++ name is still supplied to the assembler declaration macro
+ so that targets which don't support the use of assembler labels can revert
+ to the C++ name.
+
+ifdef FAST SLOW ARG
+ Specifies that this executive call only exists if ARG is defined at compile
+ time. Can be specified multiple times with different arguments - in that
+ case the executive call is valid only if all the ARGs are defined.
+
+ifndef FAST SLOW ARG
+ Specifies that this executive call only exists if ARG is not defined at
+ compile time. Can be specified multiple times with different arguments - in
+ that case the executive call is valid only if none of the ARGs are defined.
+ Can also be used in conjunction with the ifdef keyword. The executive call
+ is then valid only if all the ifdef arguments and none of the ifndef
+ arguments are defined.
+
+hw (noemulator) FAST SLOW
+ Specifies that this executive call is only valid on hardware targets, not
+ emulator targets. Will be treated as an invalid executive call on emulator
+ targets. Equivalent to ifdef = __EPOC32__.
+
+emulator FAST SLOW
+ Specifies that this executive call is only valid on emulator targets, not
+ hardware targets. Will be treated as an invalid executive call on hardware
+ targets. Equivalent to ifndef = __EPOC32__.
+
+extended SLOW ARG
+ Specifies that this executive call uses the extended argument passing
+ mechanism. The argument to this keyword specifies the number of extended
+ arguments and must be between 2 and 8 inclusive.
+ There must be at least 3 normal arguments to use this keyword.
+
+
+*/
+
+
+/******************************************************************************
+ * Fast executive calls
+ ******************************************************************************/
+fast {
+ name = WaitForAnyRequest
+ return = void
+ number = 0
+ kernel = special
+}
+
+fast {
+ name = Heap
+ return = RAllocator*
+}
+
+fast {
+ name = HeapSwitch
+ return = RAllocator*
+ arg1 = RAllocator*
+}
+
+fast {
+ name = PushTrapFrame
+ return = TTrapHandler*
+ arg1 = TTrap*
+}
+
+fast {
+ name = PopTrapFrame
+ return = TTrap*
+}
+
+fast {
+ name = ActiveScheduler
+ return = CActiveScheduler*
+}
+
+fast {
+ name = SetActiveScheduler
+ arg1 = CActiveScheduler*
+}
+
+fast {
+ name = LockPeriod
+ return = TTimerLockSpec
+}
+
+fast {
+ name = TrapHandler
+ return = TTrapHandler*
+}
+
+fast {
+ name = SetTrapHandler
+ return = TTrapHandler*
+ arg1 = TTrapHandler*
+}
+
+fast {
+ name = DebugMask
+ return = TUint32
+}
+
+fast {
+ name = DebugMaskIndex
+ return = TUint32
+ arg1 = TUint
+}
+
+fast {
+ name = SetDebugMask
+ arg1 = TUint32
+}
+
+fast {
+ name = FastCounter
+ return = TUint32
+ kernel = NKern::FastCounter
+}
+
+fast {
+ name = NTickCount
+ return = TUint32
+ kernel = NKern::TickCount
+}
+
+fast {
+ name = LockRamDrive
+ user = UserSvr
+ kernel = TInternalRamDrive::Lock
+ export
+}
+
+fast {
+ name = UnlockRamDrive
+ user = UserSvr
+ export
+}
+
+fast {
+ name = RomHeaderAddress
+ user = UserSvr
+ export
+ return = TLinAddr
+ hw
+}
+
+fast {
+ name = RomRootDirectoryAddress
+ user = UserSvr
+ export
+ return = TLinAddr
+ hw
+}
+
+fast {
+ name = SetReentryPoint
+ arg1 = TLinAddr
+}
+
+fast {
+ name = KernelConfigFlags
+ kernel = K::KernelConfigFlags
+ return = TUint32
+}
+
+fast {
+ name = UTCOffset
+ return = TInt
+}
+
+fast {
+ name = GetGlobalUserData
+ arg1 = TInt
+ return = TInt
+}
+
+fast {
+ name = CheckFilter
+ user = BTrace
+ kernel = BTrace::CheckFilter
+ arg1 = TUint32
+ return = TBool
+ export
+}
+
+fast {
+ name = FastAtomicAxo64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicCas64
+ arg1 = SAtomicOpInfo64*
+ return = TBool
+ ifdef = __ATOMIC64_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicAdd64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTau64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTas64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicAxo32
+ arg1 = SAtomicOpInfo32*
+ return = TUint32
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicAdd32
+ arg1 = SAtomicOpInfo32*
+ return = TUint32
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicCas32
+ arg1 = SAtomicOpInfo32*
+ return = TBool
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTau32
+ arg1 = SAtomicOpInfo32*
+ return = TUint32
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTas32
+ arg1 = SAtomicOpInfo32*
+ return = TInt32
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicAxo16
+ arg1 = SAtomicOpInfo32*
+ return = TUint16
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicAdd16
+ arg1 = SAtomicOpInfo32*
+ return = TUint16
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicCas16
+ arg1 = SAtomicOpInfo32*
+ return = TBool
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTau16
+ arg1 = SAtomicOpInfo32*
+ return = TUint16
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTas16
+ arg1 = SAtomicOpInfo32*
+ return = TInt16
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicAxo8
+ arg1 = SAtomicOpInfo32*
+ return = TUint8
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicAdd8
+ arg1 = SAtomicOpInfo32*
+ return = TUint8
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicCas8
+ arg1 = SAtomicOpInfo32*
+ return = TBool
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTau8
+ arg1 = SAtomicOpInfo32*
+ return = TUint8
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+fast {
+ name = FastAtomicTas8
+ arg1 = SAtomicOpInfo32*
+ return = TInt8
+ ifdef = __ATOMIC_USE_FAST_EXEC__
+ user = special
+}
+
+
+/******************************************************************************
+ * Slow executive calls
+ ******************************************************************************/
+slow {
+ name = ObjectNext
+ return = TInt
+ arg1 = TObjectType
+ arg2 = TBuf8<KMaxFullName>&
+ arg3 = TFindHandle&
+ unp
+}
+
+slow {
+ name = ChunkBase
+ return = TUint8*
+ handle = chunk
+}
+
+slow {
+ name = ChunkSize
+ return = TInt
+ handle = chunk
+}
+
+slow {
+ name = ChunkMaxSize
+ return = TInt
+ handle = chunk
+}
+
+slow {
+ name = HandleAttributes
+ return = TUint
+ arg1 = TInt
+}
+
+slow {
+ name = TickCount
+ kernel = Kern::TickCount
+ return = TUint
+}
+
+slow {
+ name = LogicalDeviceGetCaps
+ arg2 = TDes8&
+ handle = ldev
+ norelease
+}
+
+slow {
+ name = LogicalDeviceQueryVersionSupported
+ return = TBool
+ arg2 = const TVersion&
+ handle = ldev
+ norelease
+}
+
+slow {
+ name = LogicalDeviceIsAvailable
+ return = TBool
+ arg2 = TInt
+ arg3 = const TDesC8*
+ arg4 = const TDesC8*
+ handle = ldev
+ norelease
+}
+
+slow {
+ name = LocaleExports
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TAny*
+ arg2 = TLibraryFunction*
+}
+
+slow {
+ name = ChannelRequest
+ return = TInt
+ arg2 = TInt
+ arg3 = TAny*
+ arg4 = TAny*
+ handle = channel
+ norelease
+}
+
+slow {
+ name = MathRandom
+ return = TUint32
+ kernel = Kern::Random
+ lock
+}
+
+slow {
+ name = IMBRange
+ user = Exec::IMB_Range
+ arg1 = TAny*
+ arg2 = TUint
+}
+
+slow {
+ name = ResetMachine
+ return = TInt
+ arg1 = TMachineStartupType
+}
+
+slow {
+ name = LibraryLookup
+ return = TLibraryFunction
+ arg1 = TInt
+ arg2 = TInt
+}
+
+slow {
+ name = LibraryFileName
+ arg2 = TDes8&
+ handle = library
+ norelease
+}
+
+slow {
+ name = ExecuteInSupervisorMode
+ user = UserSvr
+ export
+ return = TInt
+ arg1 = TSupervisorFunction
+ arg2 = TAny*
+}
+
+slow {
+ name = MutexWait
+ handle = mutex
+}
+
+slow {
+ name = MutexSignal
+ handle = mutex
+ norelease
+}
+
+slow {
+ name = ProcessId
+ return = TInt
+ handle = process
+}
+
+slow {
+ name = DllFileName
+ arg1 = TInt
+ arg2 = TDes8&
+}
+
+slow {
+ name = ProcessResume
+ handle = process
+}
+
+slow {
+ name = ProcessFileName
+ arg2 = TDes8&
+ handle = process
+ norelease
+}
+
+slow {
+ name = ProcessCommandLine
+ arg2 = TDes8&
+ handle = process
+ norelease
+}
+
+slow {
+ name = ProcessExitType
+ return = TExitType
+ handle = process
+}
+
+slow {
+ name = ProcessExitReason
+ return = TInt
+ handle = process
+}
+
+slow {
+ name = ProcessExitCategory
+ arg2 = TDes8&
+ handle = process
+ norelease
+}
+
+slow {
+ name = ProcessPriority
+ return = TProcessPriority
+ handle = process
+}
+
+slow {
+ name = ProcessSetPriority
+ return = TInt
+ arg2 = TProcessPriority
+ handle = process
+ norelease
+}
+
+slow {
+ name = ProcessFlags
+ return = TUint
+ handle = process
+}
+
+slow {
+ name = ProcessSetFlags
+ arg2 = TUint
+ arg3 = TUint
+ handle = process
+}
+
+slow {
+ name = SemaphoreWait
+ return = TInt
+ arg2 = TInt
+ handle = sem
+ norelease
+}
+
+slow {
+ name = SemaphoreSignal1
+ handle = sem
+ norelease
+}
+
+slow {
+ name = SemaphoreSignalN
+ arg2 = TInt
+ handle = sem
+ norelease
+}
+
+slow {
+ name = ServerReceive
+ arg2 = TRequestStatus&
+ arg3 = TAny*
+ handle = server
+ asm = __MESSAGE_MACHINE_CODED__
+}
+
+slow {
+ name = ServerCancel
+ handle = server
+}
+
+slow {
+ name = SetSessionPtr
+ arg2 = const TAny*
+ handle = ipcmessage
+ norelease
+}
+
+slow {
+ name = SessionSend
+ specialuser
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt
+ arg3 = TAny*
+ arg4 = TRequestStatus*
+ extended = 5
+}
+
+slow {
+ name = ThreadId
+ return = TInt
+ handle = thread
+}
+
+slow {
+ name = SessionShare
+ return = TInt
+ arg1 = TInt&
+ arg2 = TInt
+}
+
+slow {
+ name = ThreadResume
+ handle = thread
+}
+
+slow {
+ name = ThreadSuspend
+ handle = thread
+}
+
+slow {
+ name = ThreadPriority
+ return = TThreadPriority
+ handle = thread
+}
+
+slow {
+ name = ThreadSetPriority
+ arg2 = TThreadPriority
+ handle = thread
+}
+
+slow {
+ name = ThreadProcessPriority
+ return = TProcessPriority
+ handle = thread
+}
+
+slow {
+ name = ThreadSetProcessPriority
+ arg2 = TProcessPriority
+ handle = thread
+ norelease
+}
+
+slow {
+ name = ThreadFlags
+ return = TUint
+ handle = thread
+}
+
+slow {
+ name = ThreadSetFlags
+ arg2 = TUint
+ arg3 = TUint
+ handle = thread
+}
+
+slow {
+ name = ThreadRequestCount
+ return = TInt
+ handle = thread
+}
+
+slow {
+ name = ThreadExitType
+ return = TExitType
+ handle = thread
+}
+
+slow {
+ name = ThreadExitReason
+ return = TInt
+ handle = thread
+}
+
+slow {
+ name = ThreadExitCategory
+ arg2 = TDes8&
+ handle = thread
+ norelease
+}
+
+slow {
+ name = TimerCancel
+ handle = timer
+}
+
+slow {
+ name = TimerAfter
+ arg2 = TRequestStatus&
+ arg3 = TInt
+ handle = timer
+}
+
+slow {
+ name = TimerAt
+ arg2 = TRequestStatus&
+ arg3 = TUint32
+ arg4 = TUint32
+ handle = timer
+}
+
+slow {
+ name = TimerLock
+ arg2 = TRequestStatus&
+ arg3 = TTimerLockSpec
+ handle = timer
+}
+
+slow {
+ name = ChangeNotifierLogon
+ return = TInt
+ arg2 = TRequestStatus&
+ handle = chnot
+ norelease
+}
+
+slow {
+ name = ChangeNotifierLogoff
+ return = TInt
+ handle = chnot
+ norelease
+}
+
+slow {
+ name = RequestSignal
+ arg1 = TInt
+}
+
+slow {
+ name = HandleName
+ arg1 = TInt
+ arg2 = TDes8&
+}
+
+slow {
+ name = HandleFullName
+ arg1 = TInt
+ arg2 = TDes8&
+}
+
+slow {
+ name = HandleInfo
+ arg1 = TInt
+ arg2 = THandleInfo*
+}
+
+slow {
+ name = HandleCount
+ arg2 = TInt&
+ arg3 = TInt&
+ handle = thread
+ norelease
+}
+
+slow {
+ name = After
+ arg1 = TInt
+ arg2 = TRequestStatus&
+}
+
+slow {
+ name = At
+ arg1 = const EXEC_TIME&
+ arg2 = TRequestStatus&
+}
+
+slow {
+ name = MessageComplete
+ arg2 = TInt
+ handle = ipcmessaged
+ asm = __MESSAGE_MACHINE_CODED__
+}
+
+slow {
+ name = MessageCompleteWithHandle
+ arg2 = TInt
+ handle = ipcmessage
+}
+
+slow {
+ name = TransferSession
+ arg2 = TInt
+ handle = ipcmessage
+}
+
+slow {
+ name = TimeNow
+ return = TInt
+ arg1 = EXEC_TIME&
+ arg2 = TInt&
+}
+
+slow {
+ name = TimeNowSecure
+ return = TInt
+ arg1 = EXEC_TIME&
+ arg2 = TInt&
+}
+
+slow {
+ name = SetUTCTimeAndOffset
+ return = TInt
+ arg1 = const EXEC_TIME&
+ arg2 = TInt
+ arg3 = TUint
+ arg4 = TUint
+}
+
+slow {
+ name = SetMachineConfiguration
+ return = TInt
+ arg1 = const TDesC8&
+}
+
+slow {
+ name = CaptureEventHook
+}
+
+slow {
+ name = ReleaseEventHook
+}
+
+slow {
+ name = RequestEvent
+ arg1 = TRawEventBuf&
+ arg2 = TRequestStatus&
+}
+
+slow {
+ name = RequestEventCancel
+}
+
+slow {
+ name = AddEvent
+ return = TInt
+ arg1 = const TRawEvent&
+}
+
+slow {
+ name = SessionSendSync
+ specialuser
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt
+ arg3 = TAny*
+ arg4 = TRequestStatus*
+ extended = 5
+}
+
+slow {
+ name = DllTls
+ return = TAny*
+ arg1 = TInt
+ arg2 = TInt
+}
+
+slow {
+ name = HalFunction
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt
+ arg3 = TAny*
+ arg4 = TAny*
+}
+
+slow {
+ name = WsRegisterThread
+ lock
+}
+
+slow {
+ name = FsRegisterThread
+ lock
+}
+
+slow {
+ name = ProcessCommandLineLength
+ return = TInt
+ handle = process
+}
+
+slow {
+ name = TimerInactivity
+ arg2 = TRequestStatus&
+ arg3 = TInt
+ handle = timer
+}
+
+slow {
+ name = UserInactivityTime
+ return = TInt
+}
+
+slow {
+ name = ResetInactivityTime
+}
+
+slow {
+ name = DebugPrint
+ arg1 = TAny*
+ arg2 = TInt
+}
+
+slow {
+ name = BreakPoint
+ return = TInt
+ lock
+}
+
+slow {
+ name = ProfileStart
+ return = TInt
+ arg1 = TInt
+ lock
+}
+
+slow {
+ name = ProfileEnd
+ return = TInt
+ arg1 = TInt
+ lock
+}
+
+slow {
+ name = ExceptionHandler
+ return = TExceptionHandler
+ handle = thread
+}
+
+slow {
+ name = SetExceptionHandler
+ return = TInt
+ arg2 = TExceptionHandler
+ arg3 = TUint32
+ handle = thread
+}
+
+slow {
+ name = ModifyExceptionMask
+ arg2 = TUint32
+ arg3 = TUint32
+ handle = thread
+}
+
+slow {
+ name = RaiseException
+ return = TInt
+ arg2 = TExcType
+ handle = thread
+}
+
+slow {
+ name = IsExceptionHandled
+ return = TInt
+ arg2 = TExcType
+ arg3 = TBool
+ handle = thread
+ norelease
+}
+
+slow {
+ name = ProcessGetMemoryInfo
+ return = TInt
+ arg1 = TInt
+ arg2 = TModuleMemoryInfo&
+}
+
+slow {
+ name = LibraryGetMemoryInfo
+ return = TInt
+ arg1 = TInt
+ arg2 = TModuleMemoryInfo&
+}
+
+slow {
+ name = MachineConfiguration
+ return = TInt
+ arg1 = TDes8&
+ arg2 = TInt&
+}
+
+slow {
+ name = SetMemoryThresholds
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt
+ lock
+}
+
+slow {
+ name = LibraryType
+ arg2 = TUidType&
+ handle = library
+ norelease
+}
+
+slow {
+ name = ProcessType
+ arg2 = TUidType&
+ handle = process
+ norelease
+}
+
+slow {
+ name = ChunkBottom
+ return = TInt
+ handle = chunk
+}
+
+slow {
+ name = ChunkTop
+ return = TInt
+ handle = chunk
+}
+
+slow {
+ name = ThreadContext
+ arg2 = TDes8&
+ handle = thread
+ norelease
+}
+
+slow {
+ name = ThreadCreate
+ return = TInt
+ arg1 = const TDesC8&
+ arg2 = TOwnerType
+ arg3 = SThreadCreateInfo8&
+}
+
+slow {
+ name = FindHandleOpen
+ return = TInt
+ arg1 = TOwnerType
+ arg2 = const TFindHandle&
+}
+
+slow {
+ name = HandleClose
+ return = TInt
+ arg1 = TInt
+}
+
+slow {
+ name = ChunkCreate
+ return = TInt
+ arg1 = TOwnerType
+ arg2 = const TDesC8*
+ arg3 = TChunkCreate&
+}
+
+slow {
+ name = ChunkAdjust
+ return = TInt
+ arg2 = TInt
+ arg3 = TInt
+ arg4 = TInt
+ handle = chunk
+ norelease
+}
+
+slow {
+ name = OpenObject
+ return = TInt
+ arg1 = TObjectType
+ arg2 = const TDesC8&
+ arg3 = TOwnerType
+}
+
+slow {
+ name = HandleDuplicate
+ return = TInt
+ arg1 = TInt
+ arg2 = TOwnerType
+ arg3 = TInt&
+}
+
+slow {
+ name = MutexCreate
+ return = TInt
+ arg1 = const TDesC8*
+ arg2 = TOwnerType
+}
+
+slow {
+ name = SemaphoreCreate
+ return = TInt
+ arg1 = const TDesC8*
+ arg2 = TInt
+ arg3 = TOwnerType
+}
+
+slow {
+ name = ThreadOpenById
+ return = TInt
+ arg1 = TUint
+ arg2 = TOwnerType
+}
+
+slow {
+ name = ProcessOpenById
+ return = TInt
+ arg1 = TUint
+ arg2 = TOwnerType
+}
+
+slow {
+ name = ThreadKill
+ arg1 = TInt
+ arg2 = TExitType
+ arg3 = TInt
+ arg4 = const TDesC8*
+}
+
+slow {
+ name = ThreadLogon
+ arg2 = TRequestStatus*
+ arg3 = TBool
+ handle = thread
+ norelease
+}
+
+slow {
+ name = ThreadLogonCancel
+ return = TInt
+ arg2 = TRequestStatus*
+ arg3 = TBool
+ handle = thread
+ norelease
+}
+
+slow {
+ name = DllSetTls
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt
+ arg3 = TAny*
+}
+
+slow {
+ name = DllFreeTls
+ arg1 = TInt
+}
+
+slow {
+ name = ThreadRename
+ return = TInt
+ arg1 = TInt
+ arg2 = const TDesC8&
+}
+
+slow {
+ name = ProcessRename
+ return = TInt
+ arg1 = TInt
+ arg2 = const TDesC8&
+}
+
+slow {
+ name = ProcessKill
+ arg1 = TInt
+ arg2 = TExitType
+ arg3 = TInt
+ arg4 = const TDesC8*
+}
+
+slow {
+ name = ProcessLogon
+ arg2 = TRequestStatus*
+ arg3 = TBool
+ handle = process
+ norelease
+}
+
+slow {
+ name = ProcessLogonCancel
+ return = TInt
+ arg2 = TRequestStatus*
+ arg3 = TBool
+ handle = process
+ norelease
+}
+
+slow {
+ name = ThreadProcess
+ return = TInt
+ handle = thread
+ norelease
+}
+
+slow {
+ name = ServerCreate
+ return = TInt
+ arg1 = const TDesC8*
+ arg2 = TInt
+}
+
+slow {
+ name = ServerCreateWithOptions
+ return = TInt
+ arg1 = const TDesC8*
+ arg2 = TInt
+ arg3 = TInt
+ arg4 = TInt
+}
+
+slow {
+ name = SessionCreate
+ return = TInt
+ arg1 = const TDesC8&
+ arg2 = TInt
+ arg3 = const TSecurityPolicy*
+ arg4 = TInt
+}
+
+slow {
+ name = SessionCreateFromHandle
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt
+ arg3 = const TSecurityPolicy*
+ arg4 = TInt
+}
+
+slow {
+ name = DeviceLoad
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TAny*
+ arg2 = TInt
+}
+
+slow {
+ name = DeviceFree
+ return = TInt
+ arg1 = const TDesC8&
+ arg2 = TInt
+}
+
+slow {
+ name = ChannelCreate
+ return = TInt
+ arg1 = const TDesC8&
+ arg2 = TChannelCreateInfo8&
+ arg3 = TInt
+}
+
+slow {
+ name = TimerCreate
+ return = TInt
+}
+
+slow {
+ name = TimerHighRes
+ arg2 = TRequestStatus&
+ arg3 = TInt
+ handle = timer
+}
+
+slow {
+ name = AfterHighRes
+ arg1 = TInt
+ arg2 = TRequestStatus&
+ lock
+}
+
+slow {
+ name = ChangeNotifierCreate
+ return = TInt
+ arg1 = TOwnerType
+}
+
+slow {
+ name = UndertakerCreate
+ return = TInt
+ arg1 = TOwnerType
+}
+
+slow {
+ name = UndertakerLogon
+ return = TInt
+ arg2 = TRequestStatus&
+ arg3 = TInt&
+ karg3 = TInt*
+ handle = undertaker
+}
+
+slow {
+ name = UndertakerLogonCancel
+ return = TInt
+ handle = undertaker
+ norelease
+}
+
+slow {
+ name = KernelHeapDebug
+ arg1 = TInt
+ arg2 = TInt
+ arg3 = TAny*
+}
+
+slow {
+ name = ThreadGetCpuTime
+ return = TInt
+ arg2 = EXEC_INT64&
+ handle = thread
+ norelease
+}
+
+slow {
+ name = CodeSegCreate
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TCodeSegCreateInfo&
+}
+
+slow {
+ name = CodeSegLoaded
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TCodeSegCreateInfo&
+}
+
+slow {
+ name = LibraryCreate
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TLibraryCreateInfo&
+}
+
+slow {
+ name = CodeSegOpen
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TAny*
+ arg2 = TInt
+}
+
+slow {
+ name = CodeSegClose
+ user = E32Loader
+ export
+ arg1 = TAny*
+}
+
+slow {
+ name = CodeSegNext
+ user = E32Loader
+ export
+ arg1 = TAny*&
+ arg2 = const TFindCodeSeg&
+}
+
+slow {
+ name = CodeSegInfo
+ user = E32Loader
+ export
+ arg1 = TAny*
+ arg2 = TCodeSegCreateInfo&
+}
+
+slow {
+ name = CodeSegAddDependency
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TAny*
+ arg2 = TAny*
+}
+
+slow {
+ name = CodeSegDeferDeletes
+ user = E32Loader
+ export
+}
+
+slow {
+ name = CodeSegEndDeferDeletes
+ user = E32Loader
+ export
+}
+
+slow {
+ name = ProcessCreate
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TProcessCreateInfo&
+ arg2 = const TDesC8*
+}
+
+slow {
+ name = ProcessLoaded
+ user = E32Loader
+ export
+ return = TInt
+ arg1 = TProcessCreateInfo&
+}
+
+slow {
+ name = CheckLoaderClientState
+ user = E32Loader::CheckClientState
+ export
+ return = TInt
+ handle = ipcclient
+}
+
+slow {
+ name = ThreadProcessCodeSeg
+ user = E32Loader
+ export
+ return = TAny*
+ handle = thread
+}
+
+slow {
+ name = CodeSegReadExportDir
+ user = E32Loader::ReadExportDir
+ export
+ arg1 = TAny*
+ arg2 = TLinAddr*
+}
+
+slow {
+ name = WaitDllLock
+ user = E32Loader
+ return = TInt
+}
+
+slow {
+ name = ReleaseDllLock
+ user = E32Loader
+ return = TInt
+}
+
+slow {
+ name = LibraryAttach
+ user = E32Loader
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt&
+ arg3 = TLinAddr*
+}
+
+slow {
+ name = LibraryAttached
+ user = E32Loader
+ return = TInt
+ arg1 = TInt
+}
+
+slow {
+ name = StaticCallList
+ user = E32Loader
+ return = TInt
+ arg1 = TInt&
+ arg2 = TLinAddr*
+}
+
+slow {
+ name = LibraryDetach
+ user = E32Loader
+ return = TInt
+ arg1 = TInt&
+ arg2 = TLinAddr*
+}
+
+slow {
+ name = LibraryDetached
+ user = E32Loader
+ return = TInt
+}
+
+slow {
+ name = LastThreadHandle
+ return = TInt
+}
+
+slow {
+ name = ThreadRendezvous
+ arg1 = TInt
+}
+
+slow {
+ name = ProcessRendezvous
+ arg1 = TInt
+}
+
+slow {
+ name = MessageGetDesLength
+ return = TInt
+ arg2 = TInt
+ handle = ipcmessage
+}
+
+slow {
+ name = MessageGetDesMaxLength
+ return = TInt
+ arg2 = TInt
+ handle = ipcmessage
+}
+
+slow {
+ name = MessageIpcCopy
+ specialuser
+ return = TInt
+ arg2 = TInt
+ arg3 = SIpcCopyInfo&
+ arg4 = TInt
+ handle = ipcmessage
+ extended = 3
+}
+
+slow {
+ name = MessageClient
+ return = TInt
+ arg2 = TOwnerType
+ handle = ipcclient
+ norelease
+}
+
+slow {
+ name = MessageSetProcessPriority
+ return = TInt
+ arg2 = TProcessPriority
+ handle = ipcclient
+ norelease
+}
+
+slow {
+ name = MessageConstructFromPtr
+ arg2 = TAny*
+ handle = ipcmessaged
+ norelease
+}
+
+slow {
+ name = MessageKill
+ arg1 = TInt
+ arg2 = TExitType
+ arg3 = TInt
+ arg4 = const TDesC8*
+}
+
+slow {
+ name = MessageOpenObject
+ return = TInt
+ arg2 = TObjectType
+ arg3 = TInt
+ arg4 = TOwnerType
+ handle = ipcmessage
+ norelease
+}
+
+slow {
+ name = ProcessSecurityInfo
+ arg2 = SSecurityInfo&
+ handle = process
+ norelease
+}
+
+slow {
+ name = ThreadSecurityInfo
+ arg2 = SSecurityInfo&
+ handle = thread
+ norelease
+}
+
+slow {
+ name = MessageSecurityInfo
+ arg2 = SSecurityInfo&
+ handle = ipcclient
+ norelease
+}
+
+slow {
+ name = CreatorSecurityInfo
+ arg1 = SSecurityInfo&
+}
+
+slow {
+ name = DisabledCapabilities
+ arg1 = SCapabilitySet&
+}
+
+slow {
+ name = ChunkSetRestrictions
+ return = TInt
+ arg2 = TUint
+ handle = chunk
+}
+
+slow {
+ name = MsgQueueCreate
+ return = TInt
+ arg1 = const TDesC8*
+ arg2 = TInt
+ arg3 = TInt
+ arg4 = TOwnerType
+}
+
+slow {
+ name = MsgQueueSend
+ return = TInt
+ arg1 = TInt
+ arg2 = const TAny*
+ arg3 = TInt
+}
+
+slow {
+ name = MsgQueueReceive
+ return = TInt
+ arg2 = TAny*
+ arg3 = TInt
+ handle = msgqueue
+ norelease
+}
+
+slow {
+ name = MsgQueueNotifySpaceAvailable
+ arg2 = TRequestStatus&
+ handle = msgqueue
+ norelease
+}
+
+slow {
+ name = MsgQueueCancelSpaceAvailable
+ handle = msgqueue
+ norelease
+}
+
+slow {
+ name = MsgQueueNotifyDataAvailable
+ arg2 = TRequestStatus&
+ handle = msgqueue
+ norelease
+}
+
+slow {
+ name = MsgQueueCancelDataAvailable
+ handle = msgqueue
+ norelease
+}
+
+slow {
+ name = MsgQueueSize
+ handle = msgqueue
+ return = TInt
+}
+
+slow {
+ name = PropertyDefine
+ return = TInt
+ arg1 = TUint
+ arg2 = TUint
+ arg3 = TPropertyInfo*
+ }
+
+slow {
+ name = PropertyDelete
+ return = TInt
+ arg1 = TUint
+ arg2 = TUint
+}
+
+slow {
+ name = PropertyAttach
+ return = TInt
+ arg1 = TUint
+ arg2 = TUint
+ arg3 = TOwnerType
+}
+
+slow {
+ name = PropertySubscribe
+ arg2 = TRequestStatus*
+ handle = property
+ norelease
+}
+
+slow {
+ name = PropertyCancel
+ handle = property
+ norelease
+}
+
+slow {
+ name = PropertyGetI
+ return = TInt
+ arg2 = TInt*
+ handle = property
+ norelease
+}
+
+slow {
+ name = PropertyGetB
+ return = TInt
+ arg2 = TUint8*
+ arg3 = TInt
+ handle = property
+ norelease
+}
+
+slow {
+ name = PropertySetI
+ return = TInt
+ arg2 = TInt
+ handle = property
+ norelease
+}
+
+slow {
+ name = PropertySetB
+ return = TInt
+ arg1 = TInt
+ arg2 = const TUint8*
+ arg3 = TInt
+}
+
+slow {
+ name = PropertyFindGetI
+ return = TInt
+ arg1 = TUint
+ arg2 = TUint
+ arg3 = TInt*
+}
+
+slow {
+ name = PropertyFindGetB
+ return = TInt
+ arg1 = TUint
+ arg2 = TUint
+ arg3 = TUint8*
+ arg4 = TInt
+}
+
+slow {
+ name = PropertyFindSetI
+ return = TInt
+ arg1 = TUint
+ arg2 = TUint
+ arg3 = TInt
+}
+
+slow {
+ name = PropertyFindSetB
+ return = TInt
+ arg1 = TUint
+ arg2 = TUint
+ arg3 = TUint8*
+ arg4 = TInt
+}
+
+slow {
+ name = PowerEnableWakeupEvents
+ arg1 = TPowerState
+ return = TInt
+}
+
+slow {
+ name = PowerDisableWakeupEvents
+}
+
+slow {
+ name = PowerRequestWakeupEventNotification
+ arg1 = TRequestStatus*
+}
+
+slow {
+ name = PowerCancelWakeupEventNotification
+}
+
+slow {
+ name = PowerDown
+ return = TInt
+}
+
+slow {
+ name = ProcessSetHandleParameter
+ return = TInt
+ handle = process
+ arg2 = TInt
+ arg3 = TInt
+}
+
+slow {
+ name = ProcessSetDataParameter
+ return = TInt
+ arg1 = TInt
+ arg2 = TInt
+ arg3 = const TUint8*
+ arg4 = TInt
+
+}
+
+slow {
+ name = ProcessGetHandleParameter
+ return = TInt
+ arg1 = TInt
+ arg2 = TObjectType
+ arg3 = TOwnerType
+ lock
+}
+
+slow {
+ name = ProcessGetDataParameter
+ return = TInt
+ arg1 = TInt
+ arg2 = TUint8*
+ arg3 = TInt
+ lock
+}
+
+slow {
+ name = ProcessDataParameterLength
+ return = TInt
+ arg1 = TInt
+ lock
+}
+
+slow {
+ name = MessageClientProcessFlags
+ kernel = ExecHandler::ThreadProcessFlags
+ return = TUint
+ handle = ipcclient
+}
+
+slow {
+ name = ThreadStackInfo
+ return = TInt
+ arg2 = TThreadStackInfo&
+ handle = thread
+ norelease
+}
+
+slow {
+ name = ThreadGetHeap
+ return = RAllocator*
+ handle = thread
+}
+
+slow {
+ name = ThreadAsProcess
+ arg2 = TInt
+ return = TInt
+ handle = thread
+ norelease
+}
+
+slow {
+ name = CondVarCreate
+ return = TInt
+ arg1 = const TDesC8*
+ arg2 = TOwnerType
+}
+
+slow {
+ name = CondVarWait
+ return = TInt
+ arg2 = TInt
+ arg3 = TInt
+ handle = condvar
+ norelease
+}
+
+slow {
+ name = CondVarSignal
+ handle = condvar
+ norelease
+}
+
+slow {
+ name = CondVarBroadcast
+ handle = condvar
+ norelease
+}
+
+slow {
+ name = PlatSecDiagnostic
+ return = TInt
+ arg1 = TPlatSecDiagnostic*
+}
+
+slow {
+ name = ExceptionDescriptor
+ arg1 = TLinAddr
+ return = TLinAddr
+}
+
+slow {
+ name = ThreadRequestSignal
+ handle = thread
+ norelease
+ asm
+}
+
+slow {
+ name = MutexIsHeld
+ return = TBool
+ handle = mutex
+}
+
+slow {
+ name = LeaveStart
+ return = TTrapHandler*
+}
+
+slow {
+ name = LeaveEnd
+}
+
+slow {
+ name = SetDebugMaskIndex
+ arg1 = TUint32
+ arg2 = TUint
+}
+
+slow {
+ name = GetModuleNameFromAddress
+ arg1 = TAny*
+ arg2 = TDes8&
+ return = TInt
+}
+
+slow {
+ name = NotifyChanges
+ arg1 = TUint
+}
+
+slow {
+ name = SetGlobalUserData
+ arg1 = TInt
+ arg2 = TInt
+ return = TInt
+}
+
+slow {
+ name = SessionSecurityInfo
+ arg1 = TInt
+ arg2 = SSecurityInfo&
+ return = TInt
+}
+
+slow {
+ name = MessageClientStatus
+ return = const TRequestStatus*
+ handle = ipcmessage
+}
+
+slow {
+ name = SetFloatingPointMode
+ arg1 = TFloatingPointMode
+ arg2 = TFloatingPointRoundingMode
+ return = TInt
+}
+
+slow {
+ name = BTraceOut
+ specialuser
+ kernel = ExecHandler::BTraceOut
+ return = TBool
+ arg1 = TUint32
+ arg2 = TUint32
+ arg3 = const BTrace::SExecExtension&
+ arg4 = TInt
+ extended = 3
+}
+
+slow {
+ name = BTraceOutBig
+ specialuser
+ kernel = ExecHandler::BTraceOutBig
+ return = TBool
+ arg1 = TUint32
+ arg2 = TUint32
+ arg3 = const BTrace::SExecExtension&
+ arg4 = TInt
+ extended = 3
+}
+
+slow {
+ name = UTraceOut
+ specialuser
+ kernel = ExecHandler::UTraceOut
+ return = TBool
+ arg1 = TUint32
+ arg2 = TUint32
+ arg3 = const BTrace::SExecExtension&
+ arg4 = TInt
+ extended = 3
+}
+
+slow {
+ name = CheckFilter2
+ user = BTrace
+ kernel = BTrace::CheckFilter2
+ return = TBool
+ arg1 = TUint32
+ arg2 = TUint32
+ export
+}
+
+slow {
+ name = ProcessExeExportData
+ return = TAny*
+}
+
+slow {
+ name = NotifyIfCodeSegDestroyed
+ user = E32Loader
+ return = TInt
+ arg1 = TRequestStatus&
+ export
+ lock
+}
+
+slow {
+ name = GetDestroyedCodeSegInfo
+ user = E32Loader
+ return = TInt
+ arg1 = TCodeSegLoaderCookie&
+ export
+}
+
+slow {
+ name = SetWin32RuntimeHook
+ arg1 = TAny*
+ return = TInt
+ emulator
+ export
+}
+
+slow {
+ name = GetBTraceId
+ return = TInt
+ handle = any
+}
+
+slow {
+ name = NotifyOnIdle
+ arg1 = TRequestStatus*
+}
+
+slow {
+ name = CancelMiscNotifier
+ arg1 = TRequestStatus*
+}
+
+slow {
+ name = NotifyObjectDestruction
+ arg1 = TInt
+ arg2 = TRequestStatus*
+}
+
+slow {
+ name = RegisterTrustedChunk
+ handle = chunk
+}
+
+slow {
+ name = UserThreadExiting
+ arg1 = TInt
+ return = TBool
+}
+
+slow {
+ name = SlowAtomicAxo64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_SLOW_EXEC__
+ user = special
+}
+
+slow {
+ name = SlowAtomicCas64
+ arg1 = SAtomicOpInfo64*
+ return = TBool
+ ifdef = __ATOMIC64_USE_SLOW_EXEC__
+ user = special
+}
+
+slow {
+ name = SlowAtomicAdd64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_SLOW_EXEC__
+ user = special
+}
+
+slow {
+ name = SlowAtomicTau64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_SLOW_EXEC__
+ user = special
+}
+
+slow {
+ name = SlowAtomicTas64
+ arg1 = SAtomicOpInfo64*
+ ifdef = __ATOMIC64_USE_SLOW_EXEC__
+ user = special
+}
+
+slow {
+ name = ChunkIsPaged
+ handle = chunk
+ return = TBool
+}
+
+slow {
+ name = ProcessDefaultDataPaged
+ handle = process
+ return = TBool
+}
+
+slow {
+ name = MessageClientThreadFlags
+ specialkernel = ExecHandler::ThreadFlags
+ return = TUint
+ handle = ipcclient
+}
+
+slow {
+ name = ShPoolCreate
+ return = TInt
+ arg1 = const TShPoolInfo&
+ arg2 = TUint
+}
+
+slow {
+ name = ShPoolAlloc
+ return = TInt
+ arg1 = TInt
+ arg2 = TUint
+ arg3 = SShBufBaseAndSize&
+}
+
+slow {
+ name = ShPoolGetInfo
+ return = void
+ arg2 = TShPoolInfo&
+ handle = shpool
+ norelease
+}
+
+slow {
+ name = ShPoolFreeCount
+ return = TUint
+ handle = shpool
+}
+
+
+slow {
+ name = ShPoolNotification
+ return = TInt
+ arg2 = TShPoolNotifyType
+ arg3 = TUint
+ arg4 = TRequestStatus&
+ handle = shpool
+ norelease
+}
+
+slow {
+ name = ShPoolNotificationCancel
+ return = TInt
+ arg2 = TShPoolNotifyType
+ arg3 = TRequestStatus&
+ handle = shpool
+ norelease
+}
+
+slow {
+ name = ShPoolBufferWindow
+ return = TInt
+ arg2 = TInt
+ arg3 = TBool
+ handle = shpool
+ norelease
+}
+
+slow {
+ name = ShBufMap
+ return = TInt
+ arg2 = TBool
+ arg3 = SShBufBaseAndSize&
+ handle = shbuf
+ norelease
+}
+
+slow {
+ name = ShBufUnMap
+ return = TInt
+ handle = shbuf
+ norelease
+}
+
+slow {
+ name = ShBufBaseAndSize
+ return = TInt
+ arg2 = SShBufBaseAndSize&
+ handle = shbuf
+ norelease
+}
+
+/******************************************************************************
+ * End of normal executive functions
+ ******************************************************************************/
+
+// Test functions
+
+slow {
+ name = KernMsgTest
+ user = special
+ kernel = ::KernMsgTest
+ hw
+}
+
+slow {
+ name = GetLatencyValues
+ user = special
+ kernel = ::GetLatencyValues
+ arg1 = TInt
+ arg2 = TInt&
+ arg3 = TInt*
+ hw
+}
+
+slow {
+ name = CalcKernelHeapUsed
+ user = special
+ kernel = ::CalcKernelHeapUsed
+ return = TInt
+}
+