Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <e32std.h>
Link against: euser.lib

Class User

class User : public UserHeap;

Description

Set of static user functions.

These functions are related to a number of System component APIs.

The majority of the functions are related to either the current thread, or its heap. Examples in this category include User::Exit(TInt), which causes the thread to terminate, and User::Alloc(TInt), which allocates memory from the current thread's heap.

Some of these functions are equivalent to functions in the RThread or RHeap classes. In these cases, the User function is a convenient way to access the function without first having to get a handle to the current thread.

Functions are also provided to support debugging of memory leaks. These function calls can be written explicitly or can be generated using a corresponding macro - the advantage of using a macro is that the function call is only generated for debug builds.

A final category of functions, which includes User::BinarySearch(TInt,const TKey &,TInt &) and User::QuickSort(TInt,const TKey &,const TSwap &), are just useful functions which have no other natural home.

Derivation

Members

Defined in User:

Inherited from UserHeap:

See also:


Member functions


Exit(TInt)

IMPORT_C static void Exit(TInt aReason);

Description

Terminates the current thread, specifying a reason. All child threads are terminated and all resources are cleaned up.

If the current thread is the main thread in a process, the process is also terminated.

Parameters

TInt aReason

The reason code.


Panic(const TDesC &,TInt)

IMPORT_C static void Panic(const TDesC &aCategory, TInt aReason);

Description

Panics the current thread, specifying a category name and panic number.

Keep the length of the category name small; a length of 16 is ideal.

Parameters

const TDesC16 &aCategory

A reference to the descriptor containing the text that defines the category for this panic.

TInt aReason

The panic number.


Leave(TInt)

IMPORT_C static void Leave(TInt aReason);

Description

Leaves the currently executing function, unwinds the call stack, and returns from the most recently entered trap harness.

Parameters

TInt aReason

The value returned from the most recent call to TRAP or TRAPD. This is known as the reason code and, typically, it gives the reason for the environment or user error causing this leave to occur.


LeaveNoMemory()

IMPORT_C static void LeaveNoMemory();

Description

Leaves with the specific reason code KErrNoMemory.

See also:


LeaveIfError(TInt)

IMPORT_C static TInt LeaveIfError(TInt aReason);

Description

Leaves or returns with a specified reason code.

If the reason code is negative the function leaves, and the reason code is returned through the trap harness.

If the reason code is zero or positive, the function simply returns with the reason value.

Parameters

TInt aReason

The reason code.

Return value

TInt

If the function returns, the reason code which is either zero or positive.


LeaveIfNull(TAny *)

IMPORT_C static TAny* LeaveIfNull(TAny *aPtr);

Description

Leaves with the reason code KErrNoMemory, if the specified pointer is NULL.

If the pointer is not NULL, the function simply returns with the value of the pointer.

Parameters

TAny *aPtr

The pointer to be tested.

Return value

TAny *

If the function returns, the value of aPtr.


SetTrapHandler(TTrapHandler *)

IMPORT_C static TTrapHandler* SetTrapHandler(TTrapHandler *aHandler);

Description

Sets the current thread's trap handler and returns a pointer to any pre-existing trap handler.

Pass a NULL pointer to this function to clear the trap handler.

The trap handler works with the TRAP mechanism to handle the effects of a leave.

Note that TTrapHandler is an abstract base class; a trap handler must be implemented as a derived class.

Parameters

TTrapHandler *aHandler

A pointer to the trap handler which is to be installed as the current thread's trap handler.

Return value

TTrapHandler *

A pointer to the current thread's pre-existing trap handler, if any. NULL, if no pre-existing trap handler is set.


TrapHandler()

IMPORT_C static TTrapHandler* TrapHandler();

Description

Gets a pointer to the current thread's trap handler.

Note that TTrapHandler is an abstract base class; a trap handler must be implemented as a derived class.

Return value

TTrapHandler *

A pointer to the current thread's trap handler, if any. NULL, if no pre-existing trap handler is set.


InfoPrint(const TDesC &)

IMPORT_C static TInt InfoPrint(const TDesC &aDes);

Description

Invokes the notifier server to display a text message on the screen for a short time.

Parameters

const TDesC16 &aDes

A reference to the descriptor containing the text to be sent to the notifier server.

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes.

See also:


RequestComplete(TRequestStatus *&,TInt)

IMPORT_C static void RequestComplete(TRequestStatus *&aStatus, TInt aReason);

Description

Signals the current thread that the asynchronous request associated with the specified request status object is complete.

This function is used to complete an asynchronous request originating in the same thread as the code that is currently executing. If a request originates in another thread, then executing code must use RThread::RequestComplete(TRequestStatus *&,TInt)const to signal the completion of that request.

The request is completed with the completion code passed in aReason. This value is copied into the request status, pointed to by aStatus, before signalling the current thread's request semaphore.

The meaning of the completion code passed in aReason is a matter of convention to be decided between the service requester and the service provider.

Parameters

TRequestStatus *&aStatus

A reference to a pointer to the request status object. This is a pointer into the current thread's address space. On return, the pointer to the request status is set to NULL. Note that setting the pointer to NULL is a convenience, not all servers need it, and is done before the function returns.

TInt aReason

The completion code of this request.

See also:


WaitForAnyRequest()

IMPORT_C static void WaitForAnyRequest();

Description

Waits for any asynchronous request to complete.

The current thread waits on its request semaphore.

The function completes, and control returns to the caller when the current thread's request semaphore is signalled by any of the service providers which handle these asynchronous requests.

The request status of all outstanding asynchronous requests must be examined to determine which request is complete.


WaitForRequest(TRequestStatus &)

IMPORT_C static void WaitForRequest(TRequestStatus &aStatus);

Description

Waits for a specific asynchronous request to complete.

The current thread waits on its request semaphore.

The function completes and control returns to the caller when the current thread's request semaphore is signalled by the service provider handling the request associated with aStatus. Before signalling, the service provider sets an appropriate value in aStatus, other than KRequestPending.

Note that if other asynchronous requests complete before the one associated with aStatus, the request semaphore is adjusted so that knowledge of their completion is not lost. In this a case, a subsequent call to User::WaitForAnyRequest() or User::WaitForRequest(TRequestStatus &) will complete and return immediately.

Parameters

TRequestStatus &aStatus

A reference to the request status object associated with the specific asynchronous request.

See also:


WaitForRequest(TRequestStatus &,TRequestStatus &)

IMPORT_C static void WaitForRequest(TRequestStatus &aStatus1, TRequestStatus &aStatus2);

Description

Waits for either of two specific asynchronous requests to complete.

The current thread waits on its request semaphore.

The function completes and control returns to the caller when the current thread's request semaphore is signalled by either the service provider handling the request associated with aStatus1 or the service provider handling the request associated with aStatus2. Before signalling, the completing service provider sets an appropriate value in the status object, other than KRequestPending.

Note that if other asynchronous requests complete before the ones associated with aStatus1 and aStatus2, the request semaphore is adjusted so that knowledge of their completion is not lost. In this a case, a subsequent call to User::WaitForAnyRequest() or User::WaitForRequest(TRequestStatus &) will complete and return immediately.

Parameters

TRequestStatus &aStatus1

A reference to the request status object associated with the first specific asynchronous request.

TRequestStatus &aStatus2

A reference to the request status object associated with the second specific asynchronous request.

See also:


WaitForNRequest(TRequestStatus *,TInt)

IMPORT_C static void WaitForNRequest(TRequestStatus *aStatusArray[], TInt aNum);

Description

Waits for any one of specific asynchronous requests to complete.

The current thread waits on its request semaphore.

The function completes and control returns to the caller when the current thread's request semaphore is signalled by either the service provider handling the request associated with aStatus1 or the service provider handling the request associated with aStatus2. Before signalling, the completing service provider sets an appropriate value in the status object, other than KRequestPending.

Note that if other asynchronous requests complete before the ones associated with aStatusArray the request semaphore is adjusted so that knowledge of their completion is not lost. In this a case, a subsequent call to User::WaitForAnyRequest() or User::WaitForRequest(TRequestStatus &) will complete and return immediately.

Parameters

TRequestStatus *aStatusArray

TInt aNum


AllocLen(const TAny *)

IMPORT_C static TInt AllocLen(const TAny *aCell);

Description

Gets the length of the specified allocated heap cell.

The cell is assumed to be in the current thread's heap.

Parameters

