Logo Search packages:      
Sourcecode: maxdb-7.5.00 version File versions

ven71.c File Reference


Detailed Description

Kernel RunTime: Dispatcher and Queue Management.

Author:
JoergM
See also:

Definition in file ven71.c.

#include "gen00.h"
#include "heo00.h"
#include "geo002.h"
#include "heo52.h"
#include "geo50_0.h"
#include "geo007_1.h"
#include "gen71.h"
#include "hen71.h"
#include "hen40.h"
#include "geo00_2.h"
#include "gen55.h"
#include "heo56.h"
#include "gen72.h"
#include "gen73.h"
#include "gen75.h"
#include "RunTime/System/RTESys_MicroTime.h"
#include "hsp77.h"
#include "RunTime/System/RTESys_MemoryBarrier.h"
#include "RunTime/System/RTESys_AtomicOperation.h"

Go to the source code of this file.

Defines

#define BASE_PRIO_COM   (XPARAM(lPrioBaseCOM))
#define BASE_PRIO_IOC   (XPARAM(lPrioBaseIOC))
#define BASE_PRIO_RAV   (XPARAM(lPrioBaseRAV))
#define BASE_PRIO_REX   (XPARAM(lPrioBaseREX))
#define BASE_PRIO_U2U   (XPARAM(lPrioBaseU2U))
#define DISPATCHER_LOOPS
#define ENQU_RUNQUEUE(_Task, _FromTask, _Req, _BasePrio)
#define ENQU_RUNQUEUE_NO_REQUEST(_Task, _BasePrio)
#define FIND_ALL_TASKS   1
#define FIND_PRIO_TASKS   2
#define IGNORE_REQUEST_AT_SYSTEM_END()
#define INFINIT_TIME_VAL   (SAPDB_UInt8)-1
#define MF__   MOD__"en71TaskMoveCheck"
#define MF__   MOD__"en71MoveTask"
#define MF__   MOD__"en71SendMoveRequest"
#define MF__   MOD__"en71SendMoveMeassIntRequest"
#define MF__   MOD__"en71AlterTaskCnt"
#define MF__   MOD__"en71LongTermMoveLock"
#define MF__   MOD__"en71TempMoveLock"
#define MF__   MOD__"en71LoadBalancing"
#define MF__   MOD__"vdelay_lw"
#define MF__   MOD__"vdelay_commit"
#define MF__   MOD__"en71EnqueueUkt2Ukt"
#define MF__   MOD__"e71_YieldTaskEnquRex"
#define MF__   MOD__"e71_EnquRex"
#define MF__   MOD__"e71_EnquRav"
#define MF__   MOD__"e71_com"
#define MF__   MOD__"vprio"
#define MF__   MOD__"v2prio"
#define MF__   MOD__"en71_iocNoTask"
#define MF__   MOD__"en71_ioc"
#define MF__   MOD__"en71_iocEnquAndWake"
#define MF__   MOD__"en71_freeUktOwnedRegions"
#define MF__   MOD__"en71_shutdownKill"
#define MF__   MOD__"en71_findcom"
#define MF__   MOD__"en71_dispatcher"
#define MOD__   "ven71.c:"
#define PRINT_ENQU
#define PRINT_RUN_TASK
#define PRIO_FACTOR   (XPARAM(lPrioFactor))
#define REMOVE_TASK_FROM_COM_QUEU(this_com_task, task)
#define WRN_INTERNAL_MICRO_TIMER_FAILED   N(903), WRN_TYPE,_T("TASKING "),_T("Dispatcher Timing wrong %s %qu > %s %qu")

Functions

 DBG1 ((MF__,"T%d added from T? to r_que, len %d\n", _Task->index, this_ukt->RunQueueLen+1))
void e71_com (struct TASK_TYPE *tcb)
 Enqueue task in COM queue.
