⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ss_gen.c

📁 中国石油二期加油站IC系统后台通讯软件
💻 C
📖 第 1 页 / 共 2 页
字号:

/********************************************************************20**
 
     Name:     System Services -- general functions
 
     Type:     C source file
 
     Desc:     Source code for System Services startup and general
               System Services.
 
     File:     ss_gen.c
 
     Sid:      ss_gen.c 1.3  -  08/11/98 11:02:18
 
     Prg:      kp
  
*********************************************************************21*/


/* header include files (.h) */

#include "envopt.h"        /* environment options */
#include "envdep.h"        /* environment dependent */
#include "envind.h"        /* environment independent */

#include "gen.h"           /* general layer */
#include "ssi.h"           /* system services */

#include "ss_err.h"        /* errors */
#include "ss_dep.h"        /* implementation-specific */
#include "ss_queue.h"      /* queues */
#include "ss_task.h"       /* tasking */
#include "ss_msg.h"        /* messaging */
#include "ss_mem.h"        /* memory management interface */
#include "ss_gen.h"        /* general */



/* header/extern include files (.x) */

#include "gen.x"           /* general layer */
#include "ssi.x"           /* system services */

#include "ss_dep.x"        /* implementation-specific */
#include "ss_queue.x"      /* queues */
#include "ss_task.x"       /* tasking */
#include "ss_timer.x"      /* timers */
#include "ss_strm.x"       /* STREAMS */
#include "ss_msg.x"        /* messaging */
#include "ss_mem.x"        /* memory management interface */
#include "ss_drvr.x"       /* driver tasks */
#include "ss_gen.x"        /* general */



/* public variable declarations */

PUBLIC SsOs     osCp;           /* common OS control point */


EXTERN Cntr     cfgNumRegs;
EXTERN SsRegCfg cfgRegInfo[SS_MAX_REGS];





#define ENTLAST     ENTSV             /* last entity id */

#define ENTNC       0xFF              /* Entity not configured */



