.ad 8
.bm 8
.fm 4
.bt $Copyright by   Software AG, 1993$$Page %$
.tm 12
.hm 6
.hs 3
.tt 1 $NME$Project Distributed Database System$vos00cnc$
.tt 2 $$$
.tt 3 $R.Roedling$RTE console include module$1997-08-18$
***********************************************************
.nf


    ========== licence begin LGPL
    Copyright (C) 2002 SAP AG

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    ========== licence end

.fo
.nf
.sp
Module  : RTE_console_include_module
=========
.sp
Purpose :
.CM *-END-* purpose -------------------------------------
.sp
.cp 3
Define  :

.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :

.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :

.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  : R.Roedling
.sp
.cp 3
Created : 1992-10-10
.sp
.cp 3
Version : 1994-01-27
.sp
.cp 3
Release :  7.0 	 Date : 1997-08-18
.br
.sp
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Specification:

.CM *-END-* specification -------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:

.CM *-END-* description ---------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.nf
.oc _/1
Structure:

.CM *-END-* structure -----------------------------------
.sp 2
**********************************************************
.sp
.cp 10
.nf
.oc _/1
.CM -lll-
Code    :
/*PRETTY*/
//
// +---------------------------------------------------------------+
// |   DEFINES                                                     |
// +---------------------------------------------------------------+
//
#define CON_REQ_TASK                    1
#define CON_REQ_IO                      2
#define CON_REQ_REGION                  3
#define CON_REQ_STORAGE                 4
#define CON_REQ_STATE                   5
#define CON_REQ_RTE                     6
#define CON_REQ_CANCEL                  7
#define CON_REQ_KILL                    8
#define CON_REQ_TASK_STAT               9
#define CON_REQ_TASK_COUNTS            10
#define CON_REQ_QUEUE_STAT             11
#define CON_REQ_TOTAL_COUNTS           12
#define CON_REQ_ENABLE_TIME_MEASURE    13
#define CON_REQ_DISABLE_TIME_MEASURE   14
#define CON_REQ_UKT_SLEEPTIME_STAT     15
#define CON_REQ_SHOW_SUSPENDS          16
#define CON_REQ_CRASH_DUMP             17

#define CON_REQ_RES_IO                 18
#define CON_REQ_RES_REGION             19
#define CON_REQ_RES_TASK_COUNTS        20
#define CON_REQ_RES_UKT_SLEEPTIME_STAT 21
#define CON_REQ_RES_QUEUE_STAT         22
#define CON_REQ_RES_SUSPENDS           23
#define CON_REQ_RES_ALL                24

#define CON_REQ_GETPARAM               25
#define CON_REQ_PUTPARAM               26
#define CON_REQ_SET_DEBUGLEVEL         27

#define CON_REQ_UKT_QUEUES             28
#define CON_REQ_SET_UKT_AFFINITY       30

#define CON_REQ_AIO                    31
//
// --- RTE return codes ( cancel and kill )
//
#define CON_NO_ERROR                    0
#define CON_ERROR                       1
#define CON_WRONG_TASK                  2
#define CON_WRONG_TASK_TYPE             3
#define CON_WRONG_UKT                   4
#define CON_NO_PROCESSOR                5


#define SHOW_TASK_ALL                   1
#define SHOW_ACTIVE_TASK                2
#define SHOW_RUN_TASK                   3

#define XIS_TASK_TO_SHOW(show_id,pTaskCtrl)                \
       (( show_id == SHOW_TASK_ALL     &&                 \
          ( pTaskCtrl->TaskState != TSK_INITIALIZED ||    \
            pTaskCtrl->TaskType  == TT_SV                 \
          )                                               \
        ) ||                                              \
        ( show_id == SHOW_ACTIVE_TASK  &&                 \
          pTaskCtrl->TaskType  != TT_TI           &&      \
          pTaskCtrl->TaskState != TSK_INITIALIZED &&      \
          pTaskCtrl->TaskState != TSK_CONNECTWAIT &&      \
          pTaskCtrl->TaskState != TSK_VRECEIVE    &&      \
          (pTaskCtrl->TaskState != TSK_VSUSPEND   ||      \
           pTaskCtrl->TaskType  == TT_US )                \
        ))

