gonzui


Format: Advanced Search

t2ex/t2ex_source/lib/libtk/src_t2ex/libinit.cbare sourcepermlink (0.00 seconds)

Search this content:

    1: /*
    2:  *----------------------------------------------------------------------
    3:  *    T2EX Software Package
    4:  *
    5:  *    Copyright 2012 by Ken Sakamura.
    6:  *    This software is distributed under the latest version of T-License 2.x.
    7:  *----------------------------------------------------------------------
    8:  *
    9:  *    Released by T-Engine Forum(http://www.t-engine.org/) at 2012/12/12.
   10:  *    Modified by TRON Forum(http://www.tron.org/) at 2015/06/04.
   11:  *
   12:  *----------------------------------------------------------------------
   13:  */
   14: /*
   15:  * This software package is available for use, modification, 
   16:  * and redistribution in accordance with the terms of the attached 
   17:  * T-License 2.x.
   18:  * If you want to redistribute the source code, you need to attach 
   19:  * the T-License 2.x document.
   20:  * There's no obligation to publish the content, and no obligation 
   21:  * to disclose it to the TRON Forum if you have modified the 
   22:  * software package.
   23:  * You can also distribute the modified source code. In this case, 
   24:  * please register the modification to T-Kernel traceability service.
   25:  * People can know the history of modifications by the service, 
   26:  * and can be sure that the version you have inherited some 
   27:  * modification of a particular version or not.
   28:  *
   29:  *    http://trace.tron.org/tk/?lang=en
   30:  *    http://trace.tron.org/tk/?lang=ja
   31:  *
   32:  * As per the provisions of the T-License 2.x, TRON Forum ensures that 
   33:  * the portion of the software that is copyrighted by Ken Sakamura or 
   34:  * the TRON Forum does not infringe the copyrights of a third party.
   35:  * However, it does not make any warranty other than this.
   36:  * DISCLAIMER: TRON Forum and Ken Sakamura shall not be held
   37:  * responsible for any consequences or damages caused directly or
   38:  * indirectly by the use of this software package.
   39:  *
   40:  * The source codes in bsd_source.tar.gz in this software package are 
   41:  * derived from NetBSD or OpenBSD and not covered under T-License 2.x.
   42:  * They need to be changed or redistributed according to the 
   43:  * representation of each source header.
   44:  */
   45: 
   46: /*
   47:  *      @(#)libinit.c (libtk)
   48:  *
   49:  *      libker library initialization
   50:  *
   51:  *      _InitLibtk() is always linked as it is called from the
   52:  *      startup part.
   53:  *      Note that adding too many processing can make the program
   54:  *      quite large.
   55:  */
   56: 
   57: #include "libtk.h"
   58: #include <sys/util.h>
   59: #include <sys/memalloc.h>
   60: #include <t2ex/util.h>
   61: 
   62: EXPORT MACB             _Kmacb;            /* Kmalloc management information */
   63: EXPORT MACB             _Vmacb;            /* Vmalloc management information */
   64: IMPORT MACB             _Smacb;            /* Smalloc management information */
   65: #ifdef T2EX_MM
   66: IMPORT FastULock        _SmacbLock;    /* Smalloc lock */
   67: #endif
   68: 
   69: #ifdef T2EX
   70: EXPORT  INT      t2ex_call_limit;
   71: #endif
   72: LOCAL   BOOL      libtk_init_done = FALSE;
   73: 
   74: /*
   75:  * Library initialization
   76:  */
   77: EXPORT void _InitLibtk( void )
   78: {
   79:         INT    rng;
   80: 
   81:         if ( libtk_init_done ) {
   82:                 return;  /* Initialized */
   83:         }
   84: 
   85:         /* Kernel utility initialization */
   86:         KnlInit();
   87: 
   88: #ifdef T2EX
   89:         /* T2EX API protected level */
   90:         if ( tk_get_cfn("TSVCLimit", &t2ex_call_limit, 1) < 1 ) {
   91:                 t2ex_call_limit = 2;
   92:         }
   93: 
   94:         /* Kmalloc/Vmalloc memory protection level */
   95:         if ( tk_get_cfn("TKmallocLvl", &rng, 1) < 1 ) {
   96:                 rng = t2ex_call_limit;
   97:         }
   98: #else
   99:         /* Lowest protection level where system calls can be issued */
  100:         if ( tk_get_cfn("TSVCLimit", &rng, 1) < 1 ) {
  101:                 rng = 2;
  102:         }
  103: #endif
  104:         rng <<= 8;
  105: 
  106:         /* Create exclusive control lock for library sharing */
  107:         _init_liblock();
  108: #ifdef T2EX_MM
  109:         CreateULock(&_SmacbLock, "ultk");
  110: #endif
  111: 
  112:         /* malloc initialization */
  113:         _tkm_init((UINT)rng, &_Kmacb);                 /* Kmalloc init */
  114:         _tkm_init((UINT)rng|TA_NORESIDENT, &_Vmacb);   /* Vmalloc init */
  115:         _tkm_init(TA_RNG3|TA_NORESIDENT, &_Smacb);     /* Smalloc init */
  116: 
  117:         libtk_init_done = TRUE;  /* Initialization complete */
  118: }
  119: 
  120: /*
  121:  * Library finalization
  122:  */
  123: EXPORT void _FinishLibtk( void )
  124: {
  125:         if ( !libtk_init_done ) {
  126:                 return;
  127:         }
  128: 
  129:         DeleteULock(&_SmacbLock);
  130:         _delete_liblock();
  131: }