const TAny *aCell

A pointer to the allocated cell whose length is to be fetched.

Return value

TInt

The length of the allocated cell.


Alloc(TInt)

IMPORT_C static TAny* Alloc(TInt aSize);

Description

Allocates a cell of specified size from the current thread's heap.

If there is insufficient memory available on the heap from which to allocate a cell of the required size, the function returns NULL.

The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.

Parameters

TInt aSize

The size of the cell to be allocated from the current thread's heap.

Return value

TAny *

A pointer to the allocated cell. NULL, if there is insufficient memory available.

Panic codes

USER

47, if the maximum unsigned value of aSize is greater than or equal to KMaxTInt/2. For example, calling Alloc(-1) raises this panic.


AllocL(TInt)

IMPORT_C static TAny* AllocL(TInt aSize);

Description

Allocates a cell of specified size from the current thread's heap, and leaves if there is insufficient memory in the heap.

The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.

Parameters

TInt aSize

The size of the cell to be allocated from the current thread's heap.

Return value

TAny *

A pointer to the allocated cell.

Panic codes

USER

47, if the maximum unsigned value of aSize is greater than or equal to KMaxTInt/2. For example, calling Alloc(-1) raises this panic.


AllocLC(TInt)

IMPORT_C static TAny* AllocLC(TInt aSize);

Description

Allocates a cell of specified size from the current thread's default heap, and, if successful, places a pointer to the cell onto the cleanup stack.

The function leaves if there is insufficient memory in the heap.

The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.

Parameters

TInt aSize

The size of the cell to be allocated from the current thread's default heap.

Return value

TAny *

A pointer to the allocated cell.

Panic codes

USER

47, if the maximum unsigned value of aSize is greater than or equal to KMaxTInt/2. For example, calling Alloc(-1) raises this panic.


AllocZ(TInt)

IMPORT_C static TAny* AllocZ(TInt aSize);

Description

Allocates a cell of specified size from the current thread's default heap, and clears it to binary zeroes.

If there is insufficient memory available on the heap from which to allocate a cell of the required size, the function returns NULL.

The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.

Parameters

TInt aSize

The size of the cell to be allocated from the current thread's default heap.

Return value

TAny *

A pointer to the allocated cell. NULL, if there is insufficient memory available.

Panic codes

USER

47, if the maximum unsigned value of aSize is greater than or equal to KMaxTInt/2. For example, calling Alloc(-1) raises this panic.


AllocZL(TInt)

IMPORT_C static TAny* AllocZL(TInt aSize);

Description

Allocates a cell of specified size from the current thread's default heap, clears it to binary zeroes, and leaves if there is insufficient memory in the heap.

The resulting size of the allocated cell may be rounded up to a value greater than aSize, but is guaranteed to be not less than aSize.

Parameters

TInt aSize

The size of the cell to be allocated from the current thread's heap.

Return value

TAny *

A pointer to the allocated cell.

Panic codes

USER

47, if the maximum unsigned value of aSize is greater than or equal to KMaxTInt/2. For example, calling Alloc(-1) raises this panic.


AllocSize(TInt &)

IMPORT_C static TInt AllocSize(TInt &aTotalAllocSize);

Description

Gets the total number of cells allocated on the current thread's default heap, and the total space allocated to them.

Parameters

TInt &aTotalAllocSize

On return, contains the total space allocated to the cells.

Return value

TInt

The number of cells currently allocated on the current thread's heap.


Available(TInt &)

IMPORT_C static TInt Available(TInt &aBiggestBlock);

Description

Gets the total free space currently available on the current thread's default heap, and the space available in the largest free block.

The space available represents the total space which can be allocated.

Note that compressing the heap may reduce the total free space available and the space available in the largest free block.

Parameters

TInt &aBiggestBlock

On return, contains the space available in the largest free block on the current thread's default heap.

Return value

TInt

The total free space currently available on the current thread's heap.


CountAllocCells()

IMPORT_C static TInt CountAllocCells();

Description

Gets the total number of cells allocated on the current thread's default heap.

Return value

TInt

The number of cells allocated on the current thread's default user heap.


CountAllocCells(TInt &)

IMPORT_C static TInt CountAllocCells(TInt &aFreeCount);

Description

Gets the the total number of cells allocated, and the number of free cells, on the current thread's default heap.

Parameters

TInt &aFreeCount

On return, contains the number of free cells on the current thread's default heap.

Return value

TInt

The number of cells allocated on the current thread's default heap.


Free(TAny *)

IMPORT_C static void Free(TAny *aCell);

Description

Frees the specified cell and returns it to the current thread's default heap.

Parameters

TAny *aCell

A pointer to a valid cell to be freed. If NULL this function call will be ignored.

Panic codes

USER

42, if aCell is not NULL and does not point to a valid cell.


FreeZ(TAny *&)

IMPORT_C static void FreeZ(TAny *&aCell);

Description

Frees the specified cell, returns it to the current thread's default heap, and resets the pointer to NULL.

Parameters

TAny *&aCell

A reference to a pointer to a valid cell to be freed. If NULL this function call will be ignored.

Panic codes

USER

42, if aCell is not NULL and does not point to a valid cell.


Allocator()

IMPORT_C static RAllocator& Allocator();

Description

Gets the current thread's default current heap.

Return value

RAllocator &

The current heap.


Heap()

static inline RHeap& Heap();

Description

Gets a reference to the handle to the current thread's heap.

Return value

RHeap &

A reference to the handle to the current thread's heap.


ReAlloc(TAny *,TInt,TInt)

IMPORT_C static TAny* ReAlloc(TAny *aCell, TInt aSize, TInt aMode=0);

Description

Increases or decreases the size of an existing cell in the current thread's heap.

If the cell is being decreased in size, then it is guaranteed not to move, and the function returns the pointer originally passed in aCell. Note that the length of the cell will be the same if the difference between the old size and the new size is smaller than the minimum cell size.

If the cell is being increased in size, i.e. aSize is bigger than its current size, then the function tries to grow the cell in place. If successful, then the function returns the pointer originally passed in aCell. If unsuccessful, then:

  1. if the cell cannot be moved, i.e. aMode has the ENeverMove bit set, then the function returns NULL.

  2. if the cell can be moved, i.e. aMode does not have the ENeverMove bit set, then the function tries to allocate a new replacement cell, and, if successful, returns a pointer to the new cell; if unsuccessful, it returns NULL.

Note that in debug mode, the function returns NULL if the cell cannot be grown in place, regardless of whether the ENeverMove bit is set.

If the reallocated cell is at a different location from the original cell, then the content of the original cell is copied to the reallocated cell.

If the supplied pointer, aCell is NULL, then the function attempts to allocate a new cell, but only if the cell can be moved, i.e. aMode does not have the ENeverMove bit set.

Note the following general points:

Parameters

TAny *aCell

A pointer to the cell to be reallocated. This may be NULL.

TInt aSize

The new size of the cell. This may be bigger or smaller than the size of the original cell. The value can also be zero, but this is interpreted as a request for a cell of minimum size; the net effect is the same as if the caller had explicitly requested a cell of minimum size. Note that the minimum size of a heap cell is device dependent.

TInt aMode

Flags controlling the reallocation. The only bit which has any effect on this function is that defined by the enumeration ENeverMove of the enum RAllocator::TReAllocMode. If this is set, then any successful reallocation guarantees not to have changed the start address of the cell. By default, this parameter is zero.

Return value

TAny *

A pointer to the reallocated cell. This may be the same as the original pointer supplied through aCell. NULL if there is insufficient memory to reallocate the cell, or to grow it in place.

Panic codes

USER

42, if aCell is not NULL, and does not point to a valid cell.

USER

47, if the maximum unsigned value of aSize is greater than or equal to KMaxTInt/2. For example, calling ReAlloc(someptr,-1) raises this panic.

See also:


ReAllocL(TAny *,TInt,TInt)

IMPORT_C static TAny* ReAllocL(TAny *aCell, TInt aSize, TInt aMode=0);

Description

Increases or decreases the size of an existing cell, and leaves if there is insufficient memory in the current thread's default heap.

If the cell is being decreased in size, then it is guaranteed not to move, and the function returns the pointer originally passed in aCell. Note that the length of the cell will be the same if the difference between the old size and the new size is smaller than the minimum cell size.

