williamr@4: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // Definitions used between the Core Dump Server interface library and the server. williamr@4: // williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: williamr@4: #ifndef CORE_DUMP_SERVER_API_H williamr@4: #define CORE_DUMP_SERVER_API_H williamr@4: williamr@4: #include williamr@4: williamr@4: /** Core Dump Server executable name */ williamr@4: _LIT(KCoreDumpServerName, "coredump_svr"); williamr@4: williamr@4: /** Core Dump Server UID */ williamr@4: const TUid KCoreDumpServUid = { 0x10282FE5 }; williamr@4: williamr@4: /** Core Dump Server major version */ williamr@4: const TUint KCoreDumpServMajorVersionNumber=1; williamr@4: williamr@4: /** Core Dump Server minor version */ williamr@4: const TUint KCoreDumpServMinorVersionNumber=0; williamr@4: williamr@4: /** Core Dump Server build number */ williamr@4: const TUint KCoreDumpServBuildVersionNumber=1; williamr@4: williamr@4: /** williamr@4: Core Dump Server client-server requests williamr@4: @internalTechnology williamr@4: */ williamr@4: enum TCoreDumpServRqst williamr@4: { williamr@4: /** Obtain a plugin list. williamr@4: @see RCoreDumpSession::GetPluginListL(). */ williamr@4: ECoreDumpServGetPluginList, williamr@4: williamr@4: /** Generic call to obtain data about a list from the Core Dump Server. williamr@4: @see RCoreDumpSession::GetListLC(). */ williamr@4: ECoreDumpGetListInfo, williamr@4: williamr@4: /** Generic call to obtain the list from the Core Dump Server. williamr@4: @see RCoreDumpSession::GetListLC(). */ williamr@4: ECoreDumpGetListData, williamr@4: williamr@4: /** Request the loading or unloading of a plugin. williamr@4: @see RCoreDumpSession::PluginRequestL(). */ williamr@4: ECoreDumpPluginRequest, williamr@4: williamr@4: /** Obtain the current number of configuration parameters. williamr@4: @see RCoreDumpSession::GetNumberConfigParametersL(). */ williamr@4: ECoreDumpGetNumberConfigParams, williamr@4: williamr@4: /** Obtain a configuration parameter. williamr@4: @see RCoreDumpSession::GetConfigParameterL(). */ williamr@4: ECoreDumpGetConfigParam, williamr@4: williamr@4: /** Change a configuration parameter. williamr@4: @see RCoreDumpSession::SetConfigParameterL(). */ williamr@4: ECoreDumpSetConfigParam, williamr@4: williamr@4: williamr@4: /** Unused */ williamr@4: ECoreDumpAttachThread, williamr@4: williamr@4: /** Unused */ williamr@4: ECoreDumpDetachThread, williamr@4: williamr@4: /** Unused */ williamr@4: ECoreDumpAttachProcess, williamr@4: williamr@4: /** Unused */ williamr@4: ECoreDumpDetachProcess, williamr@4: williamr@4: /** Request the observation of a target or the cancellation of an observation. williamr@4: @see RCoreDumpSession::ObservationRequestL(). */ williamr@4: ECoreDumpObservationRequest, williamr@4: williamr@4: /** Request the restoration of a configuration. williamr@4: @see RCoreDumpSession::LoadConfigL(). */ williamr@4: ECoreDumpLoadConfig, williamr@4: williamr@4: /** Request the saving of a configuration. williamr@4: @see RCoreDumpSession::SaveConfigL(). */ williamr@4: ECoreDumpSaveConfig, williamr@4: williamr@4: /** Guard */ williamr@4: ECoreDumpServEndMarker williamr@4: williamr@4: }; williamr@4: williamr@4: /** Number of asynchronous requests */ williamr@4: #define KTTMaxAsyncRequests (4) williamr@4: williamr@4: /** Default number of message slots per session williamr@4: Same as KTTMaxAsyncRequests as synchronous requests provided williamr@4: by framework */ williamr@4: #define KTTDefaultMessageSlots (KTTMaxAsyncRequests) williamr@4: williamr@4: williamr@4: /** williamr@4: @internalTechnology williamr@4: Number of plugin details in a plugin transfer block. williamr@4: Used between server library and cds williamr@4: */ williamr@4: #define KNumPluginDetails 5 williamr@4: williamr@4: williamr@4: /** williamr@4: @internalTechnology williamr@4: Class used for transfering fixed sized blocks of plugin information williamr@4: between the Core Dump Server and its clients. This makes it easier williamr@4: accross the client/server interface. williamr@4: @see TPluginInfo williamr@4: */ williamr@4: class TPluginInfoBlock williamr@4: { williamr@4: public: williamr@4: williamr@4: /** williamr@4: A simple array is used as the transfer block across the williamr@4: process boundary. williamr@4: */ williamr@4: TPluginInfo plugins[ KNumPluginDetails ]; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: Enumerations that identify the RProperty objects shared between various parts williamr@4: of the core dump server system, plugins and clients. williamr@4: williamr@4: The properties are defined by the Core Dump Session at startup. williamr@4: These properties have the uid of the Core Dump Server. williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: @see CCoreDumpSession::ConstructL(). williamr@4: */ williamr@4: enum TCrashProgress williamr@4: { williamr@4: /** Current crash status. Updated by formatters during a crash. williamr@4: RProperty of type RProperty::EText. */ williamr@4: ECrashProgress, williamr@4: williamr@4: /** Cancels the generation of a crash when set to non-zero. williamr@4: RProperty of type RProperty::EInt. */ williamr@4: ECancelCrash, williamr@4: williamr@4: /** Number of crashes served by this session of the Core Dump Server. williamr@4: RProperty of type RProperty::EInt. */ williamr@4: ECrashCount williamr@4: }; williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: williamr@4: Class for requesting lists from the Core Dump Server. williamr@4: The requestor appends the results of each request to obtain an entire list. williamr@4: Uses "TInfoBlock" classes to transfer data accross the process boundary. williamr@4: */ williamr@4: class TListRequest williamr@4: { williamr@4: public: williamr@4: williamr@4: /** Type of data to supply for this request */ williamr@4: enum TListRequestType williamr@4: { williamr@4: /** This request is for the formatter plugin list */ williamr@4: EFormatterList, williamr@4: williamr@4: /** This request is for the writer plugin list */ williamr@4: EWriterList, williamr@4: williamr@4: /** This request is for the thread list */ williamr@4: EThreadList, williamr@4: williamr@4: /** This request is for the process list */ williamr@4: EProcessList, williamr@4: williamr@4: /** This request is for the executable list */ williamr@4: EExecutableList, williamr@4: williamr@4: /** williamr@4: @internalTechnology williamr@4: Last marker williamr@4: */ williamr@4: EUnknownRequest williamr@4: williamr@4: }; williamr@4: williamr@4: /** Type of data to supply for this request */ williamr@4: TListRequestType iListType; williamr@4: williamr@4: /** Sub identifiers for the request. These are auxiliary ids that williamr@4: can be used to refine the request. */ williamr@4: TUint32 iSubId1; williamr@4: TUint32 iSubId2; williamr@4: williamr@4: /** Requestor sets iIndex. iIndex==0 means the supplier should refresh the williamr@4: list and supply from index 0. iIndex > 0 means supply element williamr@4: [iIndex-1] and onwards. Requestor should thus increase iIndex williamr@4: by how many elements were supplied on each call. */ williamr@4: TUint iIndex; williamr@4: williamr@4: /** Supplier writes iSupplied according to how many items williamr@4: it copied into the buffer on this call */ williamr@4: TUint iSupplied; williamr@4: williamr@4: /** Supplier writes iRemaining to indicate how many items it williamr@4: has yet to supply. */ williamr@4: TUint iRemaining; williamr@4: williamr@4: /** Number of bytes required to hold the resulting data */ williamr@4: TUint iRequiredDescriptorSize; williamr@4: williamr@4: /** williamr@4: Spare variables for future expansion. williamr@4: @internalTechnology */ williamr@4: TUint32 iSpare0; williamr@4: /** @internalTechnology */ williamr@4: TUint32 iSpare1; williamr@4: /** @internalTechnology */ williamr@4: TUint32 iSpare2; williamr@4: /** @internalTechnology */ williamr@4: TUint32 iSpare3; williamr@4: williamr@4: }; williamr@4: williamr@4: williamr@4: williamr@4: #endif // CORE_DUMP_SERVER_API_H