Changeset 9667 for trunk/src


Ignore:
Timestamp:
Jan 13, 2003, 5:51:40 PM (23 years ago)
Author:
sandervl
Message:

Don't allocate selectors anymore. Allocate tiled memory and call Dos32FlatToSel; Get default stack size from PE header; Thread handles not closed properly

Location:
trunk/src/kernel32
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/heapshared.cpp

    r8898 r9667  
    1 /* $Id: heapshared.cpp,v 1.10 2002-07-21 09:17:28 sandervl Exp $ */
     1/* $Id: heapshared.cpp,v 1.11 2003-01-13 16:51:39 sandervl Exp $ */
    22/*
    33 * Shared heap functions for OS/2
     
    197197void * SYSTEM _smalloc(int size)
    198198{
    199     return _umalloc(sharedHeap, size);
     199    void *chunk;
     200
     201    chunk = _umalloc(sharedHeap, size);
     202    dprintf2(("_smalloc %x returned %x", size, chunk));
     203    return chunk;
    200204}
    201205//******************************************************************************
     
    209213        memset(chunk, 0, size);
    210214    }
     215    dprintf2(("_smallocfill %x %x returned %x", size, filler, chunk));
    211216    return chunk;
    212217}
  • trunk/src/kernel32/hmthread.cpp

    r9561 r9667  
    1 /* $Id: hmthread.cpp,v 1.16 2002-12-29 14:11:23 sandervl Exp $ */
     1/* $Id: hmthread.cpp,v 1.17 2003-01-13 16:51:39 sandervl Exp $ */
    22
    33/*
     
    3535#include "thread.h"
    3636#include "asmutil.h"
     37#include "winexebase.h"
    3738
    3839#define DBG_LOCALLOG    DBG_hmthread
     
    7778    //SvL: Also need more stack in release build (RealPlayer 7 sometimes runs
    7879    //     out of stack
    79     if (cbStack > 0)
     80    if (cbStack > 0) {
    8081        cbStack <<= 1;     // double stack
    81     else
    82         cbStack = 1048576; // per default 1MB stack per thread
     82    }
     83    else {
     84        cbStack = (WinExe) ? WinExe->getDefaultStackSize() : 0x100000; // per default 1MB stack per thread
     85    }
     86    dprintf(("Thread stack size 0x%x", cbStack));
    8387
    8488    //************************************************************************************
     
    8892    pHMHandleData->hHMHandle = O32_CreateThread(lpsa, cbStack, winthread->GetOS2Callback(),
    8993                                                (LPVOID)winthread, fdwCreate, lpIDThread);
     94
     95    if(pHMHandleData->hHMHandle == 0) {
     96        dprintf(("Thread creation failed!!"));
     97        DebugInt3();
     98    }
    9099
    91100    *lpIDThread = MAKE_THREADID(O32_GetCurrentProcessId(), *lpIDThread);
     
    243252BOOL HMDeviceThreadClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    244253{
    245   return TRUE;
     254    dprintf(("HMThread::CloseHandle %08x", pHMHandleData->hHMHandle));
     255    return O32_CloseHandle(pHMHandleData->hHMHandle);
    246256}
    247257//******************************************************************************
  • trunk/src/kernel32/oslibmisc.cpp

    r9582 r9667  
    1 /* $Id: oslibmisc.cpp,v 1.14 2003-01-02 11:50:46 sandervl Exp $ */
     1/* $Id: oslibmisc.cpp,v 1.15 2003-01-13 16:51:39 sandervl Exp $ */
    22/*
    33 * Misc OS/2 util. procedures
     
    135135ULONG OSLibAllocSel(ULONG size, USHORT *selector)
    136136{
     137#if 1
     138   PVOID  pSelMem;
     139   ULONG  sel;
     140   APIRET rc;
     141
     142   rc = DosAllocMem(&pSelMem, size, PAG_COMMIT|PAG_READ|PAG_WRITE|OBJ_TILE);
     143   if(rc != NO_ERROR) {
     144       dprintf(("OSLibAllocSel: DosAllocMem failed with %d", rc));
     145       DebugInt3();
     146       return FALSE;
     147   }
     148   *selector = (DosFlatToSel((ULONG)pSelMem) >> 16);
     149   return *selector != 0;
     150#else
    137151   return (Dos16AllocSeg(size, selector, SEG_NONSHARED) == 0);
     152#endif
    138153}
    139154//******************************************************************************
     
    142157ULONG OSLibFreeSel(USHORT selector)
    143158{
     159#if 1
     160   PVOID  pSelMem;
     161   APIRET rc;
     162
     163   pSelMem = (PVOID)((ULONG)selector * 64*1024);
     164   rc = DosFreeMem(pSelMem);
     165   return rc == NO_ERROR;
     166#else
    144167   return (Dos16FreeSeg(selector) == 0);
     168#endif
    145169}
    146170//******************************************************************************
  • trunk/src/kernel32/thread.cpp

    r9582 r9667  
    1 /* $Id: thread.cpp,v 1.47 2003-01-02 11:50:46 sandervl Exp $ */
     1/* $Id: thread.cpp,v 1.48 2003-01-13 16:51:40 sandervl Exp $ */
    22
    33/*
     
    302302            return 0;
    303303    }
    304     dprintf(("Win32ThreadProc %x\n", GetCurrentThreadId()));
     304    dprintf(("Win32ThreadProc: Thread handle 0x%x, thread id %d", GetCurrentThread(), GetCurrentThreadId()));
    305305
    306306    winteb->flags = me->dwFlags;
  • trunk/src/kernel32/winexebase.cpp

    r9533 r9667  
    1 /* $Id: winexebase.cpp,v 1.21 2002-12-20 10:38:57 sandervl Exp $ */
     1/* $Id: winexebase.cpp,v 1.22 2003-01-13 16:51:40 sandervl Exp $ */
    22
    33/*
     
    123123}
    124124//******************************************************************************
     125//Default stack size is 1MB; the PE loader reads it from the executable header
     126//******************************************************************************
     127ULONG Win32ExeBase::getDefaultStackSize()
     128{
     129    return 0x100000;
     130}
     131//******************************************************************************
    125132//******************************************************************************
    126133BOOL Win32ExeBase::isDll()
    127134{
    128   return FALSE;
     135    return FALSE;
    129136}
    130137//******************************************************************************
  • trunk/src/kernel32/winexebase.h

    r4244 r9667  
    1 /* $Id: winexebase.h,v 1.3 2000-09-12 19:01:59 sandervl Exp $ */
     1/* $Id: winexebase.h,v 1.4 2003-01-13 16:51:40 sandervl Exp $ */
    22
    33/*
     
    2929
    3030virtual BOOL  isDll();
     31
     32virtual ULONG  getDefaultStackSize();
    3133       
    3234protected:
  • trunk/src/kernel32/winexepeldr.cpp

    r9537 r9667  
    1 /* $Id: winexepeldr.cpp,v 1.21 2002-12-20 11:39:41 sandervl Exp $ */
     1/* $Id: winexepeldr.cpp,v 1.22 2003-01-13 16:51:40 sandervl Exp $ */
    22
    33/*
     
    178178}
    179179//******************************************************************************
     180//Default stack size is 1MB; the PE loader reads it from the executable header
    180181//******************************************************************************
     182ULONG Win32PeLdrExe::getDefaultStackSize()
     183{
     184    return (oh.SizeOfStackReserve > 128*1024) ? oh.SizeOfStackReserve : 128*1024;
     185}
     186//******************************************************************************
     187//******************************************************************************
  • trunk/src/kernel32/winexepeldr.h

    r9537 r9667  
    1 /* $Id: winexepeldr.h,v 1.8 2002-12-20 11:39:41 sandervl Exp $ */
     1/* $Id: winexepeldr.h,v 1.9 2003-01-13 16:51:40 sandervl Exp $ */
    22
    33/*
     
    2323virtual ~Win32PeLdrExe();
    2424
     25virtual ULONG getDefaultStackSize();
     26
    2527protected:
    2628private:
Note: See TracChangeset for help on using the changeset viewer.