//
// +---------------------------------------------------------------+
// |   TYPEDEFS AND STRUCTS                                        |
// +---------------------------------------------------------------+
//

//
// --- Common DEV info structs
//
typedef struct cons_dev_info_record
  {
  ULONG                           ulDevspaceNo;
  tsp2_devnameC                   DevspaceName;
  ULONG                           ulReadCnt;
  ULONG                           ulWriteCnt;
  } CONS_DEV_INFO_REC;

typedef CONS_DEV_INFO_REC         *PCONS_DEV_INFO_REC;

typedef struct cons_devi_info_record
  {
  TID                             Tid;
  tsp2_devnameC                   DevspaceName;
  LONG                            ulDEViIndex;
  ULONG                           ulDevspaceNo;
  DEVIO_STATISTIC_REC             DevIOStat ;
  } CONS_DEVI_INFO_REC;

typedef CONS_DEVI_INFO_REC        *PCONS_DEVI_INFO_REC;

typedef struct cons_asynci_info_record
  {
  TID                             Tid;
  VFILENAMEC                      szLogDeviceName;
  BOOL                            fForWriting;
  BOOL                            ulBlockSize;
  BOOL                            ulMaxBlockCnt;
  DEVIO_STATISTIC_REC             DevIOStat ;
  } CONS_ASYNCI_INFO_REC;

typedef CONS_ASYNCI_INFO_REC      *PCONS_ASYNCI_INFO_REC;


//
// --- Task info
//
typedef struct cons_single_task_info_record
  {
  ULONG                           ulTaskIndex;
  TID                             Tid;
  PID                             ApplPid;            // - process id of connected user procces
  SQL_NODEIDC                     szClientNode;
  ULONG                           ulStateReason;      // - more state infos
  ULONG                           ulTaskTimeOut;      // - time for task's timeout if still in VRECEIVE
  REGION_ID                       Sid;
  ULONG                           ulBegExclCnt;
  ULONG                           ulWaitForTask;
  ULONG                           ulWaitForDevno ;
  ULONG                           ulWaitForRoot ;
  UINT1                           TaskState;          // - task state (TSK_RUNNING,...)
  UINT1                           TaskType;           // - task type (TT_US,...)
  UINT1                           PrioFlag;
  UINT1                           SavePrioFlag;
  UINT1                           QueLocation;
  } CONS_SINGLE_TASK_INFO_REC;

typedef CONS_SINGLE_TASK_INFO_REC *PCONS_SINGLE_TASK_INFO_REC;


typedef struct cons_task_info_record
  {
  BOOL                            fInfoAvailable;
  UINT1                           StateToShow ;
  UINT1                           TypeToShow ;
  LONG                            lNumOfActiveTasks;
  ULONG                           ulTaskInfoOffset;        // - CONS_SINGLE_TASK_INFO_REC * 'MAX_TASKS'
  } CONS_TASK_INFO_REC;

typedef CONS_TASK_INFO_REC        *PCONS_TASK_INFO_REC;


//
// --- IO info
//
typedef struct cons_io_info_record
  {
  BOOL                            fInfoAvailable;
  LONG                            lNumOfDevspaces;
  ULONG                           ulDevspaceInfoOffset;    // - CONS_DEV_INFO_REC  * 'MAX_DEVSPACES'
  } CONS_IO_INFO_REC;

typedef CONS_IO_INFO_REC          *PCONS_IO_INFO_REC;

//
// --- AIO info
//
typedef struct cons_aio_info_record
  {
  BOOL                            fInfoAvailable;
  LONG                            lNumOfASYNCis;
  ULONG                           ulASYNCiInfoOffset;      // - CONS_ASYNCI_INFO_REC * 'MAX_DEVSPACES' + 'MAX_BACKUP_DEVS'
  } CONS_AIO_INFO_REC;