void e71_EnquRav (struct TASK_TYPE *tcb, boolean Prio)
void e71_EnquRex (struct TASK_TYPE *tcb, boolean Prio)
void e71_YieldTaskEnquRex (ten50_UKT_Control *this_ukt, tsp00_Bool Prio)
 Enqueue task in RUN queue using BASE_PRIO_REX.
static void en71_DoEnterDispatcherTiming (ten50_UKT_Control *this_ukt, struct TASK_TYPE *pTaskCtrl)
static void en71_DoLeaveDispatcherTiming (ten50_UKT_Control *this_ukt)
static void en71_findcom (ten50_UKT_Control *this_ukt, time_t *new_timeout)
static void en71_freeUktOwnedRegions (ten50_UKT_Control *this_ukt)
static void en71_HandleTaskStatisticReset (ten50_UKT_Control *this_ukt, struct TASK_TYPE *pTaskCtrl)
static void en71_HandleUKTStatisticReset (ten50_UKT_Control *this_ukt)
void en71_ioc (ten50_UKT_Control *ukt, struct TASK_TYPE *tcb, struct DOUBLY_LINKED *quu)
 Enqueue element in IOC queue.
void en71_iocEnquAndWake (ten50_UKT_Control *ukt, struct TASK_TYPE *tcb, struct DOUBLY_LINKED *quu)
 Enqueue element in IOC queue and wakeup UKT.
void en71_iocNoTask (ten50_UKT_Control *ukt, struct DOUBLY_LINKED *quu)
static void en71_shutdownKill (ten50_UKT_Control *this_ukt)
static void en71_StopUkt (SAPDB_Int4 uktIndex)
static int en71_xxxDequeue (struct XXX_QUEUE_HEAD *queueHead, struct XXX_QUEUE *copyOfItemToDequeue)
void en71AlterTaskCnt (struct TASK_TYPE *tcb, SAPDB_UInt2 alterType)
 Alter UKTs task counter values.
void en71Dispatcher (ten50_UKT_Control *this_ukt)
 Select the next running task in a UKT.
void en71EnqueueUkt2Ukt (ten50_UKT_Control *this_ukt, struct TASK_TYPE *tcb, struct TASK_TYPE *fromtcb, VOIDFUNC_PTR func, void *func_param)
 Enqueue function request from UKT to UKT.
time_t en71LoadBalancing ()
 Check load balancing.
void en71LongTermMoveLock (struct TASK_TYPE *tcb, SAPDB_UInt2 lockType, SAPDB_Bool setLock)
 Set long term lock to prevent moving task from one UKT to another.
static void en71MoveTask (struct TASK_TYPE *tcb, struct DOUBLY_LINKED *request)
static void en71SendMoveMeassIntRequest ()
static void en71SendMoveRequest (ten50_UKT_Control *srcUKT, ten50_UKT_Control *dstUKT, SAPDB_UInt8 stopWaitForBestFitTaskAt)
static SAPDB_Bool en71TaskMoveCheck (ten50_UKT_Control **srcUKT, ten50_UKT_Control **dstUKT)
void en71TempMoveLock (struct TASK_TYPE *tcb, SAPDB_UInt2 cnt, SAPDB_Bool setLock)
 Set temporary lock to prevent moving task from one UKT to another.
 if ((_Task->MoveTimeCollectionEnabled)||(_Task->TimeCollectionEnabled))
void v2prio (tsp00_Int4 task_id, UINT1 prio, tsp00_Bool set_prio, int root, int leaf, int locktype)
void vdelay_commit (RTE_TaskId pid)
void vdelay_lw (RTE_TaskId pid)
void vprio (tsp00_Int4 task_id, UINT1 prio, tsp00_Bool set_prio)

Variables

int e60_dbgdbglvl
volatile int en71_neverStop = 1
this_ukt RunQueue[this_ukt->
RunQueueLen] 
FromTask = NULL
this_ukt RunQueue[this_ukt->
RunQueueLen] 
Req = &_Task->qa
this_ukt RunQueueLen
this_ukt RunQueue[this_ukt->
RunQueueLen] 
Task = _Task


Generated by  Doxygen 1.6.0   Back to index