If the cell is being increased in size, i.e. aSize is bigger than its current size, then the function tries to grow the cell in place. If successful, then the function returns the pointer originally passed in aCell. If unsuccessful, then:

  1. if the cell cannot be moved, i.e. aMode has the ENeverMove bit set, then the function leaves.

  2. if the cell can be moved, i.e. aMode does not have the ENeverMove bit set, then the function tries to allocate a new replacement cell, and, if successful, returns a pointer to the new cell; if unsuccessful, it leaves.

Note that in debug mode, the function leaves if the cell cannot be grown in place, regardless of whether the ENeverMove bit is set.

If the reallocated cell is at a different location from the original cell, then the content of the original cell is copied to the reallocated cell.

If the supplied pointer, aCell is NULL, then the function attempts to allocate a new cell, but only if the cell can be moved, i.e. aMode does not have the ENeverMove bit set.

Note the following general points:

Parameters

TAny *aCell

A pointer to the cell to be reallocated. This may be NULL.

TInt aSize

The new size of the cell. This may be bigger or smaller than the size of the original cell. The value can also be zero, but this is interpreted as a request for a cell of minimum size; the net effect is the same as if the caller had explicitly requested a cell of minimum size. Note that the minimum size of a heap cell is device dependent.

TInt aMode

Flags controlling the reallocation. The only bit which has any effect on this function is that defined by the enumeration ENeverMove of the enum RAllocator::TReAllocMode. If this is set, then any successful reallocation guarantees not to have changed the start address of the cell. By default, this parameter is zero.

Return value

TAny *

A pointer to the reallocated cell. This may be the same as the original pointer supplied through aCell.

Panic codes

USER

42, if aCell is not NULL, and does not point to a valid cell.

USER

47, if the maximum unsigned value of aSize is greater than or equal to KMaxTInt/2. For example, calling ReAlloc(someptr,-1) raises this panic.

See also:


SwitchAllocator(RAllocator *)

IMPORT_C static RAllocator* SwitchAllocator(RAllocator *aAllocator);

Description

Changes the current thread's heap.

Parameters

RAllocator *aAllocator

A pointer to the new heap handle.

Return value

RAllocator *

A pointer to the old heap handle.


SwitchHeap(RAllocator *)

static inline RHeap* SwitchHeap(RAllocator *aHeap);

Description

Changes the current thread's heap.

Parameters

RAllocator *aHeap

A pointer to the new heap handle.

Return value

RHeap *

A pointer to the old heap handle.


CompressAllHeaps()

Interface status: deprecated This function is no longer supported, and calling it has no effect.

IMPORT_C static TInt CompressAllHeaps();

Description

Compresses all the chunks containing heaps.

Return value

TInt

KErrNone


After(TTimeIntervalMicroSeconds32)

IMPORT_C static void After(TTimeIntervalMicroSeconds32 aInterval);

Description

Suspends the current thread until a specified time interval has expired.

The resolution of the timer depends on the hardware, but is normally 1 Symbian OS tick (approximately 1/64 second).

Parameters

TTimeIntervalMicroSeconds32 aInterval

The time interval for which the current thread is to be suspended, in microseconds.

Panic codes

USER

86, if the time interval is negative.


At(const TTime &)

IMPORT_C static TInt At(const TTime &aTime);

Description

Suspends the current thread until the specified absolute time.

If the machine is off at that time, the machine will be turned on again.

KErrNone - suspension of the current thread completed normally at the requested time.

KErrAbort - suspension of the current thread was aborted because the system time changed.

KErrUnderflow - the requested completion time is in the past.

KErrOverFlow - the requested completion time is too far in the future.

Parameters

const TTime &aTime

The absolute time until which the current thread is to be suspended.

Return value

TInt

On completion, contains the status of the request to suspend the current thread:


AfterHighRes(TTimeIntervalMicroSeconds32)

IMPORT_C static void AfterHighRes(TTimeIntervalMicroSeconds32 aInterval);

Description

Suspends the current thread until a specified time interval has expired to a resolution of 1ms .

Parameters

TTimeIntervalMicroSeconds32 aInterval

The time interval for which the current thread is to be suspended, in microseconds.

Panic codes

USER

86, if the time interval is negative.


SetHomeTime(const TTime &)

Interface status: deprecated Set the time using User::SetUTCTime if the UTC time is known; otherwise, use the timezone server to set the time.
Capability: WriteDeviceData

IMPORT_C static TInt SetHomeTime(const TTime &aTime);

Description

Sets the home time to a specified time value.

Parameters

const TTime &aTime

A reference to a time representation object containing the time value.

Return value

TInt

KErrNone if successful or one of the system-wide error codes.


SetHomeTimeSecure(const TTime &)

Capability: TCB
Capability: WriteDeviceData

IMPORT_C static TInt SetHomeTimeSecure(const TTime &aTime);

Description

Sets the secure home time to a specified time value.

Parameters

const TTime &aTime

A reference to a time representation object containing the secure time value.

Return value

TInt

KErrNone if successful or one of the system-wide error codes.


SetUTCTime(const TTime &)

Capability: WriteDeviceData

IMPORT_C static TInt SetUTCTime(const TTime &aUTCTime);

Description

Sets the UTC time to a specified time value.

Parameters

const TTime &aUTCTime

A reference to a time representation object containing the time value.

Return value

TInt

KErrNone if successful or one of the system-wide error codes.


SetUTCTimeSecure(const TTime &)

Capability: TCB
Capability: WriteDeviceData

IMPORT_C static TInt SetUTCTimeSecure(const TTime &aUTCTime);

Description

Sets the secure UTC time to a specified time value.

Parameters

const TTime &aUTCTime

A reference to a time representation object containing the secure time value.

Return value

TInt

KErrNone if successful or one of the system-wide error codes.


UTCOffset()

IMPORT_C static TTimeIntervalSeconds UTCOffset();

Description

Gets the UTC offset - the difference between UTC and the current local time due to any time zones and daylight savings time that may be in effect. A positive offset indicates a time ahead of UTC, a negative offset indicates a time behind UTC.

Return value

TTimeIntervalSeconds

The UTC offset, in seconds.


SetUTCOffset(TTimeIntervalSeconds)

Capability: WriteDeviceData

IMPORT_C static void SetUTCOffset(TTimeIntervalSeconds aOffset);

Description

Sets the UTC offset to the given number of seconds. This should include both time zone differences and the effect of any applicable daylight savings time. A positive offset indicates a time ahead of UTC, a negative offset indicates a time behind UTC.

Parameters

TTimeIntervalSeconds aOffset

The UTC offset, in seconds.


SetUTCTimeAndOffset(const TTime &,TTimeIntervalSeconds)

Capability: WriteDeviceData

IMPORT_C static TInt SetUTCTimeAndOffset(const TTime &aUTCTime, TTimeIntervalSeconds aOffset);

Description

Sets the UTC time and UTC offset to the specified values, atomically. This is equivalent to calling both SetUTCTime and SetUTCOffset, but without the possibility of an incorrect time being observed between the two calls. If the operation is not successful, an error code will be returned and both the time and offset will be left unchanged.

Parameters

const TTime &aUTCTime

A reference to a time representation object containing the time value.

TTimeIntervalSeconds aOffset

The UTC offset, in seconds.

Return value

TInt

KErrNone if successful or one of the system-wide error codes.


SetCurrencySymbol(const TDesC &)

Capability: WriteDeviceData

IMPORT_C static TInt SetCurrencySymbol(const TDesC &aSymbol);

Description

Sets the system wide currency symbol.

On successful return from this function, a call to the Set() member function of a TCurrencySymbol object fetches the new currency symbol.

Parameters

const TDesC16 &aSymbol

A reference to the descriptor containing the currency symbol to be set.

Return value

TInt

KErrNone if successful, otherwise one of the other system wide error codes.

Panic codes

USER

119, if the length of aSymbol is greater than KMaxCurrencySymbol.

See also:


SetFloatingPointMode(TFloatingPointMode,TFloatingPointRoundingMode)

IMPORT_C static TInt SetFloatingPointMode(TFloatingPointMode aMode, TFloatingPointRoundingMode aRoundingMode=EFpRoundToNearest);

Description

Sets the hardware floating point mode for the current thread. This does not affect software floating point calculations. The rounding mode can also be set. New threads created by this thread will inherit the mode, thus to set the mode for a whole process, call this method before you create any new threads.

Parameters

TFloatingPointMode aMode