typedef CONS_AIO_INFO_REC         *PCONS_AIO_INFO_REC;

//
// --- Region info
//
typedef struct cons_single_sem_info_record
  {
  ULONG                           ulSid;
  ULONG                           ulOwnerTaskIndex;
  C8C                             szSemaName;
  ULONG                           lGetCount;
  ULONG                           lBegExclTasCount;
  ULONG                           lEndExclTasCount;
  ULONG                           lCollisionCount;
  ULONG                           lWaitCount;
  LONG                            lExclusive;
  ULONG                           lNumWaitTasks;
  ULONG                           ulWaitTaskOffset;        // - ULONG * 'MAX_TASKS'
  } CONS_SINGLE_SEM_INFO_REC;

typedef CONS_SINGLE_SEM_INFO_REC  *PCONS_SINGLE_SEM_INFO_REC;


typedef struct cons_sem_info_record
  {
  BOOL                            fInfoAvailable;

  LONG                            lNumOfSems;
  ULONG                           ulSingleSemInfoOffset;   // - CONS_SINGLE_SEM_INFO_REC * 'MAX_SEMAPHORES'
  } CONS_SEM_INFO_REC;

typedef CONS_SEM_INFO_REC         *PCONS_SEM_INFO_REC;



//
// --- Storage info
//

typedef struct cons_task_storage_info_record
  {
  ULONG                           ulTaskIndex;
  UINT1                           TaskType;           // - task type (TT_US,...)
  ULONG                           ulStackUsed;
  ULONG                           ulStackFree;
  } CONS_TASK_STORAGE_INFO_REC;

typedef CONS_TASK_STORAGE_INFO_REC *PCONS_TASK_STORAGE_INFO_REC;


typedef struct cons_storage_info_record
  {
  BOOL                            fInfoAvailable;

  LONG                            lDynDatAvail;
  LONG                            lDynDatUsed;
  LONG                            lDynPoolAvail;
  LONG                            lDynPoolUsed;
  LONG                            lTaskStacks;
  ULONG                           ulRTEAllocPoolMax;
  ULONG                           ulRTEAllocPoolUsed;
  ULONG                           ulRTEAllocPoolCnt;
  ULONG                           ulKernelAllocPoolMax;
  ULONG                           ulKernelAllocPoolUsed;
  ULONG                           ulKernelAllocPoolCnt;
  ULONG                           ulKGSSize;
  ULONG                           ulKSSSize;
  ULONG                           ulTasksTotal;
  LONG                            lNumOfTasks;
  ULONG                           ulTaskStorInfoOffset;    // - CONS_TASK_STORAGE_INFO_REC * 'MAX_TASKS'
  } CONS_STORAGE_INFO_REC;

typedef CONS_STORAGE_INFO_REC     *PCONS_STORAGE_INFO_REC;



//
// --- State info
//
typedef struct cons_state_info_record
  {
  BOOL                            fInfoAvailable;
  UINT1                           DatabaseState;         // - Database state
  } CONS_STATE_INFO_REC;

typedef CONS_STATE_INFO_REC       *PCONS_STATE_INFO_REC;

typedef struct cons_set_ukt_affinity_record
  {
  USHORT                          usReturnCode;
  ULONG                           ulUKTIndex;
  BOOL                            fReturnCodeAvailable;
  } CONS_SET_UKT_AFFINITY_REC;

typedef CONS_SET_UKT_AFFINITY_REC *PCONS_SET_UKT_AFFINITY_REC;


//
// --- RTE info
//
typedef struct cons_ukt_info_record
  {
  ULONG                           ulUKTIndex;
  TID                             Tid;
  INT4                            ThrdState;
  double                          dDispatcherCalls;
  ULONG                           ulActiveTasks;
  ULONG                           ulTotalTasks;
  CHAR                            szCluster[80];
  ULONG                           ulProcessor;
  LONG                            lNumOfDevspaces;
  ULONG                           ulDevspaceInfoOffset;    // - CONS_DEV_INFO_REC  * 'MAX_DEVSPACES'
  } CONS_UKT_INFO_REC;

