Changeset 1481 for trunk/src


Ignore:
Timestamp:
Oct 27, 1999, 8:11:40 PM (26 years ago)
Author:
sandervl
Message:

WinExec rewrite + mmap bugfixes

Location:
trunk/src/kernel32
Files:
6 edited

Legend:

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

    r1449 r1481  
    1 /* $Id: Fileio.cpp,v 1.11 1999-10-25 22:45:17 phaller Exp $ */
     1/* $Id: Fileio.cpp,v 1.12 1999-10-27 18:11:38 sandervl Exp $ */
    22
    33/*
     
    4444              HANDLE, hTemplateFile)
    4545{
     46  dprintf(("CreateFileA %s", lpszName));
    4647  return(HMCreateFile(lpszName,
    4748                      fdwAccess,
  • trunk/src/kernel32/KERNEL32.CPP

    r1440 r1481  
    1 /* $Id: KERNEL32.CPP,v 1.24 1999-10-25 18:20:52 achimha Exp $ */
     1/* $Id: KERNEL32.CPP,v 1.25 1999-10-27 18:11:38 sandervl Exp $ */
    22
    33/*
     
    437437    free(asciibuffer);
    438438    return(rc);
    439 }
    440 //******************************************************************************
    441 //******************************************************************************
    442 HINSTANCE WIN32API WinExec(LPCSTR arg1, UINT  arg2)
    443 {
    444     dprintf(("KERNEL32:  WinExec %s\n", arg1));
    445     return (HINSTANCE)O32_WinExec(arg1, arg2);
    446439}
    447440//******************************************************************************
  • trunk/src/kernel32/initterm.cpp

    r1432 r1481  
    1 /* $Id: initterm.cpp,v 1.17 1999-10-24 22:51:21 sandervl Exp $ */
     1/* $Id: initterm.cpp,v 1.18 1999-10-27 18:11:39 sandervl Exp $ */
    22
    33/*
     
    2828#define  INCL_DOSMISC
    2929#define  INCL_DOSPROCESS
     30#define  INCL_DOSSEMAPHORES
    3031#include <os2wrap.h>    //Odin32 OS/2 api wrappers
    3132#include <stdlib.h>
     
    4142#include "oslibmisc.h"
    4243#include "heapshared.h"
     44#include "mmap.h"
    4345
    4446/*-------------------------------------------------------------------*/
     
    148150{
    149151    dprintf(("kernel32 exit %d\n", ulReason));
     152    //Flush and delete all open memory mapped files
     153    Win32MemMap::deleteAll();
     154
    150155    WriteOutProfiles();
    151156    DestroyTIB();
  • trunk/src/kernel32/makefile

    r1476 r1481  
    1 # $Id: makefile,v 1.48 1999-10-27 12:38:48 phaller Exp $
     1# $Id: makefile,v 1.49 1999-10-27 18:11:39 sandervl Exp $
    22
    33#
     
    132132    os2heap.h
    133133
    134 initterm.OBJ: .\initterm.cpp initterm.h  heapshared.h
     134initterm.OBJ: .\initterm.cpp initterm.h  heapshared.h  mmap.h
    135135
    136136thunk.OBJ: \
  • trunk/src/kernel32/mmap.cpp

    r1432 r1481  
    1 /* $Id: mmap.cpp,v 1.19 1999-10-24 22:51:21 sandervl Exp $ */
     1/* $Id: mmap.cpp,v 1.20 1999-10-27 18:11:39 sandervl Exp $ */
    22
    33/*
     
    3232//Global DLL Data
    3333#pragma data_seg(_GLOBALDATA)
    34 Win32MemMapView *Win32MemMapView::mapviews = NULL;
    3534Win32MemMap     *Win32MemMap::memmaps = NULL;
    3635VMutex           globalmapMutex(VMUTEX_SHARED);
    37 VMutex           globalviewMutex(VMUTEX_SHARED);
    3836#pragma data_seg()
     37VMutex           globalviewMutex;
     38Win32MemMapView *Win32MemMapView::mapviews = NULL;
    3939
    4040//******************************************************************************
     
    9595  Win32MemMapView::deleteViews(this); //delete all views of our memory mapped file
    9696
     97  dprintf(("Win32MemMap dtor: deleting view %x %x", pMapping, mSize));
     98
    9799  mapMutex.enter();
    98100  if(lpszMapName) {
     
    404406  }
    405407  globalmapMutex.leave();
    406   dprintf(("Win32MemMap::findMap: couldn't find map %s", lpszName));
     408  if(!map) dprintf(("Win32MemMap::findMap: couldn't find map %s", lpszName));
    407409  return map;
    408410}
     
    517519        return;
    518520
     521  dprintf(("Win32MemMapView dtor: deleting view %x %x", mOffset, mSize));
     522
    519523  if(mfAccess != MEMMAP_ACCESS_READ)
    520524        mParentMap->flushView(mOffset, mSize);
     
    545549void Win32MemMapView::deleteViews(Win32MemMap *map)
    546550{
    547   DWORD processId = GetCurrentProcess();
    548 
    549551  globalviewMutex.enter();
    550552  Win32MemMapView *view = mapviews, *nextview;
     
    553555        while(view) {
    554556                nextview = view->next;
    555                 if(view->getParentMap() == map && view->getProcessId() == processId)
     557                if(view->getParentMap() == map)
    556558                {
    557559                        globalviewMutex.leave();
     
    578580        while(view && (ULONG)view->getViewAddr() <= address) {
    579581                if((ULONG)view->getViewAddr() <= address &&
    580                    (ULONG)view->getViewAddr() + view->getSize() >= address &&
     582                   (ULONG)view->getViewAddr() + view->getSize() > address &&
    581583                   view->getAccessFlags() >= accessType)
    582584                {
     
    590592  }
    591593success:
     594  if(view)
     595        dprintf(("findMapByView %x %x -> %x off %x", address, accessType, view->getViewAddr(), *offset));
     596
    592597  globalviewMutex.leave();
    593598  if(pView) *pView = view;
  • trunk/src/kernel32/wprocess.cpp

    r1475 r1481  
    1 /* $Id: wprocess.cpp,v 1.42 1999-10-27 10:35:42 sandervl Exp $ */
     1/* $Id: wprocess.cpp,v 1.43 1999-10-27 18:11:40 sandervl Exp $ */
    22
    33/*
     
    655655//******************************************************************************
    656656//******************************************************************************
     657HINSTANCE WIN32API WinExec(LPCSTR lpCmdLine, UINT nCmdShow)
     658{
     659 STARTUPINFOA        startinfo = {0};
     660 PROCESS_INFORMATION procinfo;
     661
     662    dprintf(("KERNEL32: WinExec %s\n", lpCmdLine));
     663    startinfo.dwFlags = nCmdShow;
     664    if(CreateProcessA(NULL, (LPSTR)lpCmdLine, NULL, NULL, FALSE, 0, NULL, NULL,
     665                      &startinfo, &procinfo) == FALSE)
     666    {
     667        return 0;
     668    }
     669    return procinfo.hProcess; //correct?
     670}
     671//******************************************************************************
     672//******************************************************************************
    657673FARPROC WIN32API GetProcAddress(HMODULE hModule, LPCSTR lpszProc)
    658674{
Note: See TracChangeset for help on using the changeset viewer.