The floating point calculation mode to use.

TFloatingPointRoundingMode aRoundingMode

The floating point rounding mode to use, defaults to nearest.

Return value

TInt

KErrNone if successful, KErrNotSupported if the hardware does not support the chosen mode, or there is no floating point hardware present.


TickCount()

IMPORT_C static TUint TickCount();

Description

Gets the current tick count.

The period between ticks is usually 1/64 second, but may be hardware dependent.

Return value

TUint

The machine dependent tick count.


NTickCount()

IMPORT_C static TUint32 NTickCount();

Description

Gets the nanokernel tick count.

This is the current value of the machine's millisecond tick counter.

On the emulator the resolution defaults to 5 milliseconds; however you can change it to N milliseconds when you launch the emulator from the command line by specifying -Dtimerresolution=N as a parameter to epoc.exe, for example:

epoc.exe -Dtimerresolution=3

On most hardware the resolution is about 1 millisecond.

You can get the nanokernel tick period in microseconds by calling into the Hardware Abstraction Layer:

TInt nanokernel_tick_period;
HAL::Get(HAL::ENanoTickPeriod, nanokernel_tick_period);

Return value

TUint32

The nanokernel tick count.


LockPeriod()

IMPORT_C static TTimerLockSpec LockPeriod();

Description

Returns which of the periods the clock is currently in.

Return value

TTimerLockSpec

The fraction of a second at which the timer completes.


InactivityTime()

IMPORT_C static TTimeIntervalSeconds InactivityTime();

Description

Gets the time since the last user activity.

Return value

TTimeIntervalSeconds

The time interval.


ResetInactivityTime()

IMPORT_C static void ResetInactivityTime();

Description

Resets all user inactivity timers.


FastCounter()

IMPORT_C static TUint32 FastCounter();

Description

Gets the fast counter.

This is the current value of the machine's high resolution timer. If a high resolution timer is not available, it uses the millisecond timer instead.

The freqency of this counter can be determined by reading the HAL attribute EFastCounterFrequency.

This function is intended for use in profiling and testing; it should not be used in production code. User::NTickCount() should be used instead.

This is because the implementation of the FastCounter is platform-specific: its frequency can be anywhere from a few KHz to many MHz. It may also not be activated when needed, since it is expensive in terms of clock cycles and battery life, and use of a platform-specific API may be necessary to enable it.

Return value

TUint32

The fast counter value.

See also:


LockedInc(TInt &)

IMPORT_C static TInt LockedInc(TInt &aValue);

Description

Increments a TInt value by 1 when the current thread is locked to prevent re-entrancy.

The increment to aValue is done while the current thread is locked; i.e. no other thread is permitted to run until the sequence of instructions which increment aValue have completed. Hence the function gives controlled access to a TInt variable which may be in a memory location accessible to more than one thread.

As an example of its use, the function is used in the implementation of critical sections.

Parameters

TInt &aValue

A reference to an integer whose value is to be incremented. On return contains the incremented value.

Return value

TInt

The value of aValue before it is incremented.

See also:


LockedDec(TInt &)

IMPORT_C static TInt LockedDec(TInt &aValue);

Description

Decrements a TInt value by 1 when the current thread is locked to prevent re-entrancy.

The decrement from aValue is done while the current thread is locked; i.e. no other thread is permitted to run until the sequence of instructions which decrement aValue have completed. Hence the function gives controlled access to a TInt variable which may be in a memory location accessible to more than one thread.

As an example of its use, the function is used in the implementation of critical sections.

Parameters

TInt &aValue

A reference to TInt whose value is to be decremented. On return contains the decremented value.

Return value

TInt

The value of aValue before it is decremented.

See also:


SafeInc(TInt &)

IMPORT_C static TInt SafeInc(TInt &aValue);

Description

Atomically increments the specified value by 1, if the value is > 0.

Parameters

TInt &aValue

The value to be incremented; on return the incremented value.

Return value

TInt

The original value of aValue


SafeDec(TInt &)

IMPORT_C static TInt SafeDec(TInt &aValue);

Description

Atomically decrements the specified value by 1, if the value is > 0.

Parameters

TInt &aValue

The value to be decremented; on return the decremented value.

Return value

TInt

The original value of aValue


Beep(TInt,TTimeIntervalMicroSeconds32)

IMPORT_C static TInt Beep(TInt aFrequency, TTimeIntervalMicroSeconds32 aDuration);

Description

Makes a beep tone with a specified frequency and duration.

This function should not be used. It exists to maintain compatibility with older versions of Symban OS.

Parameters

TInt aFrequency

TTimeIntervalMicroSeconds32 aDuration

Return value

TInt


IsRomAddress(TBool &,TAny *)

IMPORT_C static TInt IsRomAddress(TBool &aBool, TAny *aPtr);

Description

Tests whether the specified address is in the ROM.

Parameters

TBool &aBool

True, if the address at aPtr is within the ROM; false, otherwise.

TAny *aPtr

The address to be tested.

Return value

TInt

Always KErrNone.


BinarySearch(TInt,const TKey &,TInt &)

IMPORT_C static TInt BinarySearch(TInt aCount, const TKey &aKey, TInt &aPos);

Description

Performs a binary search for an array element containing a specified key.

It can be used on any kind of array where elements can be identified by key. It is used by the standard Symbian OS arrays having CArrayFix, CArrayVar or CArrayPak in their class hierarchy in the implementation of the various functions for inserting, deleting and finding elements by key. The function can be used by other arrays.

The function returns a zero value if the search is successful and a non-zero value otherwise.

If the search is successful, the function puts the position (i.e. the index) of the element into aPos. If the search is unsuccessful, then the function puts into aPos the position of the first element in the array whose key is greater than the search key.

If the array is empty, i.e. aCount is zero, then the search is unsuccessful and aPos is not defined.

Parameters

TInt aCount

The number of elements in the array.

const TKey &aKey

A reference to a suitably initialised TKey derived object. In particular, the object will have been initialised with a pointer to a sample element containing the search key.

TInt &aPos

If the element is found, the reference is set to the position of that element within the array. The position is relative to zero, (i.e. the first element in the array is at position 0). If the element is not found and the array is not empty, then the reference is set to the position of the first element in the array with a key which is greater than the search key. If the element is not found and the array is empty, then the reference is undefined.

Return value

TInt

Zero, if the element with the specified key is found. Non-zero, if the element with the specified key is not found.

Panic codes

USER

97, if aCount is negative.


QuickSort(TInt,const TKey &,const TSwap &)

IMPORT_C static TInt QuickSort(TInt aCount, const TKey &aKey, const TSwap &aSwap);

Description

Quick sorts array elements.

It is used by the standard Symbian OS arrays having CArrayFixBase, CArrayVarBase or CArrayPakBase in their class hierarchy in the implementation of their sort functions. The function can be used by other arrays.

The function returns KErrNone if the operation is successful otherwise it returns KErrGeneral.

Parameters

TInt aCount

The number of elements in the array.

const TKey &aKey

A reference to a suitably initialised TKey derived object.

const TSwap &aSwap

A reference to a suitably initialised TSwap derived object.

Return value

TInt

KErrNone if the operation is successful; KErrGeneral otherwise.

Panic codes

USER

96, if aCount is negative.


Language()

IMPORT_C static TLanguage Language();

Description

Gets the language of the current locale.

Return value

TLanguage

One of the TLanguage enumerators identifying the language of the current locale.


Collate(TUint)

IMPORT_C static TUint Collate(TUint aChar);

Description

Converts the character to its collated form.

Collating is the process of removing differences between characters that are deemed unimportant for the purposes of ordering characters. The result of the conversion depends on the locale and on whether this is a UNICODE build or not.

Note that for a non UNICODE build, if the binary value of the character aChar is greater than or equal to 0x100, then the character returned is the same as the character passed to the function.

Parameters

TUint aChar

The character to be folded.

Return value

TUint

The converted character.


Fold(TUint)

Interface status: deprecated

IMPORT_C static TUint Fold(TUint aChar);

Description

Folds the specified character.

Folding converts the character to a form which can be used in tolerant comparisons without control over the operations performed. Tolerant comparisons are those which ignore character differences like case and accents.

The result of folding a character depends on the locale and on whether this is a UNICODE build or not.

Note that for a non-UNICODE build, if the binary value of the character aChar is greater than or equal to 0x100, then the character returned is the same as the character passed to the function.