typedef CONS_UKT_INFO_REC         *PCONS_UKT_INFO_REC;

typedef struct cons_dev_worker_info_record
  {
  TID                             Tid;
  INT4                            ThrdState;
  ULONG                           ulIOCount;
  } CONS_DEV_WORKER_INFO_REC;

typedef CONS_DEV_WORKER_INFO_REC *PCONS_DEV_WORKER_INFO_REC;


typedef struct cons_rte_info_record
  {
  BOOL                            fInfoAvailable;

  LONG                            lNumOfDevWorkers;
  ULONG                           ulDevWorkerInfoOffset;

  LONG                            lNumOfUKTs;
  ULONG                           ulUKTInfoOffset;         // - CONS_UKT_INFO_REC * 'MAXUKT'

  LONG                            lNumOfDEVis;
  ULONG                           ulDEViInfoOffset;        // - CONS_DEVI_INFO_REC * 'MAX_DEVSPACES' * 'MAX_DEVI_P_DEVSPACE'

  ULONG                           ulNumOfConcurrentDevWorkers;
  LONG                            lTraceDevspaceNo;
  TID                             CoordTid;
  UINT1                           CoordState;
  TID                             ConsoleTid;
  UINT1                           ConsoleState;
  TID                             TimerTid;
  UINT1                           TimerState;
  TID                             ClockTid;
  UINT1                           ClockState;
  TID                             Dev0Tid;
  UINT1                           Dev0State;
  TID                             Async0Tid;
  UINT1                           Async0State;
  TID                             RequestorTid;
  UINT1                           RequestorState;
  TID                             DCOM0Tid;
  UINT1                           DCOM0State;
  } CONS_RTE_INFO_REC;

typedef CONS_RTE_INFO_REC         *PCONS_RTE_INFO_REC;


typedef struct cons_cancel_task_record
  {
  USHORT                          usReturnCode;
  ULONG                           ulTask;
  BOOL                            fReturnCodeAvailable;
  } CONS_CANCEL_TASK_REC;

typedef CONS_CANCEL_TASK_REC      *PCONS_CANCEL_TASK_REC;


typedef struct cons_kill_task_record
  {
  USHORT                          usReturnCode;
  ULONG                           ulTask;
  BOOL                            fReturnCodeAvailable;
  } CONS_KILL_TASK_REC;

typedef CONS_KILL_TASK_REC        *PCONS_KILL_TASK_REC;


typedef struct cons_crash_dump_record
  {
  USHORT                          usReturnCode;
  BOOL                            fReturnCodeAvailable;
  } CONS_CRASH_DUMP_REC;

typedef CONS_CRASH_DUMP_REC       *PCONS_CRASH_DUMP_REC;

//
// --- Task Statistic Counts
//
typedef struct cons_single_task_counts_record
  {
  ULONG                           ulTaskIndex;
  UINT1                           TaskType;           // - task type (TT_US,...)
  PID                             ApplPid;            // - process id of connected user process
  SQL_NODEIDC                     szClientNode;
  ULONG                           ulSelfSuspCount;
  ULONG                           ulBegExclCalls;
  PRIO_STATISTIC                  PrioStat;
  TASK_STATE_STATISTIC            StateStat;

  ULONG                           ulCommands;
  ULONG                           ulDispatcherCalls;
  } CONS_SINGLE_TASK_COUNTS_INFO_REC;

typedef CONS_SINGLE_TASK_COUNTS_INFO_REC  *PCONS_SINGLE_TASK_COUNTS_INFO_REC;

typedef struct cons_task_counts_info_record
  {
  BOOL                             fInfoAvailable;
  BOOL                             fTimeMeasureActive ;
  LONG                             lNumOfActiveTasks;
  ULONG                            ulTaskCountsInfoOffset; // -  CONS_SINGLE_TASK_COUNTS_INFO_REC * 'MAX_TASKS'
  } CONS_TASK_COUNTS_INFO_REC;

