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/msacm32/initterm.cpp

    r6712 r21916  
    11/*
    2  * DLL entry point
     2 * MSACM32 entry point
    33 *
    44 * Copyright 1998 Sander van Leeuwen
    55 * Copyright 1998 Peter Fitzsimmons
    66 *
    7  *
    87 * Project Odin Software License can be found in LICENSE.TXT
    9  *
    108 */
    119
    12 /*-------------------------------------------------------------*/
    13 /* INITERM.C -- Source for a custom dynamic link library       */
    14 /*              initialization and termination (_DLL_InitTerm) */
    15 /*              function.                                      */
    16 /*                                                             */
    17 /* When called to perform initialization, this sample function */
    18 /* gets storage for an array of integers, and initializes its  */
    19 /* elements with random integers.  At termination time, it     */
    20 /* frees the array.  Substitute your own special processing.   */
    21 /*-------------------------------------------------------------*/
    22 
    23 
    24 /* Include files */
    2510#define  INCL_DOSMODULEMGR
    2611#define  INCL_DOSPROCESS
     
    3621#include <initdll.h>
    3722
    38 extern "C" {
    39  //Win32 resource table (produced by wrc)
    40  extern DWORD _Resource_PEResTab;
    41 }
     23// Win32 resource table (produced by wrc)
     24extern DWORD msacm32_PEResTab;
     25
    4226static HMODULE dllHandle = 0;
    4327
    4428BOOL WINAPI MSACM32_LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
    4529
    46 //******************************************************************************
    47 //******************************************************************************
    4830BOOL WINAPI LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
    4931{
    50    switch (fdwReason)
    51    {
    52    case DLL_PROCESS_ATTACH:
    53    case DLL_THREAD_ATTACH:
    54    case DLL_THREAD_DETACH:
    55         return MSACM32_LibMain(hinstDLL, fdwReason, fImpLoad);
     32    switch (fdwReason)
     33    {
     34    case DLL_PROCESS_ATTACH:
     35    case DLL_THREAD_ATTACH:
     36    case DLL_THREAD_DETACH:
     37        return MSACM32_LibMain(hinstDLL, fdwReason, fImpLoad);
    5638
    57    case DLL_PROCESS_DETACH:
    58         MSACM32_LibMain(hinstDLL, fdwReason, fImpLoad);
    59         ctordtorTerm();
    60         return TRUE;
    61    }
    62    return FALSE;
     39    case DLL_PROCESS_DETACH:
     40        MSACM32_LibMain(hinstDLL, fdwReason, fImpLoad);
     41#ifdef __IBMC__
     42        ctordtorTerm();
     43#endif
     44        return TRUE;
     45    }
     46    return FALSE;
    6347}
    64 /****************************************************************************/
    65 /* _DLL_InitTerm is the function that gets called by the operating system   */
    66 /* loader when it loads and frees this DLL for each process that accesses   */
    67 /* this DLL.  However, it only gets called the first time the DLL is loaded */
    68 /* and the last time it is freed for a particular process.  The system      */
    69 /* linkage convention MUST be used because the operating system loader is   */
    70 /* calling this function.                                                   */
    71 /****************************************************************************/
    72 unsigned long SYSTEM _DLL_InitTerm(unsigned long hModule, unsigned long
    73                                    ulFlag)
     48
     49ULONG SYSTEM DLL_InitMSAcm32(ULONG hModule)
    7450{
    75    size_t i;
    76    APIRET rc;
     51    CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed  98-03-18 05:28:48*/
    7752
    78    /*-------------------------------------------------------------------------*/
    79    /* If ulFlag is zero then the DLL is being loaded so initialization should */
    80    /* be performed.  If ulFlag is 1 then the DLL is being freed so            */
    81    /* termination should be performed.                                        */
    82    /*-------------------------------------------------------------------------*/
     53    dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&msacm32_PEResTab);
     54    if(dllHandle == 0)
     55        return -1;
    8356
    84    switch (ulFlag) {
    85       case 0 :
    86          ctordtorInit();
     57    return 0;
     58}
    8759
    88          CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed  98-03-18 05:28:48*/
     60void SYSTEM DLL_TermMSAcm32(ULONG hModule)
     61{
     62    if (dllHandle)
     63       UnregisterLxDll(dllHandle);
     64}
    8965
    90          dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&_Resource_PEResTab);
    91          if(dllHandle == 0)
    92                 return 0UL;
     66ULONG SYSTEM DLL_Init(ULONG hModule)
     67{
     68    if (DLL_InitDefault(hModule) == -1)
     69        return -1;
     70    return DLL_InitMSAcm32(hModule);
     71}
    9372
    94          break;
    95       case 1 :
    96          if(dllHandle) {
    97                 UnregisterLxDll(dllHandle);
    98          }
    99          break;
    100 
    101       default  :
    102          return 0UL;
    103    }
    104 
    105    /***********************************************************/
    106    /* A non-zero value must be returned to indicate success.  */
    107    /***********************************************************/
    108    return 1UL;
     73void SYSTEM DLL_Term(ULONG hModule)
     74{
     75    DLL_TermMSAcm32(hModule);
     76    DLL_TermDefault(hModule);
    10977}
    110 //******************************************************************************
    111 //******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.