Parameters

TUint aChar

The character to be folded.

Return value

TUint

The folded character.

See also:


LowerCase(TUint)

IMPORT_C static TUint LowerCase(TUint aChar);

Description

Converts the specified character to lower case.

The result of the conversion depends on the locale and on whether this is a UNICODE build or not.

Note that for a non-UNICODE build, if the binary value of the character aChar is greater than or equal to 0x100, then the character returned is the same as the character passed to the function.

Parameters

TUint aChar

The character to be converted to lower case.

Return value

TUint

The lower case character.


UpperCase(TUint)

IMPORT_C static TUint UpperCase(TUint aChar);

Description

Converts a specified character to upper case.

The result of the conversion depends on the locale and on whether this is a UNICODE build or not.

Note that for a non UNICODE build, if the binary value of the character aChar is greater than or equal to 0x100, then the character returned is the same as the character passed to the function.

Parameters

TUint aChar

The character to be converted to upper case.

Return value

TUint

The upper case character.


Fold(TUint,TInt)

IMPORT_C static TUint Fold(TUint aChar, TInt aFlags);

Description

Folds the character according to a specified folding method.

TChar::EFoldCase, convert characters to their lower case form, if any;

TChar::EFoldAccents, strip accents;

TChar::EFoldDigits, convert digits representing values 0..9 to characters '0'..'9';

TChar::EFoldSpaces, convert all spaces (ordinary, fixed-width, ideographic, etc.) to ' ';

TChar::EFoldKana, convert hiragana to katakana;

TChar::EFoldWidth, fold full width and half width variants to their standard forms;

TChar::EFoldAll, use all of the above folding methods.

Parameters

TUint aChar

The character to be folded.

TInt aFlags

A set of flags defining the folding method. They are:

Return value

TUint

The folded character.

See also:


TitleCase(TUint)

IMPORT_C static TUint TitleCase(TUint aChar);

Description

Converts a specified character to its title case version.

Parameters

TUint aChar

The character to be converted.

Return value

TUint

The converted character.


StringLength(const TUint8 *)

IMPORT_C static TInt StringLength(const TUint8 *aString);

Description

Gets the length of a C style, null terminated, string of single-byte valued characters.

The length does not include the null terminator.

Parameters

const TUint8 *aString

A pointer to the single byte valued, null terminated, string.

Return value

TInt

The length of the string.


StringLength(const TUint16 *)

IMPORT_C static TInt StringLength(const TUint16 *aString);

Description

Gets the length of a C style, null terminated, string of double-byte valued characters.

The length does not include the null terminator.

Parameters

const TUint16 *aString

A pointer to the double-byte valued, null terminated, string.

Return value

TInt

The length of the string.


FreeLogicalDevice(const TDesC &)

IMPORT_C static TInt FreeLogicalDevice(const TDesC &aDeviceName);

Description

Frees the logical device driver DLL associated with a specified driver name.

Parameters

const TDesC16 &aDeviceName

The name of the logical device driver object. This must match the name set during installation of the logical device. Typically, this is done in an implementation of DLogicalDevice::Install() through a call to SetName(). Note that the name is rarely the same as the device's filename. The name of a logical device driver object can be discovered by using TFindLogicalDevice.

Return value

TInt

KErrNone if successful or one of the system-wide error codes. KErrNone will be returned if the device is not found as it may have already been freed.


FreePhysicalDevice(const TDesC &)

IMPORT_C static TInt FreePhysicalDevice(const TDesC &aDriverName);

Description

Frees the physical device driver DLL associated with a specified driver name.

Parameters

const TDesC16 &aDriverName

The name of the physical device driver object. This must match the name set during installation of the physical device. Typically, this is done in an implementation of DPhysicalDevice::Install() through a call to SetName(). Note that the name is rarely the same as the device's filename. The name of a physical device driver object can be discovered by using TFindPhysicalDevice.

Return value

TInt

KErrNone if successful or one of the system-wide error codes. KErrNone will be returned if the device is not found as it may have already been freed.


LoadLogicalDevice(const TDesC &)

IMPORT_C static TInt LoadLogicalDevice(const TDesC &aFileName);

Description

Loads the logical device driver (LDD) DLL with the specified filename.

The function searches the system path for the LDD DLL, and loads it. It then makes a kernel server call that:

1. creates the LDD factory object, an instance of a DLogicalDevice derived class; this involves checking the first UID value to make sure that the DLL is a valid LDD before proceeding to call the exported function at ordinal 1, which creates the LDD factory object on the kernel heap

2. calls the LDD factory object's Install() function to complete the installation

3. adds the new LDD factory object to the kernel's list of LDD factory objects.

Parameters

const TDesC16 &aFileName

A reference to the descriptor containing the name of the physical device driver DLL. If the filename has no extension, .LDD is assumed by default.

Return value

TInt

KErrNone if successful or one of the system-wide error codes.


LoadPhysicalDevice(const TDesC &)

IMPORT_C static TInt LoadPhysicalDevice(const TDesC &aFileName);

Description

Loads the physical device driver (PDD) DLL with the specified filename.

The function searches the system path for the PDD DLL, and loads it. It then makes a kernel server call that:

1. creates the PDD factory object, an instance of a DPhysicalDevice derived class; this involves checking the first UID value to make sure that the DLL is a valid PDD before proceeding to call the exported function at ordinal 1, which creates the PDD factory object on the kernel heap

2. calls the PDD factory object's Install() function to complete the installation

2. adds the new PDD factory object to the kernel's list of PDD factory objects.

Parameters

const TDesC16 &aFileName

A reference to the descriptor containing the name of the physical device driver DLL. If the filename has no extension, .PDD is assumed by default.

Return value

TInt

KErrNone if successful or one of the system-wide error codes.


QueryVersionSupported(const TVersion &,const TVersion &)

IMPORT_C static TBool QueryVersionSupported(const TVersion &aCurrent, const TVersion &aRequested);

Description

Compares two version objects and returns true if the test version is less than the current version.

Version information is encapsulated by a TVersion type object and consists of a major version number, a minor version number and a build number.

The function returns true if one of the following conditions is true:

1. the test major version is strictly less than the current major version

2. the test major version is equal to the current major version and the test minor version is less than or equal to the current minor version

If neither condition is true, the function returns false.

Parameters

const TVersion &aCurrent

A reference to the current version against which aRequested is compared.

const TVersion &aRequested

A reference to the test version to be compared against aCurrent.

Return value

TBool

True, if one or both conditions are true. False otherwise.


Version()

IMPORT_C static TVersion Version();

Description

Retrieves the E32 component version number, which is the kernel architecture version number. For example for EKA2 the major part of the version number will be 2.

Return value

TVersion

The E32 component version number.


SetMachineConfiguration(const TDesC8 &)

Capability: WriteDeviceData

IMPORT_C static TInt SetMachineConfiguration(const TDesC8 &aConfig);

Description

Sets the machine configuration.

Parameters

const TDesC8 &aConfig

Descriptor containing the machine configuration data

Return value

TInt

KErrNone, if sucessful, otherwise one of the other system-wide error codes.


MachineConfiguration(TDes8 &,TInt &)

Capability: ReadDeviceData

IMPORT_C static TInt MachineConfiguration(TDes8 &aConfig, TInt &aSize);

Description

Gets the machine configuration.

Parameters

TDes8 &aConfig

On return contains the machine configuration data.

TInt &aSize

On return, contains the size of the data.

Return value

TInt

KErrNone, if sucessful, otherwise one of the other system-wide error codes.


SetDebugMask(TUint32)

IMPORT_C static void SetDebugMask(TUint32 aVal);

Description

Sets the debug mask.

Parameters

TUint32 aVal

A set of bit values as defined in nk_trace.h


SetDebugMask(TUint32,TUint)

IMPORT_C static void SetDebugMask(TUint32 aVal, TUint aIndex);

Description

Sets the debug mask at the given index

Parameters

TUint32 aVal

A set of bit values as defined in nk_trace.h

TUint aIndex

An index of which 32 bit mask word is to be accessed


SetJustInTime(const TBool)

IMPORT_C static void SetJustInTime(const TBool aBoolean);

Description

Sets just-in-time debugging for this process on or off.

While the function can be called by code running on both the Emulator and ARM, it only has an effect on the Emulator. Turning just-in-time debugging off prevents the debug Emulator closing down when a panic occurs.