typedef CONS_TASK_COUNTS_INFO_REC *PCONS_TASK_COUNTS_INFO_REC;


//
// --- Queue Statistic info
//
typedef struct cons_single_queue_info_record
  {
  ULONG                           ulTaskIndex;
  QUEUE_STATISTIC                 QueStat;
  } CONS_SINGLE_QUEUE_STAT_INFO_REC;

typedef CONS_SINGLE_QUEUE_STAT_INFO_REC *PCONS_SINGLE_QUEUE_STAT_INFO_REC;


typedef struct cons_queue_stat_info_record
  {
  BOOL                            fInfoAvailable;
  LONG                            lNumOfActiveTasks;
  ULONG                           ulQueStatInfoOffset;     // -  CONS_SINGLE_QUEUE_STAT_INFO_REC * 'MAX_TASKS'
  } CONS_QUEUE_STAT_INFO_REC;

typedef CONS_QUEUE_STAT_INFO_REC  *PCONS_QUEUE_STAT_INFO_REC;


//
// --- Total Counter Statistic Info
//
typedef struct cons_total_counts_info_record
  {
  BOOL                            fInfoAvailable;
  ULONG                           ulTotalDispCalls;
  ULONG                           ulTotalCommands;
  ULONG                           ulTotalVwait;
  ULONG                           ulTotalVsleep;
  ULONG                           ulTotalVsusp;
  ULONG                           ulTotalSelfIO;
  ULONG                           ulTotalDevIO;
  ULONG                           ulTotalRegAccess;
  ULONG                           ulTotalRegColl;
  ULONG                           ulTotalRegWait;
  ULONG                           ulTotalBegExclTasCount;
  ULONG                           ulTotalEndExclTasCount;
  PRIO_STATISTIC                  TotalPrioStat ;
  } CONS_TOTAL_COUNTS_INFO_REC;

typedef CONS_TOTAL_COUNTS_INFO_REC  *PCONS_TOTAL_COUNTS_INFO_REC;


typedef struct cons_reset_record
  {
  BOOL                            fResetAvailable;
  } CONS_RESET_REC;

typedef CONS_RESET_REC            *PCONS_RESET_REC;


typedef struct cons_time_measure_record
  {
  BOOL                            fTimeMeasureAvailable;
  } CONS_TIME_MEASURE_REC;

typedef CONS_TIME_MEASURE_REC     *PCONS_TIME_MEASURE_REC;

typedef struct cons_set_debug_level_record
  {
  ULONG                           ulDebugLevel;
  BOOL                            fSetDebugLevelAvailable;
  } CONS_SET_DEBUGLEVEL_REC;

typedef CONS_TIME_MEASURE_REC     *PCONS_TIME_MEASURE_REC;

typedef struct cons_single_ukt_sl_stat_info_rec
  {
  ULONG                           ulUKTIndex;
  TID                             Tid;
  ULONG                           ulRUNQueueLen;
  STATE_STATISTIC                 SleepTimeStat;
  } CONS_SINGLE_UKT_SL_STAT_INFO_REC;

typedef CONS_SINGLE_UKT_SL_STAT_INFO_REC *PCONS_SINGLE_UKT_SL_STAT_INFO_REC;


typedef struct cons_ukt_sleep_stat_info_record
  {
  BOOL                             fInfoAvailable;
  LONG                             lNumOfActiveUKTs;
  ULONG                            ulTotalTimeMeasureSec;
  ULONG                            ulSleepStatInfoOffset;  // - CONS_SINGLE_UKT_SL_STAT_INFO_REC * 'MAXUKT'
  } CONS_UKT_SLEEPTIME_REC;

typedef CONS_UKT_SLEEPTIME_REC    *PCONS_UKT_SLEEPTIME_REC;


typedef struct cons_show_suspend_rec
  {
  ULONG                           ulSuspends [ MAX_SUSPEND_REASONS ] ;
  BOOL                            fSuspendsAvailable;
  } CONS_SHOW_SUSPEND_REC;

typedef CONS_SHOW_SUSPEND_REC     *PCONS_SHOW_SUSPEND_REC;


