kernel/eka/include/e32kpan.h
changeset 0 a41df078684a
child 19 4a8fed1c0ef6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/e32kpan.h	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,508 @@
+// Copyright (c) 1994-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\include\e32kpan.h
+// Kernel-generated panic codes
+// 
+//
+
+#ifndef __E32KPAN_H__
+#define __E32KPAN_H__
+#include <e32def.h>
+
+/**
+@publishedAll
+@released
+
+These panics represent program errors detected by the Kernel.
+Typically, they are caused by passing bad or contradictory parameters
+to functions. Threads that cause exceptions also raise a KERN-EXEC type panic.
+*/
+enum TKernelPanic
+    {
+    
+    /**
+    This panic is raised when the Kernel cannot find an object in
+    the object index for the current process, or current thread, using
+    a specified object index number (the raw handle number).
+    */
+	EBadHandle=0,
+	
+	/**
+	This is a general panic raised as a result of attempting 
+	some unauthorised activity such as trying to suspend a thread,
+	or trying to set the priority of a thread, when not authorised to do so.
+	*/
+	EAccessDenied=1,
+	
+	/**
+	This panic is raised by the kernel when opening a kernel side object,
+	a DObject type, and the fullname is invalid.
+	*/
+	EBadName=2,
+	
+	/**
+	This panic is raised when an unhandled exception occurs.
+	Exceptions have many causes, but the most common are access violations
+	caused, for example, by dreferencing NULL.
+	
+	Among other possible causes are:
+	general protection faults, executing an invalid instruction,
+	alignment checks, etc.
+	*/
+	ECausedException=3,
+	
+	/**
+	Not used.
+	*/
+	ECompletion=4,
+	
+	/**
+	Not used.
+	*/
+	ELeaveWithoutTrap=5,
+	
+	/**
+	This panic is raised by the kernel when a handle to a code segment
+	is invalid.
+	*/
+	EBadCodeSegHandle=6,
+	
+	/**
+	Not used.
+	*/
+	ESegmentWriteOutOfRange=7,
+	
+	/**
+	Not used.
+	*/
+	EChunkSizeTooBig=8,
+	
+	/**
+	This is a general panic raised by the kernel when an attempt
+	is made to issue a request when one is already outstanding, and only one
+    outstanding request is permitted at any one time.
+	*/
+	ERequestAlreadyPending=9,
+	
+	/**
+	This panic is raised by the Request() member function of
+	the DLogicalChannel() kernel object when the request number passed
+	to the function is smaller than the permitted minimum.
+	
+	@see DLogicalChannel::EMinRequestId
+	*/
+	ERequestNoInvalid=10,
+	
+	/**
+	This panic is raised when creating a logical channel, and the unit number
+	is outside the permitted range.
+	
+	If unit numbers are not permmitted, the unit number value
+	must be KNullUnit.
+	If unit numbers are permitted, the unit number value must
+	be less than KMaxUnits.
+	*/
+	EBadUnitNumber=11,
+	
+	/**
+	This panic is raised by the kernel if an event capture
+	hook has already been designated.
+	*/
+	EEventAlreadyCaptured=12,
+	
+	/**
+	This panic is raised by the kernel if the current thread is not
+	the designated event capture hook.
+	*/
+	EEventNotCaptured=13,
+	
+	/**
+	This panic is raised when an attempt is made to set the priority of
+	a thread or process to an illegal value.
+	*/
+	EBadPriority=14,
+	
+	/**
+	This panic is raised when a timer event is requested from an asynchronous
+	timer service, an RTimer, and a timer event is already outstanding.
+	It is caused by calling either the At(), After() or Lock() member functions
+	after a previous call to any of these functions but before the timer event
+	requested by those functions has completed.
+	*/
+	ETimerAlreadyPending=15,
+	
+	/**
+	Not used.
+	*/
+	EAlreadyLoggedOn=16,
+	
+	/**
+	The panic is raised if kernel heap checking has failed.
+	*/
+	EFailedKernelHeapCheck=17,
+	
+	/**
+	Not used.
+	*/
+	ERequestFromWrongThread=18,
+
+    /**
+    This panic is raised by the Kernel when a server program issues a request
+    to receive a message, i.e. when it calls the Receive() member function
+    of RServer, the handle to the Kernel side server object.
+    
+    The panic occurs when a receive message request has previously been made
+    and is still outstanding.
+    */
+	EMesAlreadyPending=19,
+	
+	/**
+	This panic is raised by the Kernel when a request for an event
+	(as originated by a call to UserSvr::RequestEvent()) is made while
+	a previously made request is still outstanding.
+	*/
+	EEventRequestPending=20,
+	
+	/**
+	Not used.
+	*/
+	EIllegalWsProcess=21,
+	
+	/**
+	Not used.
+	*/
+	EHardwareNotAvailable=22,
+	
+	/**
+	This panic is raised when attempting to create a session with a server,
+	and access is been denied.
+	*/
+	EUnsharableSession=23,
+	
+	/**
+	This panic is raised when writing global DLL data, and the length of
+	data to be written is greater than the space available.
+	*/
+	EDesOverflow=24,
+	
+	/**
+	This panic is raised when searching for objects, using the internal
+	function TFindHandleBase::NextObject(), and an invalid object type
+	is specified.
+	*/
+	EBadObjectType=25,
+	
+	/**
+	This panic is raised by kernel side code that implements heap debugging
+	behaviour, when a specific debug request is not recognised.
+	*/
+	EBadKernelHeapDebugFunction=26,
+	
+	/**
+	This panic is raised when an executive call is made with an invalid call
+	number.
+	*/
+	EInvalidSystemCall=27,
+	
+	/**
+	Not used.
+	*/
+	ESetSessionPtrInvalidMessage=28,
+	
+	/**
+	Not used.
+	*/
+	ECompleteDisconnectInvalidMessage=29,
+	
+	/**
+	This panic is raised when an attempt is being made to send 
+	a synchronous message to a server more than once, using
+	the current thread's dedicated synchronous message.
+	*/
+	ESyncMsgSentTwice=30,
+	
+	/**
+	Not used.
+	*/
+	EAutoAttachFailed=31,
+	
+	/**
+	This panic is called by DProcess::Resume() when trying to resume
+	a process that is still being loaded.
+	*/
+	EProcessNotLoaded=32,
+	
+	/**
+    This panic is raised in a call to Kern::KUDesInfo(), Kern::KUDesPut() etc
+    when an invalid descriptor is passed.
+	*/
+	EKUDesInfoInvalidType=33,
+	
+	/**
+	This panic is raised in a call to Kern::KUDesSetLength() & Kern::KUDesPut()
+	when the descriptor passed to it is not a modifiable type.
+	*/
+	EKUDesSetLengthInvalidType=34,
+	
+	/**
+	This panic is raised in a call to Kern::KUDesSetLength() & Kern::KUDesPut()
+	when the length of the source descriptor is longer than the length of
+	the target descriptor.
+	*/
+	EKUDesSetLengthOverflow=35,
+	
+	/**
+	This panic is raised by the kernel side code that implements the setting
+	of the currency symbol when the length of the currency symbol is 
+    greater than KMaxCurrencySymbol. 
+	*/
+	EBadParameter=36,
+	
+	/**
+	This panic is raised by kernel code when it tries to acquire the process
+	DLL lock just before a load, and the wait DLL lock is invalid.
+	*/
+	EWaitDllLockInvalid=37,
+	
+	/**
+	This panic is raised by internal kernel code when an illegal attempt
+	is made to attatch to a library.
+	*/
+	ELibraryAttachInvalid=38,
+	
+	/**
+	This panic is raised when extracting a list of DLL entry points
+	and the number exceeds the maximum permitted.
+	*/
+	ETooManyEntryPoints=39,
+	
+	/**
+	This panic is raised by internal kernel code when an illegal attempt
+	is made to detach a library.
+	*/
+	ELibraryDetachInvalid=40,
+	
+	/**
+	This panic is raised by internal kernel code when an illegal attempt
+	is made to attach to a library.
+	*/
+	ELibraryAttachedInvalid=41,
+
+	/**
+	This panic is raised by internal kernel code when an illegal attempt
+	is made to detach a library.
+	*/
+	ELibraryDetachedInvalid=42,
+
+	/**
+	This panic is raised by kernel code when it tries to release the process DLL lock
+	when a load fails, and the release DLL lock is invalid.
+	*/
+	EReleaseDllLockInvalid=43,
+	
+	/**
+	This panic is raised when a bad message handle is passed to the kernel.
+	This usually occurs when using methods on the RMessagePtr2 or RMessage2 classes
+	after the message has been completed; or when the iHandle data member has become
+	corrupted.
+	*/
+	EBadMessageHandle=44,
+	
+	/**
+	Not used.
+	*/
+	EInvalidMessageParameter=45,
+	
+	/**
+	This panic can be raised as a result of a call to one of a large
+	number of functions. In general, the panic indicates an attempt to perform an
+	operation on a thread or process by code running in another process - violating
+	the security principle of process isolation. 
+		
+	There are exceptions to this general rule, for example, where the
+	panic is raised because the calling process has insufficient capability. The
+	precise reason is stated with the function(s). 
+	
+	-# The panic is raised on a call to the following function if the
+	   process owning the thread performing the call is not the creator of the target
+	   process or, if a handle is specified, the handle is not local.
+	   - RProcess::SetParameter()
+	   .
+	-# The panic is raised on a call to the following functions if the
+	   process owning the thread performing the call is not the same as the target
+	   process.\n
+	   - RProcess::Kill()
+	   - RProcess::Terminate()
+	   - RProcess::Panic()
+	   - RProcess::SetJustInTime()
+	   - RProcess::Resume()
+	   - RThread::Kill()
+	   - RThread::Terminate()
+	   - RThread::Panic()
+	   - RThread::Suspend()
+	   - RThread::Resume()
+	   - RThread::SetPriority()		 
+	   - RThread::RequestComplete()
+	   - RThread::RequestSignal()		 
+	   .  
+	   NOTE: the creator of a new process can kill or panic the new
+	   process, change the new process priority and set the new process startup
+	   parameters until the process is resumed (which the creator can also do). After
+	   the new process has been resumed, then it becomes totally independent of its
+	   creator, and any attempt to panic it, kill it etc will raise the KERN-EXEC 46
+	   panic.
+	-# The panic is raised on call to the following (Symbian partner
+	   only) functions if the calling process does not have the PowerMgmt
+	   capability (TCapability::ECapabilityPowerMgmt): 
+	   - Power::PowerDown()
+	   - Power::EnableWakeupEvents()
+	   - Power::DisableWakeupEvents()
+	   - Power::RequestWakeupEventNotification()
+	   - Power::CancelWakeupEventNotification()
+	   .
+	-# The panic is raised on call to the following functions if the
+	   calling process does not have the WriteDeviceData capability
+       (TCapability::ECapabilityWriteDeviceData): 
+	   - User::SetMachineConfiguration()
+	   - User::SetHomeTime()
+	   - User::SetUTCTime()
+	   - User::SetUTCOffset()
+	   - User::SetUTCTimeAndOffset()
+	   .
+	-# The panic is raised on call to the following function if the
+	   calling process does not have the ReadDeviceData capability
+	   (TCapability::ECapabilityReadDeviceData): 		  
+	   - User::MachineConfiguration()
+	   .
+	*/
+	EPlatformSecurityTrap=46,
+	
+	/**
+	This panic is raised when the user issues a request to be notified of
+	messages or the availability of space, when a request has already been
+	issued and is still outstanding.
+	
+	@see RMsgQueue
+	*/
+	EMsgQueueRequestPending=47,
+	
+	/**
+	This panic is raised when creating a message queue and the size of
+	the template parameter is invalid.
+	
+	@see RMsgQueue
+	*/
+	EMsgQueueInvalidLength=48,
+	
+	/**
+	This panic is raised when creating a message queue and the specified number
+	of slots is not positive.
+	
+	@see RMsgQueue
+	*/
+	EMsgQueueInvalidSlots=49,
+	
+	/**
+	This panic is raised if an attempt is made to cancel an outstanding request 
+	to be notified of messages or the availability of space, and the cancel is
+	being made by a thread in a different process.
+	*/
+	EMsgQueueIllegalCancel=50,
+	
+	/**
+	This panic is raised by RProcess::Setparameter()
+	if a slot value is invalid.
+	*/
+	EParameterSlotRange=51,
+	
+	/**
+	This panic is raised by RProcess::Setparameter()
+	if a slot is in use.
+	*/
+	EParameterSlotInUse=52,
+	
+	/**
+	This panic is raised by RProcess::Setparameter()
+	if the length of the data passed is negative.
+	*/
+	EParameterSlotDataLength=53,
+	
+	/**
+	This panic is raised by RCondVar::Wait() when the current thread does
+	not hold the specified mutex.
+	*/
+	ECondVarWaitMutexNotLocked=54,
+	
+	/**
+	This panic is raised when a call is made to RThread::GetDesMaxLength(),
+	which is obsolete.
+	*/
+	EObsoleteFunctionality=55,
+
+	/**
+	This panic is raised on a process which has not yet been resumed and whoes
+	creator has died.
+	*/
+	EZombieProcessKilled=56,
+
+	/**
+	A connect message was sent to a session that has already been successfully
+	connected to the server (cookie is non-NULL).
+	*/
+	ESessionAlreadyConnected=57,
+
+	/**
+	A session tried to set the kernel session cookie to a null value
+	*/
+	ESessionNullCookie=58,
+
+	/**
+	A session tried to set the kernel session cookie twice
+	*/
+	ESessionCookieAlreadySet=59,
+
+	/**
+	A session tried to set the kernel session cookie with a message
+	that wasn't the connect message
+	*/
+	ESessionInvalidCookieMsg=60,
+
+	/**
+	A realtime thread executed a non-realtime function.
+	*/
+	EIllegalFunctionForRealtimeThread=61,
+
+	/**
+	This panic is raised by Kern::SetThreadRealtimeState when the state argument is invalid.
+	*/
+	EInvalidRealtimeState=62,
+
+	/**
+	A bad descriptor was passed to a server over IPC, causing an exception when the kernel tried to
+	update its length field.
+	*/
+	EBadIpcDescriptor=63,
+
+	/**
+	An invalid notification type was passed to a shared buffers exec call handler.
+	*/
+	EShBufExecBadNotification=64,
+
+	/**
+	An invalid parameter was passed to a shared buffers exec call handler.
+	*/
+	EShBufExecBadParameter=65,
+	};
+
+#endif