By default, just-in-time debugging is on.

Note that the emulator handles panics in the nomal manner, i.e. by killing the thread.

Parameters

const TBool aBoolean

ETrue, if just-in-time debugging is to be set on. EFalse, if just-in-time debugging is to be set off. EFalse causes _asm 3 calls to be disabled.

See also:


Check()

IMPORT_C static void Check();

Description

Checks the validity of the current thread's default heap.

The function walks through the list of allocated cells and the list of free cells checking that the heap is consistent and complete.

Panic codes

USER

47 if any corruption is found, specifically a bad allocated heap cell size.

USER

48 if any corruption is found, specifically a bad allocated heap cell address.

USER

49 if any corruption is found, specifically a bad free heap cell address.


Invariant()

IMPORT_C static void Invariant();

Description

Panics the current thread with a USER 0 panic.

Typically, this is called when a test for a class invariant fails, i.e. when a test which checks that the internal data of an object is self-consistent, fails.

Such tests are almost always done in debug builds, commonly using the __ASSERT_DEBUG macro.


JustInTime()

IMPORT_C static TBool JustInTime();

Description

Tests whether just-in-time debugging is on or off.

The function is used by the Kernel, on the Emulator, to decide whether to do just-in-time debugging for panics. The function applies to the current process.

Unless overridden by calling User::SetJustInTime(EFalse), just-in-time debugging is on by default.

Return value

TBool

True, if just-in-time debugging is on. False otherwise.

See also:


__DbgMarkStart(TBool)

IMPORT_C static void __DbgMarkStart(TBool aKernel);

Description

Marks the start of heap cell checking for the current thread's default heap, or for the kernel heap.

If earlier calls to User::__DbgMarkStart(TBool) have been made, then this call to User::__DbgMarkStart(TBool) marks the start of a new nested level of heap cell checking.

Every call to User::__DbgMarkStart(TBool) should be matched by a later call to User::__DbgMarkEnd(TBool,TInt) to verify that the number of heap cells allocated, at the current nested level, is as expected. This expected number of heap cells is passed to User::__DbgMarkEnd(TBool,TInt) as a parameter; however, the most common expected number is zero, reflecting the fact that the most common requirement is to check that all memory allocated since a previous call to __DbgStartCheck() has been freed.

Parameters

TBool aKernel

ETrue, if checking is being done for the kernel heap; EFalse, if checking is being done for the current thread's default heap.


__DbgMarkCheck(TBool,TBool,TInt,const TUint8 *,TInt)

IMPORT_C static void __DbgMarkCheck(TBool aKernel, TBool aCountAll, TInt aCount, const TUint8 *aFileName, TInt aLineNum);

Description

Checks the current number of allocated heap cells for the current thread's default heap, or the kernel heap.

If aCountAll is true, the function checks that the total number of allocated cells on the heap is the same as aCount. If aCountAll is false, the function checks that the number of allocated cells at the current nested level is the same as aCount.

If checking fails, the function raises a panic. Information about the failure is put into the panic category, which takes the form:

ALLOC COUNT\rExpected aaa\rAllocated bbb\rLn: ccc ddd

Where aaa is the value aCount, bbb is the number of allocated heap cells, ccc is a line number, copied from aLineNum, and ddd is a file name, copied from the descriptor aFileName.

Note that the panic number is 1.

Parameters

TBool aKernel

ETrue, if checking is being done for the kernel heap; EFalse, if checking is being done for the current thread's default heap.

TBool aCountAll

If true, the function checks that the total number of allocated cells on the heap is the same as aCount. If false, the function checks that the number of allocated cells at the current nested level is the same as aCount.

TInt aCount

The expected number of allocated cells.

const TUint8 *aFileName

A filename; this is displayed as part of the panic category, if the check fails.

TInt aLineNum

A line number; this is displayed as part of the panic category, if the check fails.


__DbgMarkEnd(TBool,TInt)

IMPORT_C static TUint32 __DbgMarkEnd(TBool aKernel, TInt aCount);

Description

Marks the end of heap cell checking at the current nested level for the current thread's default heap, or the kernel heap.

The function checks that the number of heap cells allocated, at the current nested level, is aCount. The most common value for aCount is zero, reflecting the fact that the most common requirement is to check that all memory allocated since a previous call to __DbgStartCheck() has been freed.

A call to this function should match an earlier call to User::__DbgMarkStart(TBool). If there are more calls to this function than calls to User::__DbgMarkStart(TBool), then this function raises a USER 51 panic.

If the check fails for a user heap, the function raises an ALLOC: nnnnnnnn panic, where nnnnnnnn is a hexadecimal pointer to the first orphaned heap cell.

If the check fails for the kernel heap, the kernel server raises a KERN-EXEC 17 panic.

Parameters

TBool aKernel

ETrue, if checking is being done for the kernel heap; EFalse, if checking is being done for the current thread's default heap.

TInt aCount

The number of allocated heap cells expected.

Return value

TUint32

Zero always.


__DbgSetAllocFail(TBool,RAllocator::TAllocFail,TInt)

IMPORT_C static void __DbgSetAllocFail(TBool aKernel, RAllocator::TAllocFail aFail, TInt aRate);

Description

Simulates a heap allocation failure for the current thread's default heap, or the kernel heap.

The failure occurs on subsequent calls to new or any of the functions which allocate memory from the heap.

The timing of the allocation failure depends on the type of allocation failure requested, i.e. on the value of aType.

The simulation of heap allocation failure is cancelled if aType is given the value RAllocator::ENone.

Notes:

1. If the failure type is RAllocator::EFailNext, the next attempt to allocate from the heap fails; however, no further failures will occur.

2. For failure types RAllocator::EFailNext and RAllocator::ENone, set aRate to 1.

Parameters

TBool aKernel

ETrue, if checking is being done for the kernel heap; EFalse, if checking is being done for the current thread's default heap.

RAllocator::TAllocFail aFail

An enumeration which indicates how to simulate heap allocation failure.

TInt aRate

The rate of failure; when aType is RAllocator::EDeterministic, heap allocation fails every aRate attempts.


__DbgSetBurstAllocFail(TBool,RAllocator::TAllocFail,TUint,TUint)

IMPORT_C static void __DbgSetBurstAllocFail(TBool aKernel, RAllocator::TAllocFail aFail, TUint aRate, TUint aBurst);

Description

Simulates a heap allocation failure for the current thread's default heap, or the kernel heap.

The aBurst failures will occur after subsequent calls to new or any of the functions which allocate memory from the heap.

The timing of the allocation failures will depend on the type of allocation failure requested, i.e. on the value of aType.

The simulation of heap allocation failure is cancelled if aType is given the value RAllocator::ENone.

Parameters

TBool aKernel

ETrue, if checking is being done for the kernel heap; EFalse, if checking is being done for the current thread's default heap.

RAllocator::TAllocFail aFail

An enumeration which indicates how to simulate heap allocation failure.

TUint aRate

The rate of failure; when aType is RAllocator::EDeterministic, heap allocation fails every aRate attempts.

TUint aBurst

The number of consecutive allocations that should fail.


__DbgCheckFailure(TBool)

IMPORT_C static TUint __DbgCheckFailure(TBool aKernel);

Description

Returns the number of heap allocation failures the current debug allocator fail function has caused so far.

This is intended to only be used with fail types RAllocator::EFailNext, RAllocator::EBurstFailNext, RAllocator::EDeterministic and RAllocator::EBurstDeterministic. The return value is unreliable for all other fail types.

Parameters

TBool aKernel

Return value

TUint

The number of heap allocation failures the current debug fail function has caused.

See also:


ValidateName(const TDesC &)

IMPORT_C static TInt ValidateName(const TDesC &aName);

Description

Checks whether a specified name is a valid CObject name.

A name is deemed to be invalid, if it contains any of the characters: "*", "?", ":" i.e. the characters: asterisk, question mark and single colon.

Parameters

const TDesC16 &aName

A reference to the descriptor containing the name to be checked.

Return value

TInt

KErrBadName, if the name is invalid. KErrNone, otherwise.


IMB_Range(TAny *,TAny *)

IMPORT_C static void IMB_Range(TAny *aStart, TAny *aEnd);

Description

Does the necessary preparations to guarantee correct execution of code in the specified virtual address range.

The function assumes that this code has been loaded or modified by user code. Calling this function against uncommitted memory region is considered as S/W bug and may generate exception on some memory models.

The specified addresses are associated with a user writable code chunk as created by RChunk::CreateLocalCode(TInt,TInt,TOwnerType).

The function cleans the data cache to ensure that written data has been committed to main memory and then flushes the instruction cache and branch target buffer (BTB) to ensure that the code is loaded from main memory when it is executed. The Kernel uses the size of the range specified to decide whether to clean/flush line-by-line or to simply clean/flush the entire cache.

Parameters

TAny *aStart

The start virtual address of the region.

TAny *aEnd

The end virtual address of the region. This location is not within the region.

See also:


CommandLineLength()

IMPORT_C static TInt CommandLineLength();

Description

Gets the length of the data which is passed as an argument to the thread function of the current process's main thread when it is first scheduled to run.

Return value

TInt

The length of the argument data.


CommandLine(TDes &)

IMPORT_C static void CommandLine(TDes &aCommand);

Description

Gets a copy of the data which is passed as an argument to the thread function of the current process's main thread when it is first scheduled to run.

Parameters

TDes16 &aCommand

A modifiable descriptor supplied by the caller into which the argument data is put. The descriptor must be big enough to contain the expected data, otherwise the function raises a panic.

See also:


ExceptionHandler()

IMPORT_C static TExceptionHandler ExceptionHandler();

Description

Gets a pointer to the exception handler for the current thread.

Return value

TExceptionHandler

A pointer to the exception handler.


SetExceptionHandler(TExceptionHandler,TUint32)

IMPORT_C static TInt SetExceptionHandler(TExceptionHandler aHandler, TUint32 aMask);

Description

Sets a new exception handler for the current thread. Note that the handler is not guaranteed to receive floating point exceptions (KExceptionFpe) when a hardware floating point implementation is in use - see User::SetFloatingPointMode(TFloatingPointMode,TFloatingPointRoundingMode) for hardware floating point modes and whether they cause user-trappable exceptions.

Parameters

TExceptionHandler aHandler

The new exception handler.

TUint32 aMask

One or more flags defining the exception categories which the handler can handle.

Return value

TInt

KErrNone if successful, otherwise another of the system-wide error codes.

See also:


ModifyExceptionMask(TUint32,TUint32)

IMPORT_C static void ModifyExceptionMask(TUint32 aClearMask, TUint32 aSetMask);

Description

Changes the set of exceptions which the current thread's exception handler can deal with.

aClearMask is the set of flags defining the set of exceptions which the exception handler no longer deals with, while aSetMask is the set of flags defining the new set of exceptions to be set.

Flag clearing is done before flag setting.

Parameters

TUint32 aClearMask

One or more flags defining the exceptions which the current exception handler no longer deals with.

TUint32 aSetMask

One or more flags defining the new set of exceptions which the current exception handler is to deal with.


RaiseException(TExcType)

IMPORT_C static TInt RaiseException(TExcType aType);

Description

Raises an exception of a specified type on the current thread.

If the thread has an exception handler to handle this type of exception, then it is called.

If the thread has no exception handler to handle this type of exception, then the function raises a USER-EXEC 3 panic.

Note that exception handlers are executed in the context of the thread on which the exception is raised; control returns to the point of the exception.

Parameters

TExcType aType

The type of exception.

Return value

TInt

KErrNone if successful, otherwise another of the system-wide error codes.


IsExceptionHandled(TExcType)

IMPORT_C static TBool IsExceptionHandled(TExcType aType);

Description

Tests whether the specified exception type can be handled by the current thread.

Parameters

TExcType aType

The type of exception.

Return value

TBool

True, if the thread has an exception handler which can handle an exception of type aType. False, if the thread has no exception handler or the thread has an exception handler which cannot handle the exception defined by aType.


Critical()

IMPORT_C static TCritical Critical();

Description

Gets the critical state associated with the current thread.

Return value

User::TCritical

The critical state.

See also:


Critical(RThread)

IMPORT_C static TCritical Critical(RThread aThread);

Description

Gets the critical state associated with the specified thread.

Parameters

RThread aThread

The thread whose critical state is to be retrieved.

Return value

User::TCritical

The critical state.

See also:


SetCritical(TCritical)

Capability: ProtServ if aCritical==ESystemCritical or ESystemPermanent

IMPORT_C static TInt SetCritical(TCritical aCritical);

Description

Sets up or changes the effect that termination of the current thread has, either on its owning process, or on the whole system.

The precise effect of thread termination is defined by the following specific values of the TCritical enum:

Notes:

  1. The enum value EAllThreadsCritical cannot be set using this function. It is associated with a process, not a thread, and, if appropriate, should be set using User::SetProcessCritical(TCritical).

  2. The states associated with ENotCritical, EProcessCritical, EProcessPermanent, ESystemCritical and ESystemPermanent are all mutually exclusive, i.e. the thread can only be in one of these states at any one time

Parameters

User::TCritical aCritical

The state to be set.

Return value

TInt

KErrNone, if successful; KErrArgument, if EAllThreadsCritical is passed - this is a state associated with a process, and you use User::SetProcessCritical(TCritical) to set it.

See also:


ProcessCritical()

IMPORT_C static TCritical ProcessCritical();

Description

Gets the critical state associated with the current process.

Return value

User::TCritical

The critical state.

See also:


ProcessCritical(RProcess)

IMPORT_C static TCritical ProcessCritical(RProcess aProcess);

Description

Gets the critical state associated with the specified process.

Parameters

RProcess aProcess

The process whose critical state is to be retrieved.

Return value

User::TCritical

The critical state.

See also:


SetProcessCritical(TCritical)

Capability: ProtServ if aCritical==ESystemCritical or ESystemPermanent

IMPORT_C static TInt SetProcessCritical(TCritical aCritical);

Description

Sets up or changes the effect that termination of subsequently created threads will have, either on the owning process, or on the whole system.

It is important to note that we are not referring to threads that have already been created, but threads that will be created subsequent to a call to this function.

The precise effect of thread termination is defined by the following specific values of the TCritical enum:

Notes:

  1. The enum values EProcessCritical and EProcessPermanent cannot be set using this function. They are states associated with a thread, not a process, and, if appropriate, should be set using User::SetCritical(TCritical).

  2. The states associated with ENotCritical, EAllThreadsCritical, ESystemCritical and ESystemPermanent are all mutually exclusive, i.e. the process can only be in one of these states at any one time.

Parameters

User::TCritical aCritical

The state to be set.

Return value

TInt

KErrNone, if successful; KErrArgument, if either EProcessCritical or EProcessPermanent is passed - these are states associated with a thread, and you use User::SetCritical(TCritical) to set them.

See also:


PriorityControl()

IMPORT_C static TBool PriorityControl();

Description

Tests whether the current process allows other processes to switch its priority between 'foreground' and 'background'.

Return value

TBool

True, if the current process allows other processes to switch its priority; false, otherwise.


SetPriorityControl(TBool)

IMPORT_C static void SetPriorityControl(TBool aEnable);

Description

Allows the current process to choose to have its priority switched by another process between 'foreground' and 'background'.

By default a process does not allow this.

Parameters

TBool aEnable

If ETrue, allows other processes to switch the current process's priority. If EFalse, prevents other processes from switching the current process's priority.


CreatorSecureId()

IMPORT_C static TSecureId CreatorSecureId();

Description

Return the Secure ID of the process that created the current process.

Return value

TSecureId

The Secure ID.


CreatorVendorId()

IMPORT_C static TVendorId CreatorVendorId();

Description

Return the Vendor ID of the process that created the current process.

Return value

TVendorId

The Vendor ID.


CreatorHasCapability(TCapability,const char *)

static inline TBool CreatorHasCapability(TCapability aCapability, const char *aDiagnostic=0);

Description

Check if the process that created the current process has a given capability

When a check fails the action taken is determined by the system wide Platform Security configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted. If PlatSecEnforcement is OFF, then this function will return ETrue even though the check failed.

Parameters

TCapability aCapability

The capability to test.

const char *aDiagnostic

A string that will be emitted along with any diagnostic message that may be issued if the test finds the capability is not present. This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro which enables it to be easily removed from the system.

Return value

TBool

ETrue if the creator process has the capability, EFalse otherwise.


CreatorHasCapability(TCapability,TCapability,const char *)

static inline TBool CreatorHasCapability(TCapability aCapability1, TCapability aCapability2, const char *aDiagnostic=0);