typedef struct cons_getparam_rec
  {
  RTE_XPARAM_REC                  XParam;
  BOOL                            fGetParamAvailable;
  } CONS_GETPARAM_REC;

typedef CONS_GETPARAM_REC         *PCONS_GETPARAM_REC;


typedef struct cons_putparam_rec
  {
  C18C                            XParamId;
  ULONG                           OldVal;
  ULONG                           NewVal;
  BOOL                            fPutParamAvailable;
  } CONS_PUTPARAM_REC;

typedef CONS_PUTPARAM_REC         *PCONS_PUTPARAM_REC;

typedef struct cons_single_queue_info_rec
  {
  ULONG                           ulTaskIndex;
  ULONG                           ulDynPrio;
  ULONG                           ulReqType;
  ULONG                           ulFromTask;
  UINT1                           TaskState;
  UINT1                           PrioFlag;
  } CONS_SINGLE_QUEUE_INFO_REC;

typedef CONS_SINGLE_QUEUE_INFO_REC *PCONS_SINGLE_QUEUE_INFO_REC;

typedef struct cons_single_ukt_queue_info_rec
  {
  ULONG                           ulUKTIndex;
  TID                             Tid;
  ULONG                           ulRUNQueueLen;
  ULONG                           ulRUNQueueOffset;
  ULONG                           ulCOMQueueLen;
  ULONG                           ulCOMQueueOffset;
  ULONG                           ulUKTQueueLen;
  ULONG                           ulUKTQueueOffset;
  ULONG                           ulUToUQueueLen;
  ULONG                           ulUToUQueueOffset;
  } CONS_SINGLE_UKT_QUEUES_INFO_REC;

typedef CONS_SINGLE_UKT_QUEUES_INFO_REC *PCONS_SINGLE_UKT_QUEUES_INFO_REC;


typedef struct cons_ukt_queue_info_record
  {
  BOOL                             fInfoAvailable;
  LONG                             lNumOfActiveUKTs;
  ULONG                            ulUKTQueuesOffset;  // - CONS_SINGLE_UKT_QUEUE_INFO_REC * 'MAXUKT'
  } CONS_UKT_QUEUES_REC;

typedef CONS_UKT_QUEUES_REC    *PCONS_UKT_QUEUES_REC;


typedef union console_record
  {
  CONS_TASK_INFO_REC              TaskInfo;
  CONS_IO_INFO_REC                IOInfo;
  CONS_AIO_INFO_REC               AIOInfo;
  CONS_SEM_INFO_REC               SemInfo;
  CONS_STORAGE_INFO_REC           StorageInfo;
  CONS_STATE_INFO_REC             StateInfo;
  CONS_RTE_INFO_REC               RTEInfo;
  CONS_CANCEL_TASK_REC            CancelTaskCtrl;
  CONS_KILL_TASK_REC              KillTaskCtrl;
  CONS_QUEUE_STAT_INFO_REC        QueInfo;
  CONS_TASK_COUNTS_INFO_REC       TaskCountsInfo;
  CONS_TOTAL_COUNTS_INFO_REC      TotalCountsInfo;
  CONS_TIME_MEASURE_REC           TimeMeasureCtrl;
  CONS_SET_DEBUGLEVEL_REC         SetDebugLevelCtrl;
  CONS_RESET_REC                  ResetCtrl;
  CONS_UKT_SLEEPTIME_REC          UKTSleepTimeInfo;
  CONS_SHOW_SUSPEND_REC           SuspendReasons;
  CONS_GETPARAM_REC               GetParamInfo;
  CONS_PUTPARAM_REC               PutParamInfo;
  CONS_CRASH_DUMP_REC             CrashDump;
  CONS_UKT_QUEUES_REC             UKTQueues;
  CONS_SET_UKT_AFFINITY_REC       UKTAffinity;
} CONSOLE_REC;

typedef CONSOLE_REC               *PCONSOLE_REC;
.CM *-END-* code ----------------------------------------
.SP 2
***********************************************************
.PA