/*** add by shang, 2002-1-4 ***/
PUBLIC EntDesc_s g_entNameTbl[SS_MAX_ENT] = 
{
    { ENTPRM, "ENTPRM" },         /* Permanent task */
    { ENTTST, "ENTTST" },         /* Test */
    { ENTSS,  "ENTSS" },          /* Common System Services */
    { ENTMS, "ENTMS" },           /* Multiprocessor Operating System */
    { ENTNS, "ENTNS" },           /* NTSS */
    { ENTSC, "ENTSC"},    /*02              /* Physical Layer - SCC */
    { ENTLB, "ENTLB"},    /*03              /* Data Link Layer - LAPB */
    { ENTLD, "ENTLD"},    /*04              /* Data Link Layer - LAPD */
    { ENTML, "ENTML"},    /*05              /* Data Link Layer - Multilink */
    { ENTBD, "ENTBD"},    /*06              /* Data Link Layer - LAPB & LAPD */
    { ENTXI, "ENTXI"},    /*07              /* Network Layer - X.25 Intermediate System */
    { ENTXN, "ENTXN"},    /*08              /* Network Layer - X.25 End System */
    { ENTXG, "ENTXG"},    /*09              /* Network Layer - X.75 */
    { ENTIN, "ENTIN"},    /*0A              /* Network Layer - Q.930/Q.931 */
    { ENTAP, "ENTAP"},    /*0B              /* Application Layer - Asynchronous PAD */
    { ENTBR, "ENTBR"},    /*0C              /* Data Link Layer - Basic Frame Relay */
                                      /* OBSOLETE */
    { ENTER, "ENTER"},    /*0D              /* Data Link Layer - Extended Frame Relay */
                                      /* OBSOLETE */
    { ENTSM, "ENTSM"},    /*0E              /* Stack Manager */
    { ENTMD, "ENTMD"},    /*0F              /* Mos Driver */
    { ENTAL, "ENTAL"},    /*10              /* Application Program */
    { ENTLDLM, "ENTLDLM" },               /* Lapd Layer Manager */
    { ENTTC, "ENTTC"},    /*12              /* TCP/IP */
    { ENTIX, "ENTIX"},    /*13              /* X.31 */
    { ENTSI, "ENTSI"},    /*14              /* SS7 - isup */
    { ENTSN, "ENTSN"},    /*15              /* SS7 - mtp, level 3 */
    { ENTSD, "ENTSD"},    /*16              /* SS7 - mtp, level 2 */
    { ENTST, "ENTST"},    /*17              /* SS7 - tcap */
    { ENTDB, "ENTDB"},    /*18              /* 68000 Debugger */
    { ENTIS, "ENTIS"},    /*19              /* Physical - ISAC-S */
    { ENTLC, "ENTLC"},    /*1A              /* Data Link Layer - LLC */
    { ENTOD, "ENTOD"},    /*1B              /* Novell ODI */
    { ENTSE, "ENTSE"},    /*1C              /* 68302 */
    { ENTHE, "ENTHE"},    /*1D              /* Hello World */
    { ENTSP, "ENTSP"},    /*1E              /* SS7 - sccp */
    { ENTCC, "ENTCC"},    /*1F              /* Interworking call control */
    { ENTTU, "ENTTU"},    /*20              /* SS7 - tcap user */
    { ENTUD, "ENTUD"},    /*21              /* UDP/IP (without TCP) */
    { ENTM1, "ENTM1"},    /*22              /* Dummy MAC (with MACINT1) */
    { ENTM2, "ENTM2"},    /*23              /* Dummy MAC (with MACINT2) */
    { ENTM3, "ENTM3"},    /*24              /* Dummy MAC (with MACINT3) */
    { ENTTP, "ENTTP"},    /*25              /* SS7 - tup */
    { ENTBS, "ENTBS"},    /*26              /* ATM - LANE Broadcast Server (BUS) */
    { ENTM4, "ENTM4"},    /*27              /* Dummy MAC (with MACINT4) */
    { ENTM5, "ENTM5"},    /*28              /* Dummy MAC (with MACINT5) */
    { ENTM6, "ENTM6"},    /*29              /* Dummy MAC (with MACINT6) */
    { ENTM7, "ENTM7"},    /*2A              /* Dummy MAC (with MACINT7) */
    { ENTM8, "ENTM8"},    /*2B              /* Dummy MAC (with MACINT8) */
    { ENTM9, "ENTM9"},    /*2C              /* Dummy MAC (with MACINT9) */
    { ENTME, "ENTME"},    /*2D              /* Message Exchange */
    { ENTAC, "ENTAC"},    /*2E              /* ATM - cpcs */
    { ENTAS, "ENTAS"},    /*2F              /* ATM - q.saal */
    { ENTAM, "ENTAM"},    /*30              /* ATM - q.93b */
    { ENTUM, "ENTUM"},    /*31              /* ATM - ume */
    { ENTMU, "ENTMU"},    /*32              /* ATM - management user */
    { ENTLR, "ENTLR"},    /*33              /* loader */
    { ENTLU, "ENTLU"},    /*34              /* loader user */
    { ENTRY, "ENTRY"},    /*35              /* relay */
    { ENTEC, "ENTEC"},    /*36              /* ATM - LANE Client (LEC) */
    { ENTFA, "ENTFA"},    /*37              /* ATM - Fujitsu ALC driver */
    { ENTSR, "ENTSR"},    /*38              /* MTP 3 Simple Router */
    { ENTES, "ENTES"},    /*39              /* ATM - LANE Services (LEServices) */
    { ENTPN, "ENTPN"},    /*3A              /* ATM - PNNI */
    { ENTQI, "ENTQI"},    /*3B              /* QUICC Driver */
    { ENTWD, "ENTWD"},    /*3C              /* MTP Level 2 Wrapper */
    { ENTWN, "ENTWN"},    /*3D              /* MTP Level 3 Wrapper */
    { ENTWI, "ENTWI"},    /*3E              /* ISUP Wrapper */
    { ENTWU, "ENTWU"},    /*3F              /* TUP Wrapper */
    { ENTWS, "ENTWS"},    /*40              /* SCCP Wrapper */
    { ENTWC, "ENTWC"},    /*41              /* TCAP Wrapper */
    { ENTPU, "ENTPU"},    /*42              /* ATM PNNI User */
    { ENTSA, "ENTSA"},    /*43              /* ATM - Q.2140 */
    { ENTFM, "ENTFM"},    /*44              /* SS7 - Fault Manager */
    { ENTBI, "ENTBI"},    /*45              /* ATM - b-isup */
    { ENTMA, "ENTMA"},    /*46              /* SS7 - MAP*/
    { ENTFN, "ENTFN"},    /*47              /* Frame Relay Network Layer - Q.933 */
    { ENTNV, "ENTNV"},    /*48              /* V5.X PSTN */
    { ENTLV, "ENTLV"},    /*49              /* LAPV5-DL */
    { ENTEV, "ENTEV"},    /*4a              /* V5.X Envelope Function */
    { ENTPL, "ENTPL"},    /*4b              /* ATM - PMC Sierra LASAR driver */
    { ENTAU, "ENTAU"},    /*4c              /* MAP Upper User */
    { ENTVM, "ENTVM"},    /*4d              /* V5.1 mac layer */
    { ENTAF, "ENTAF"},    /*4e              /* Frame Relay ATM IW Layer */
    { ENTFR, "ENTFR"},    /*4f              /* Frame Relay */
    { ENTMT, "ENTMT"},    /*50              /* mt_ss */
    { ENTCV, "ENTCV"},    /*51              /* V5.X Control Protocol */
    { ENTMV, "ENTMV"},    /*52              /* V5.X System Management Layer */
    { ENTIM, "ENTIM"},    /*53              /* ATM - IME */
    { ENTBV, "ENTBV"},    /*54              /* V5 - BCC. */
    { ENTPA, "ENTPA"},    /*55              /* PLOA */
    { ENTPV, "ENTPV"},    /*56              /* V5 - Protection Protocol. */
    { ENTLK, "ENTLK"},    /*57              /* V5 - LCP */
    { ENTL1, "ENTL1"},    /*58              /* V5 - Link Layer 1 */
    { ENTIA, "ENTIA"},    /*59              /* map is41 */
    { ENTIU, "ENTIU"},    /*5a              /* map is41 user */
    { ENTRM, "ENTRM"},    /*5b              /* Resource Manager */
    { ENTRT, "ENTRT"},    /*5c              /* Router */
    { ENTSG, "ENTSG"},    /*5d              /* System manager */
    { ENTPQ, "ENTPQ"},    /*5e              /* Power QUICC Driver */
    { ENTMC, "ENTMC"},    /*5f              /* Mac over sockets */
    { ENTIE, "ENTIE"},    /*60              /* INAP */
    { ENTBW, "ENTBW"},               /* BISUP Wrapper */
    { ENTIW, "ENTIW"},     /* ISUP Wrapper */
    { ENTQW, "ENTQW"},            /* ISDN Wrapper */
    { ENTAW, "ENTAW"},             /* q.93B Wrapper */
    { ENTSF, "ENTSF"},    /*61              /* Switching Fabric */
    { ENTVF, "ENTVF"},    /*62              /* Integrated V5 layer 3 */ 
    { ENTCL, "ENTCL"},    /*63              /* ASN.1 encoder/decoder */ 
    { ENTSH, "ENTSH"},    /*65              /* System Agent */ 
    { ENTMR, "ENTMR"},    /*66              /* Message Router */ 
    { ENTL4, "ENTL4"},    /*67              /* dummy layer4 */
    { ENTTT, "ENTTT"},    /*68              /* TCAP over TCP/IP */
    { ENTPR, "ENTPR"},    /*69              /* MPC860SAR Driver */
    { ENTGN, "ENTGN"},    /*6a              /* GPRS Network Service */
    { ENTGG, "ENTGG"},    /*6b              /* GPRS BSSGP */
    { ENTAR, "ENTAR"},    /*6c              /* ARI module */
    { ENTGT, "ENTGT"},    /*6d              /* GPRS GTP */
    { ENTGM, "ENTGM"},    /*6e              /* GPRS Mobility Management */
    { ENTGR, "ENTGR"},    /*6f              /* GPRS Relay */
    { ENTGW, "ENTGW"},    /*70              /* GPRS Ineterworking unit */
    { ENTGL, "ENTGL"},    /*71              /* GPRS LLC */
    { ENTGS, "ENTGS"},    /*72              /* GPRS SNDCP */
    { ENTGZ, "ENTGZ"},    /*73              /* GPRS RLC/MAC */
    { ENTGY, "ENTGY"},    /*74              /* GPRS SMS */
    { ENTHI, "ENTHI"},    /*75              /* TUCL */
    { ENTHC, "ENTHC"},    /*76              /* H.323 */
    { ENTHU, "ENTHU"},    /*77              /* H.323 user */
    { ENTHR, "ENTHR"},    /*78              /* RTP/RTCP */
    { ENTNM, "ENTNM"},    /*79              /* GPRS Network Management */
    { ENTGB, "ENTGB"},    /*7a              /* GPRS BSS Relay */
    { ENTGP, "ENTGP"},    /*7b              /* GPRS PDP at MS */
    { ENTIQ, "ENTIQ"},    /*7c              /* Q.930/931-Q.SAAL Convergence Layer */
    { ENTXM, "ENTXM"},    /*7d              /* Connection Manager */
    { ENTMG, "ENTMG"},    /*7e              /* MGCP */
    { ENTHG, "ENTHG"},    /*7f              /* Annex G */
    { ENTDN, "ENTDN"},    /*80              /* LDF-MTP3 */
    { ENTTS, "ENTTS"},    /*81              /* Trillium Stack Manager */
    { ENTVO, "ENTVO"},    /*82              /* MPC8260 Driver */
    { ENTGO, "ENTGO"},    /*83              /* GTP Location-MGMT */
    { ENTGI, "ENTGI"},    /*84              /* CC-3G */
    { ENTGH, "ENTGH"},    /*85              /* GTP-Charging */
    { ENTGU, "ENTGU"},    /*86              /* Relay on IU for GTP */
    { ENTLN, "ENTLN"},    /*87              /* MPLS */
    { ENTSB, "ENTSB"},    /*88              /* SCTP */
    { ENTIT, "ENTIT"},    /*89              /* M3UA */
    { ENTFW, "ENTFW"},    /*8a              /* MPLS - Forwarder */
    { ENTRL, "ENTRL"},    /*8b              /* MPLS - Resource Manager */
    { ENTAL2, "ENTAL2"},            /* AAL2 Signaling */
    { ENTAA, "ENTAA"},    /*8d              /* AAL2 Signaling User */
    { ENTRA, "ENTRA"},    /*8f              /* RANAP */
    { ENTNF, "ENTNF"},    /*90              /* M3UA-NIF */
    { ENTRN, "ENTRN"},    /*91              /* RNSAP */
    { ENTDP, "ENTDP"},    /*92              /* LDF-SCCP */
    { ENTDT, "ENTDT"},    /*93              /* LDF-TCAP */
    { ENTNU, "ENTNU"},    /*94              /* SUA NIF */
    { ENTP1, "ENTP1"},    /*95              /* PXY dummy for PLOA */
    { ENTID, "ENTID"},    /*96              /* IUA */
    { ENTND, "ENTND"},    /*97              /* IUA-NIF */
    { ENTDM, "ENTDM"},    /*98              /* IWF */
    { ENTSO, "ENTSO"},    /*99              /* SIP */
    { ENTSV, "ENTSV"},    /*9A              /* SIP */

    { ENTNC, NULLP  }
};