Description

Check if the process that created the current process has both of the given capabilities

When a check fails the action taken is determined by the system wide Platform Security configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted. If PlatSecEnforcement is OFF, then this function will return ETrue even though the check failed.

Parameters

TCapability aCapability1

The first capability to test.

TCapability aCapability2

The second capability to test.

const char *aDiagnostic

A string that will be emitted along with any diagnostic message that may be issued if the test finds a capability is not present. This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro which enables it to be easily removed from the system.

Return value

TBool

ETrue if the creator process has both the capabilities, EFalse otherwise.


ParameterLength(TInt)

IMPORT_C static TInt ParameterLength(TInt aSlot);

Description

Gets the length of the specified item of environment data belonging to the current process.

Environment data may be stored in the process and is passed to a child process on creation of that child process.

Parameters

TInt aSlot

An index that identifies the data item whose length is to be retrieved. This is an index whose value is relative to zero; i.e. 0 is the first item/slot. This can range from 0 to 15, i.e. there are 16 slots.

Return value

TInt

KErrNotFound, if there is no data; KErrArgument, if the data is not binary data; The length of the data item.

Panic codes

KERN-EXEC

51, if aSlot is negative or is greater than or equal to 16.


GetTIntParameter(TInt,TInt &)

IMPORT_C static TInt GetTIntParameter(TInt aSlot, TInt &aData);

Description

Gets the specified environment data item belonging to the current process; this is assumed to be a 32 bit value.

Environment data may be stored in the process and is passed to a child process on creation of that child process.

On successful return from this function, the data item is deleted from the process.

Parameters

TInt aSlot

An index that identifies the data item. This is an index whose value is relative to zero; i.e. 0 is the first item/slot. This can range from 0 to 15, i.e. there are 16 slots.

TInt &aData

On sucessful return, contains the environment data item.

Return value

TInt

KErrNone, if successful; KErrNotFound, if there is no data; KErrArgument, if the data is not binary data, or the data item in the process is longer than 32 bits.

Panic codes

KERN-EXEC

51, if aSlot is negative or is greater than or equal to 16.


GetDesParameter(TInt,TDes8 &)

IMPORT_C static TInt GetDesParameter(TInt aSlot, TDes8 &aDes);

Description

Gets the specified environment data item belonging to the current process; this is assumed to be an 8-bit descriptor.

Environment data may be stored in the process and is passed to a child process on creation of that child process.

On successful return from this function, the data item is deleted from the process.

Parameters

TInt aSlot

An index that identifies the data item. This is an index whose value is relative to zero; i.e. 0 is the first item/slot. This can range from 0 to 15, i.e. there are 16 slots.

TDes8 &aDes

On sucessful return, contains the environment data item; the length of the descriptor is set to the length of the data item.

Return value

TInt

KErrNone, if successful; KErrNotFound, if there is no data; KErrArgument, if the data is not binary data, or the data item in the process is longer than the maximum length of aDes.

Panic codes

KERN-EXEC

51, if aSlot is negative or is greater than or equal to 16.


GetDesParameter(TInt,TDes16 &)

IMPORT_C static TInt GetDesParameter(TInt aSlot, TDes16 &aDes);

Description

Gets the specified environment data item belonging to the current process; this is assumed to be an 16-bit descriptor.

Environment data may be stored in the process and is passed to a child process on creation of that child process.

On successful return from this function, the data item is deleted from the process.

Parameters

TInt aSlot

An index that identifies the data item. This is an index whose value is relative to zero; i.e. 0 is the first item/slot. This can range from 0 to 15, i.e. there are 16 slots.

TDes16 &aDes

On sucessful return, contains the environment data item; the length of the descriptor is set to the length of the data item.

Return value

TInt

KErrNone, if successful; KErrNotFound, if there is no data; KErrArgument, if the data is not binary data, or the data item in the process is longer than the maximum length of aDes.

Panic codes

KERN-EXEC

51, if aSlot is negative or is greater than or equal to 16.


RenameThread(const TDesC &)

IMPORT_C static TInt RenameThread(const TDesC &aName);

Description

Assigns a new name to the current thread, replacing any existing name that may have been set.

The new name must be a valid name and it must also be such that the thread's new fullname remains unique amongst threads. The length of the new name must be less than or equal to 80 (maximum length of kernel objects) otherwise a panic is raised.

Parameters

const TDesC16 &aName

A reference to the descriptor containing the new name for the thread.

Return value

TInt

KErrNone if successful, otherwise one of the other system-wide error codes.


RenameProcess(const TDesC &)

IMPORT_C static TInt RenameProcess(const TDesC &aName);

Description

Assigns a new name to the current process, replacing any existing name.

When a process is created, its default name is the name portion of the filename from which the executable is loaded.

The new name must be a valid name and it must also be such that the process's new fullname remains unique amongst processes.

Parameters

const TDesC16 &aName

A reference to the descriptor containing the new name of the process.

Return value

TInt

KErrNone, if successful, or if the new and old names are identical; KErrBadName, if aName is an invalid; otherwise one of the other system-wide error codes.


Identity()

static inline TUid Identity();

Description

Return value

TUid


CreatorIdentity()

static inline TUid CreatorIdentity();

Description

Return value

TUid

[Top]


Member enumerations


Enum TCritical

TCritical

Description

A set of values that defines the effect that terminating a thread has, either on its owning process or on the whole system.

A thread is said to be critical if its owning process or the entire system terminates when the thread itself terminates.

You pass one of these values to the functions:

The meaning of a value when passed to one function is different to its meaning when passed the other function. See the description of each individual value.

See also:

ENotCritical

This value can be passed to both:

  • User::SetCritical(TCritical), which means that the current thread is no longer critical, i.e. termination of the current thread will no longer cause termination of the current thread's owning process (i.e. the current process) or a reboot of the system.

  • User::SetProcessCritical(TCritical), which means that threads subsequently created in the current thread's owning process (i.e. the current process) will no longer cause termination of that process or a reboot of the system. Note, however, that existing threads are NOT affected when you call this function.

EProcessCritical

This value can only be passed to User::SetCritical(TCritical) and affects the current thread only.

It means that the owning process (i.e.the current process) terminates if:

  • the current thread is terminated.

  • the current thread panics.

EProcessPermanent

This value can only be passed to User::SetCritical(TCritical) and affects the current thread only.

It means that the owning process (i.e.the current process) terminates if the current thread terminates for any reason.

EAllThreadsCritical

This value can only be passed to User::SetProcessCritical(TCritical) and affects any new threads created in the current process.

It means that the current process terminates if:

  • any new thread subsequently created in the current process is terminated.

  • any new thread subsequently created in the current process panics.

Note, however, that existing threads in the current process are NOT affected when you call User::SetProcessCritical(TCritical) with this value.

ESystemCritical

This value can be passed to both: User::SetCritical(TCritical) and User::SetProcessCritical(TCritical).

When passed to User::SetCritical(TCritical), it means that the entire system is rebooted if:

  • the current thread is terminated.

  • the current thread panics.

When passed to User::SetProcessCritical(TCritical), it means that the entire system is rebooted if:

  • any new thread subsequently created in the current process is terminated.

  • any new thread subsequently created in the current process panics.

  • the process itself is terminated

  • the process itself panics

Note:

  1. existing threads in the current process are NOT affected when you call User::SetProcessCritical(TCritical) with this value.

  2. Only a process with 'Protected Server' capability can set a thread to system-critical.

ESystemPermanent

This value can be passed to both: User::SetCritical(TCritical) and User::SetProcessCritical(TCritical).

When passed to User::SetCritical(TCritical), it means that the entire system is rebooted if the current thread exits for any reason.

When passed to User::SetProcessCritical(TCritical), it means that the entire system is rebooted if any new thread subsequently created in the current process exits for any reason, or if the process itself exits for any reason.

Note:

  1. existing threads in the current process are NOT affected when you call User::SetProcessCritical(TCritical) with this value.

  2. Only a process with 'Protected Server' capability can set a thread to system-permanent.


Enum TRealtimeState

TRealtimeState

Description

A threads realtime state. Some non-realtime behaviour can be detected by the kernel. When it does so, action is taken depending on the thread state:

ERealtimeStateOff

Thread is not realtime

ERealtimeStateOn

Thread is realtime

ERealtimeStateWarn

Thread is realtime but doesn't want this enforced