Ignore:
Timestamp:
Dec 18, 2011, 10:28:22 PM (14 years ago)
Author:
dmik
Message:

Merge branch gcc-kmk to trunk.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore
      •  

        old new  
        1 bin
        2 Makefile.inc
         1env.cmd
         2LocalConfig.kmk
    • Property svn:mergeinfo set to
      /branches/gcc-kmkmergedeligible
  • trunk/src/wing32/initterm.cpp

    r6640 r21916  
    11/* $Id: initterm.cpp,v 1.6 2001-09-05 10:32:33 bird Exp $
    22 *
    3  * DLL entry point
     3 * WING32 DLL entry point
    44 *
    55 * Copyright 1998 Sander van Leeuwen
    66 * Copyright 1998 Peter Fitzsimmons
    77 *
    8  *
    98 * Project Odin Software License can be found in LICENSE.TXT
    10  *
    119 */
    1210
    13 /*-------------------------------------------------------------*/
    14 /* INITERM.C -- Source for a custom dynamic link library       */
    15 /*              initialization and termination (_DLL_InitTerm) */
    16 /*              function.                                      */
    17 /*                                                             */
    18 /* When called to perform initialization, this sample function */
    19 /* gets storage for an array of integers, and initializes its  */
    20 /* elements with random integers.  At termination time, it     */
    21 /* frees the array.  Substitute your own special processing.   */
    22 /*-------------------------------------------------------------*/
    23 
    24 
    25 /* Include files */
    2611#define  INCL_DOSMODULEMGR
    2712#define  INCL_DOSPROCESS
     
    3823#include "wing32impl.h"
    3924
    40 extern "C" {
    41  //Win32 resource table (produced by wrc)
    42  extern DWORD _Resource_PEResTab;
    43 }
     25// Win32 resource table (produced by wrc)
     26extern DWORD wing32_PEResTab;
     27
    4428static HMODULE dllHandle = 0;
    4529
    46 //******************************************************************************
    47 //******************************************************************************
    4830BOOL WINAPI LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
    4931{
    50    switch (fdwReason)
    51    {
    52    case DLL_PROCESS_ATTACH:
     32    switch (fdwReason)
     33    {
     34    case DLL_PROCESS_ATTACH:
    5335        if(!InitWing32())
    5436            return FALSE;
    5537
    56     return TRUE;
     38        return TRUE;
    5739
    58    case DLL_THREAD_ATTACH:
    59    case DLL_THREAD_DETACH:
    60     return TRUE;
     40    case DLL_THREAD_ATTACH:
     41    case DLL_THREAD_DETACH:
     42        return TRUE;
    6143
    62    case DLL_PROCESS_DETACH:
    63     ctordtorTerm();
    64     return TRUE;
    65    }
    66    return FALSE;
     44    case DLL_PROCESS_DETACH:
     45#ifdef __IBMC__
     46        ctordtorTerm();
     47#endif
     48        return TRUE;
     49    }
     50    return FALSE;
    6751}
    68 /****************************************************************************/
    69 /* _DLL_InitTerm is the function that gets called by the operating system   */
    70 /* loader when it loads and frees this DLL for each process that accesses   */
    71 /* this DLL.  However, it only gets called the first time the DLL is loaded */
    72 /* and the last time it is freed for a particular process.  The system      */
    73 /* linkage convention MUST be used because the operating system loader is   */
    74 /* calling this function.                                                   */
    75 /****************************************************************************/
    76 unsigned long SYSTEM _DLL_InitTerm(unsigned long hModule, unsigned long
    77                                    ulFlag)
     52
     53ULONG SYSTEM DLL_InitWing32(ULONG hModule)
    7854{
    79    size_t i;
    80    APIRET rc;
     55    CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed  98-03-18 05:28:48*/
    8156
    82    /*-------------------------------------------------------------------------*/
    83    /* If ulFlag is zero then the DLL is being loaded so initialization should */
    84    /* be performed.  If ulFlag is 1 then the DLL is being freed so            */
    85    /* termination should be performed.                                        */
    86    /*-------------------------------------------------------------------------*/
     57    dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&wing32_PEResTab);
     58    if (dllHandle == 0)
     59        return -1;
    8760
    88    switch (ulFlag)
    89    {
    90       case 0 :
    91       {
    92          ctordtorInit();
     61    return 0;
     62}
    9363
    94          CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed  98-03-18 05:28:48*/
     64void SYSTEM DLL_TermWing32(ULONG hModule)
     65{
     66    if (dllHandle)
     67       UnregisterLxDll(dllHandle);
     68}
    9569
    96      dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&_Resource_PEResTab);
    97          if(dllHandle == 0)
    98         return 0UL;
     70ULONG SYSTEM DLL_Init(ULONG hModule)
     71{
     72    if (DLL_InitDefault(hModule) == -1)
     73        return -1;
     74    return DLL_InitWing32(hModule);
     75}
    9976
    100          break;
    101       }
    102       case 1 :
    103          if(dllHandle) {
    104         UnregisterLxDll(dllHandle);
    105          }
    106          break;
    107       default  :
    108          return 0UL;
    109    }
    110 
    111    /***********************************************************/
    112    /* A non-zero value must be returned to indicate success.  */
    113    /***********************************************************/
    114    return 1UL;
     77void SYSTEM DLL_Term(ULONG hModule)
     78{
     79    DLL_TermWing32(hModule);
     80    DLL_TermDefault(hModule);
    11581}
Note: See TracChangeset for help on using the changeset viewer.