/*** add by shang is over ***/

/*
*
*       Fun:   System Services initialization function
*
*       Desc:  This is the general initialization function for
*              all System Services implementations. It initializes
*              all the common global data structures and calls the
*              implementation-specific initialization and start
*              functions.
*
*       Ret:   Void
*
*       Notes: 
*
*       File:  ss_gen.c
*
*/
#ifdef ANSI
PUBLIC S16 SInit
(
void
)
#else
PUBLIC S16 SInit()
#endif
{
    S16 ret;
    REG1 S16 i;
    REG2 S16 j;
    REG3 S16 k;
    SsTTskEntry *tTsk;
    SsSTskEntry *sTsk;
    SsTmrEntry *tmr;
    SsRegionEntry *reg;
#ifdef SS_DRVR_SUPPORT
    SsDrvrTskEntry *drvrTsk;
#endif


    TRC1(SInit);


    /* implementation specific general initialization */
    ret = ssdInitGen();
    if (ret != ROK)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS208, (ErrVal) ret,
                   "Could not init ssdInitGen");
        RETVALUE(RFAILED);
    }

    /* start initializing OS control point */
    osCp.procId = SS_PROC_ID;


    /* initialize memory information */
    osCp.numRegions = 0;

    if (ROK != SInitRegion())
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS208, (ErrVal) ret,
                   "Could not init ssdInitGen");
        RETVALUE(RFAILED);
    }



    for (i = 0;  i < SS_MAX_REGS;  i++)
    {
        reg = &osCp.regionTbl[i];

        reg->used = FALSE;

        reg->start = NULLP;
        reg->size = 0;
        reg->regCb = NULLP;
        reg->flags = 0;
        reg->alloc = NULLP;
        reg->free = NULLP;
        reg->ctl = NULLP;

        /* zero the pool information */
        reg->numPools = 0;
        for (j = 0;  j < SS_MAX_POOLS_PER_REG;  j++)
            reg->poolTbl[j].type = SS_POOL_UND;

        /* find this region ID in the region configuration structure */
        for (j = 0;  j < cfgNumRegs;  j++)
            if (cfgRegInfo[j].region == i)
                break;

            /* this region is not configured */
        if (j == cfgNumRegs)
            continue;

        /* Load the configuration information into the region table.
         *  Note, the region still has to be registered, for it to
         *  be usable.
         */
        for (k = 0;  k < cfgRegInfo[j].numPools;  k++)
        {
            reg->poolTbl[k].type = cfgRegInfo[j].pools[k].type;
            if (reg->poolTbl[k].type == SS_POOL_DYNAMIC)
                reg->poolTbl[k].u.dpool.size = cfgRegInfo[j].pools[k].size;
        }
    }

    ret = ssInitSema(&osCp.regionTblSem, 1);
    if (ret != ROK)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS208, (ErrVal) ret,
                   "Could not init ssInitSema");
        goto cleanup1;
    }

    /* implementation specific memory initialization */

    ret = ssdInitMem();
    if (ret != ROK)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS208, (ErrVal) ret,
                   "Could not init ssdInitMem");
        ssDestroySema(&osCp.regionTblSem);
        goto cleanup1;
    }


    /* initialize TAPA and system task information */
    for (i = 0;  i < SS_MAX_ENT;  i++)
        for (j = 0;  j < SS_MAX_INST;  j++)
            osCp.tTskIds[i][j] = SS_TSKNC;

    for (i = 0;  i < SS_MAX_TTSKS;  i++)
    {
        tTsk = &osCp.tTskTbl[i];

        tTsk->used = FALSE;
        tTsk->ent = ENTNC;
        tTsk->inst = INSTNC;
        tTsk->tskType = TTUND;
        tTsk->tskPrior = 0;
        tTsk->initTsk = NULLP;
        tTsk->actvTsk = NULLP;
        tTsk->sTsk = NULLP;

        tTsk->nxt = i + 1;
    }

    osCp.numTTsks = 0;
    osCp.nxtTTskEntry = 0;

    ret = ssInitSema(&osCp.tTskTblSem, SS_MAX_STSKS);
    if (ret != ROK)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS208, (ErrVal) ret,
                   "Could not init ssInitSema");
        goto cleanup2;
    }

    /* initialize system task information */
    for (i = 0;  i < SS_MAX_STSKS;  i++)
    {
        sTsk = &osCp.sTskTbl[i];

        sTsk->used = FALSE;
        sTsk->termPend = FALSE;
        sTsk->tskPrior = 0;
        for (j = 0;  j < SS_MAX_TTSKS;  j++)
            sTsk->tTsks[j] = SS_INVALID_IDX;
        sTsk->numTTsks = 0;

        sTsk->nxt = i + 1;
    }

    osCp.numSTsks = 0;
    osCp.nxtSTskEntry = 0;

    ret = SInitLock(&osCp.sTskTblLock, SS_STSKTBL_LOCK);
    if (ret != ROK)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS208, (ErrVal) ret,
                   "Could not init SInitLock");
        ssDestroySema(&osCp.tTskTblSem);
        goto cleanup2;
    }

    /* implementation specific task initialization */
    ret = ssdInitTsk();
    if (ret != ROK)
    {
        SSLOGERROR(ERRCLS_DEBUG, ESS208, (ErrVal) ret,
                   "Could not init SInitLock");
        SDestroyLock(&osCp.sTskTblLock);
        ssDestroySema(&osCp.tTskTblSem);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -