- Timestamp:
- Aug 22, 1999, 1:11:11 PM (26 years ago)
- Location:
- trunk/src/kernel32
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/KERNEL32.CPP
r558 r617 1 /* $Id: KERNEL32.CPP,v 1.1 6 1999-08-18 21:54:26 phallerExp $ */1 /* $Id: KERNEL32.CPP,v 1.17 1999-08-22 11:11:09 sandervl Exp $ */ 2 2 3 3 /* … … 937 937 VOID WIN32API UninitializeCriticalSection(CRITICAL_SECTION * lpcsCriticalSection) 938 938 { 939 dprintf(("KERNEL32: UninitializeCriticalSection \n"));939 dprintf(("KERNEL32: UninitializeCriticalSection NOT IMPLEMENTED\n")); 940 940 } 941 941 -
trunk/src/kernel32/devio.cpp
r120 r617 1 /* $Id: devio.cpp,v 1. 3 1999-06-19 10:54:41sandervl Exp $ */1 /* $Id: devio.cpp,v 1.4 1999-08-22 11:11:09 sandervl Exp $ */ 2 2 3 3 /* … … 26 26 #include "cio.h" 27 27 #include "map.h" 28 #include "except .h"28 #include "exceptutil.h" 29 29 30 30 static fX86Init = FALSE; -
trunk/src/kernel32/exceptions.cpp
r420 r617 1 /* $Id: exceptions.cpp,v 1. 9 1999-08-05 13:11:38 phallerExp $ */1 /* $Id: exceptions.cpp,v 1.10 1999-08-22 11:11:10 sandervl Exp $ */ 2 2 3 3 /* … … 55 55 #include <builtin.h> 56 56 #include "exceptions.h" 57 #include "except .h"57 #include "exceptutil.h" 58 58 #include "misc.h" 59 59 … … 450 450 excptaddr = getEBX(); 451 451 452 dprintf(("KERNEL32: KillWin32Process: Do you feel lucky, punk?!\n")); 453 // sprintf(excptmsg, "Fatal Exception %X at %X", excptnr, excptaddr); 454 // WinMessageBox(HWND_DESKTOP, NULL, excptmsg, "Win32 for OS/2", 0, MB_ERROR | MB_OK); 452 dprintf(("KERNEL32: KillWin32Process: Do you feel lucky, punk? (FS=%d)!\n", GetFS())); 453 //Restore original OS/2 TIB selector 454 RestoreOS2FS(); 455 455 456 SetExceptionChain((ULONG)0); 456 457 DosExit(EXIT_PROCESS, 666); … … 861 862 #endif 862 863 863 ERR _SystemOS2ExceptionHandler(PEXCEPTIONREPORTRECORD pERepRec,864 PEXCEPTIONREGISTRATIONRECORD pERegRec,865 PCONTEXTRECORD pCtxRec,866 PVOID p)864 ULONG APIENTRY OS2ExceptionHandler(PEXCEPTIONREPORTRECORD pERepRec, 865 PEXCEPTIONREGISTRATIONRECORD pERegRec, 866 PCONTEXTRECORD pCtxRec, 867 PVOID p) 867 868 { 868 869 // pERegRec->prev_structure = 0; … … 885 886 pCtxRec->ctx_stack[0].signexp = 0; 886 887 887 return ( ERR)(XCPT_CONTINUE_EXECUTION);888 return (XCPT_CONTINUE_EXECUTION); 888 889 889 890 case XCPT_PROCESS_TERMINATE: … … 911 912 pCtxRec->ctx_RegEax = pERepRec->ExceptionNum; 912 913 pCtxRec->ctx_RegEbx = pCtxRec->ctx_RegEip; 913 return ( ERR)(XCPT_CONTINUE_EXECUTION);914 return (XCPT_CONTINUE_EXECUTION); 914 915 915 916 default: //non-continuable exceptions … … 919 920 } 920 921 922 /***************************************************************************** 923 * Name : void OS2SetExceptionHandler 924 * Purpose : Sets the main thread exception handler in FS:[0] (original OS/2 FS selector) 925 * Parameters: exceptframe: pointer to exception handler frame on stack (2 ULONGs) 926 * Variables : 927 * Result : 928 * Remark : 929 * Status : 930 * 931 * Author : Sander van Leeuwen [Sun, 1999/08/21 12:16] 932 *****************************************************************************/ 933 void OS2SetExceptionHandler(void *exceptframe) 934 { 935 PEXCEPTIONREGISTRATIONRECORD pExceptRec = (PEXCEPTIONREGISTRATIONRECORD)exceptframe; 936 937 pExceptRec->prev_structure = 0; 938 pExceptRec->ExceptionHandler = OS2ExceptionHandler; 939 940 /* disable trap popups */ 941 // DosError(FERR_DISABLEEXCEPTION | FERR_DISABLEHARDERR); 942 943 DosSetExceptionHandler(pExceptRec); 944 } 945 946 /***************************************************************************** 947 * Name : void OS2UnsetExceptionHandler 948 * Purpose : Removes the main thread exception handler in FS:[0] (original OS/2 FS selector) 949 * Parameters: exceptframe: pointer to exception handler frame on stack (2 ULONGs) 950 * Variables : 951 * Result : 952 * Remark : 953 * Status : 954 * 955 * Author : Sander van Leeuwen [Sun, 1999/08/21 12:16] 956 *****************************************************************************/ 957 void OS2UnsetExceptionHandler(void *exceptframe) 958 { 959 DosUnsetExceptionHandler((PEXCEPTIONREGISTRATIONRECORD)exceptframe); 960 } 921 961 922 962 /***************************************************************************** -
trunk/src/kernel32/makefile
r607 r617 1 # $Id: makefile,v 1.2 3 1999-08-21 16:29:27sandervl Exp $1 # $Id: makefile,v 1.24 1999-08-22 11:11:10 sandervl Exp $ 2 2 3 3 # … … 21 21 OBJS = KERNEL32.OBJ KOBJECTS.OBJ CONSOLE.OBJ CONIN.OBJ CONBUFFER.OBJ \ 22 22 CONOUT.OBJ UNICODE.OBJ network.OBJ DEVIO.OBJ profile.obj \ 23 THREAD.OBJ virtual.obj THUNK.OBJ \ 24 OBSOLETE.OBJ \ 25 COMM.OBJ \ 26 MESSAGE.OBJ \ 27 RESOURCE.OBJ \ 28 NAMEID.OBJ \ 29 WINRES.OBJ \ 30 WINMOD.OBJ \ 31 OS2NATIVE.OBJ \ 32 EXCEPTIONS.OBJ \ 33 LFILE.OBJ \ 34 NPIPE.OBJ \ 35 MISC.OBJ \ 36 EXCEPT.OBJ \ 37 LANG.OBJ \ 38 ICCIO.OBJ \ 39 MAP.OBJ \ 23 THREAD.OBJ virtual.obj THUNK.OBJ OBSOLETE.OBJ COMM.OBJ \ 24 MESSAGE.OBJ RESOURCE.OBJ NAMEID.OBJ WINRES.OBJ WINMOD.OBJ \ 25 OS2NATIVE.OBJ EXCEPTIONS.OBJ LFILE.OBJ NPIPE.OBJ \ 26 MISC.OBJ EXCEPTUTIL.OBJ LANG.OBJ ICCIO.OBJ MAP.OBJ \ 40 27 WIN32UTIL.OBJ \ 41 28 heap.OBJ \ … … 95 82 96 83 kernel32.OBJ: kernel32.cpp \ 97 except .h \84 exceptutil.h \ 98 85 $(PDWIN32_INCLUDE)\unicode.h \ 99 86 $(PDWIN32_INCLUDE)\heap.h \ … … 162 149 .\exceptions.cpp \ 163 150 $(PDWIN32_INCLUDE)\exceptions.h \ 164 except .h151 exceptutil.h 165 152 166 153 message.OBJ: \ … … 170 157 devio.OBJ: \ 171 158 .\devio.cpp \ 159 exceptutil.h \ 172 160 devio.h \ 173 161 map.h \ … … 262 250 $(PDWIN32_INCLUDE)\misc.h 263 251 264 except .OBJ: \265 .\except .asm252 exceptutil.OBJ: \ 253 .\exceptutil.asm 266 254 267 255 iccio.OBJ: \ -
trunk/src/kernel32/os2native.cpp
r130 r617 1 /* $Id: os2native.cpp,v 1. 4 1999-06-20 12:46:09sandervl Exp $ */1 /* $Id: os2native.cpp,v 1.5 1999-08-22 11:11:10 sandervl Exp $ */ 2 2 3 3 /* … … 52 52 //****************************************************************************** 53 53 LPVOID WIN32API VirtualAlloc(LPVOID lpvAddress, DWORD cbSize, DWORD fdwAllocationType, 54 54 DWORD fdwProtect) 55 55 { 56 56 PVOID Address = lpvAddress; 57 ULONG flag = 0 ;57 ULONG flag = 0, base; 58 58 APIRET rc; 59 59 60 60 dprintf(("VirtualAlloc at %X; %d bytes, fAlloc %d, fProtect %d\n", (int)lpvAddress, cbSize, fdwAllocationType, fdwProtect)); 61 62 if (cbSize > 0x7fc00000) /* 2Gb - 4Mb */ 63 { 64 dprintf(("VirtualAlloc: size too large")); 65 // SetLastError( ERROR_OUTOFMEMORY ); 66 return NULL; 67 } 68 69 if (!(fdwAllocationType & (MEM_COMMIT | MEM_RESERVE)) || 70 (fdwAllocationType & ~(MEM_COMMIT | MEM_RESERVE))) 71 { 72 dprintf(("VirtualAlloc: Invalid parameter")); 73 // SetLastError( ERROR_INVALID_PARAMETER ); 74 return NULL; 75 } 61 76 62 77 if(fdwAllocationType & MEM_COMMIT) { … … 117 132 } 118 133 119 //TODO: Set last error in case rc != 0134 //TODO: Set last error in case rc != 0 120 135 if(rc) { 121 136 dprintf(("DosSetMem returned %d\n", rc)); 137 // SetLastError( ERROR_OUTOFMEMORY ); 122 138 return(NULL); 123 139 } -
trunk/src/kernel32/thread.cpp
r532 r617 1 /* $Id: thread.cpp,v 1.1 0 1999-08-17 17:04:52sandervl Exp $ */1 /* $Id: thread.cpp,v 1.11 1999-08-22 11:11:10 sandervl Exp $ */ 2 2 3 3 /* … … 13 13 #include <stdarg.h> 14 14 #include "thread.h" 15 #include "except .h"15 #include "exceptutil.h" 16 16 #include <misc.h> 17 17 #include <wprocess.h> 18 18 #include <windll.h> 19 19 #include <winexe.h> 20 #include <except.h> 20 21 21 22 static DWORD OPEN32API Win32ThreadProc(LPVOID lpData); … … 154 155 static DWORD OPEN32API Win32ThreadProc(LPVOID lpData) 155 156 { 157 EXCEPTION_FRAME exceptFrame; 156 158 Win32Thread *me = (Win32Thread *)lpData; 157 159 WIN32THREADPROC winthread = me->pCallback; … … 179 181 Win32Dll::attachThreadToAllDlls(); //send DLL_THREAD_ATTACH message to all dlls 180 182 183 //Note: The Win32 exception structure references by FS:[0] is the same 184 // in OS/2 185 OS2SetExceptionHandler((void *)&exceptFrame); 181 186 rc = winthread(userdata); 187 OS2UnsetExceptionHandler((void *)&exceptFrame); 182 188 183 189 Win32Dll::detachThreadFromAllDlls(); //send DLL_THREAD_DETACH message to all dlls -
trunk/src/kernel32/windll.cpp
r550 r617 1 /* $Id: windll.cpp,v 1.1 0 1999-08-18 17:18:00sandervl Exp $ */1 /* $Id: windll.cpp,v 1.11 1999-08-22 11:11:11 sandervl Exp $ */ 2 2 3 3 /* … … 28 28 #include <windll.h> 29 29 #include <wprocess.h> 30 #include "exceptions.h" 31 #include "exceptutil.h" 30 32 #include "cio.h" 31 33 … … 268 270 BOOL Win32Dll::attachProcess() 269 271 { 272 WINEXCEPTION_FRAME exceptFrame; 273 USHORT sel; 270 274 BOOL rc; 271 USHORT sel;272 275 273 276 //Allocate TLS index for this module … … 282 285 dprintf(("attachProcess to dll %s", szModule)); 283 286 287 //Note: The Win32 exception structure references by FS:[0] is the same 288 // in OS/2 289 OS2SetExceptionHandler((void *)&exceptFrame); 290 284 291 sel = SetWin32TIB(); 285 292 rc = dllEntryPoint(hinstance, DLL_PROCESS_ATTACH, 0); 286 293 SetFS(sel); 294 295 OS2UnsetExceptionHandler((void *)&exceptFrame); 296 287 297 return rc; 288 298 } … … 291 301 BOOL Win32Dll::detachProcess() 292 302 { 293 BOOL rc;303 WINEXCEPTION_FRAME exceptFrame; 294 304 USHORT sel; 305 BOOL rc; 295 306 296 307 if(fSystemDll || fSkipEntryCalls) { … … 300 311 301 312 dprintf(("detachProcess from dll %s", szModule)); 313 314 //Note: The Win32 exception structure references by FS:[0] is the same 315 // in OS/2 316 OS2SetExceptionHandler((void *)&exceptFrame); 302 317 303 318 fUnloaded = TRUE; … … 307 322 tlsDetachThread(); //destroy TLS (main thread) 308 323 tlsDelete(); 324 325 OS2UnsetExceptionHandler((void *)&exceptFrame); 326 309 327 return rc; 310 328 } … … 313 331 BOOL Win32Dll::attachThread() 314 332 { 333 WINEXCEPTION_FRAME exceptFrame; 334 BOOL rc; 335 315 336 if(fSystemDll || fSkipEntryCalls) 316 337 return(TRUE); 317 338 318 339 dprintf(("attachThread to dll %s", szModule)); 319 return dllEntryPoint(hinstance, DLL_THREAD_ATTACH, 0); 340 //Note: The Win32 exception structure references by FS:[0] is the same 341 // in OS/2 342 OS2SetExceptionHandler((void *)&exceptFrame); 343 344 rc = dllEntryPoint(hinstance, DLL_THREAD_ATTACH, 0); 345 346 OS2UnsetExceptionHandler((void *)&exceptFrame); 347 return rc; 320 348 } 321 349 //****************************************************************************** … … 323 351 BOOL Win32Dll::detachThread() 324 352 { 353 WINEXCEPTION_FRAME exceptFrame; 354 BOOL rc; 355 325 356 if(fSystemDll || fSkipEntryCalls) 326 357 return(TRUE); 327 358 328 359 dprintf(("attachThread from dll %s", szModule)); 329 return dllEntryPoint(hinstance, DLL_THREAD_DETACH, 0); 360 361 //Note: The Win32 exception structure references by FS:[0] is the same 362 // in OS/2 363 OS2SetExceptionHandler((void *)&exceptFrame); 364 365 rc = dllEntryPoint(hinstance, DLL_THREAD_DETACH, 0); 366 367 OS2UnsetExceptionHandler((void *)&exceptFrame); 368 return rc; 330 369 } 331 370 //****************************************************************************** -
trunk/src/kernel32/winexe.cpp
r506 r617 1 /* $Id: winexe.cpp,v 1. 9 1999-08-16 13:54:32sandervl Exp $ */1 /* $Id: winexe.cpp,v 1.10 1999-08-22 11:11:11 sandervl Exp $ */ 2 2 3 3 /* … … 27 27 #include <wprocess.h> 28 28 #include <pefile.h> 29 #include "exceptions.h" 30 #include "exceptutil.h" 29 31 #include "cio.h" 30 32 … … 44 46 //****************************************************************************** 45 47 Win32Exe::Win32Exe(char *szFileName) : Win32Image(szFileName), fConsoleApp(FALSE), 46 cmdline(NULL) , OS2InstanceHandle(-1)48 cmdline(NULL) 47 49 { 48 50 fConsoleApp = (oh.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI); … … 63 65 Win32Exe::Win32Exe(HINSTANCE hinstance, int NameTableId, int Win32TableId) : 64 66 Win32Image(hinstance, NameTableId, Win32TableId), 65 fConsoleApp(FALSE), cmdline(NULL) , OS2InstanceHandle(-1)67 fConsoleApp(FALSE), cmdline(NULL) 66 68 { 67 69 if(GET_CONSOLE(Win32TableId) == 1) {//console app … … 86 88 ULONG Win32Exe::start() 87 89 { 90 WINEXCEPTION_FRAME exceptFrame; 88 91 ULONG rc; 89 92 … … 99 102 tlsAttachThread(); //setup TLS (main thread) 100 103 104 //Note: The Win32 exception structure references by FS:[0] is the same 105 // in OS/2 106 OS2SetExceptionHandler((void *)&exceptFrame); 107 101 108 SetWin32TIB(); 102 109 rc = ((WIN32EXEENTRY)entryPoint)(); 103 110 RestoreOS2TIB(); 111 112 OS2UnsetExceptionHandler((void *)&exceptFrame); 113 104 114 return rc; 105 115 } -
trunk/src/kernel32/wintls.cpp
r286 r617 1 /* $Id: wintls.cpp,v 1. 3 1999-07-09 15:58:54sandervl Exp $ */1 /* $Id: wintls.cpp,v 1.4 1999-08-22 11:11:11 sandervl Exp $ */ 2 2 /* 3 3 * Win32 TLS API functions … … 13 13 #include <thread.h> 14 14 #include <wprocess.h> 15 #include <except.h> 16 #include "exceptutil.h" 15 17 16 18 //****************************************************************************** … … 49 51 void Win32Image::tlsAttachThread() //setup TLS structures for new thread 50 52 { 53 EXCEPTION_FRAME exceptFrame; 51 54 PIMAGE_TLS_CALLBACK *pCallback; 52 TEB *winteb; 53 char *tibmem; 55 USHORT sel; 56 TEB *winteb; 57 char *tibmem; 54 58 55 59 if(!tlsAddress) … … 86 90 while(*pCallback) { 87 91 dprintf(("tlsAttachThread: calling TLS Callback %x", *pCallback)); 92 93 OS2SetExceptionHandler((void *)&exceptFrame); 94 sel = SetWin32TIB(); 88 95 (*pCallback)((LPVOID)hinstance, DLL_THREAD_ATTACH, 0); 96 SetFS(sel); 97 OS2UnsetExceptionHandler((void *)&exceptFrame); 98 89 99 dprintf(("tlsAttachThread: finished calling TLS Callback %x", *pCallback)); 90 100 *pCallback++; … … 97 107 void Win32Image::tlsDetachThread() //destroy TLS structures 98 108 { 109 EXCEPTION_FRAME exceptFrame; 99 110 PIMAGE_TLS_CALLBACK *pCallback; 100 TEB *winteb; 111 USHORT sel; 112 TEB *winteb; 101 113 102 114 if(!tlsAddress) … … 109 121 while(*pCallback) { 110 122 dprintf(("tlsDetachThread: calling TLS Callback %x", *pCallback)); 123 124 OS2SetExceptionHandler((void *)&exceptFrame); 125 sel = SetWin32TIB(); 111 126 (*pCallback)((LPVOID)hinstance, DLL_THREAD_DETACH, 0); 127 SetFS(sel); 128 OS2UnsetExceptionHandler((void *)&exceptFrame); 129 112 130 dprintf(("tlsDetachThread: finished calling TLS Callback %x", *pCallback)); 113 131 *pCallback++; -
trunk/src/kernel32/wprocess.cpp
r593 r617 1 /* $Id: wprocess.cpp,v 1.2 3 1999-08-19 22:10:03sandervl Exp $ */1 /* $Id: wprocess.cpp,v 1.24 1999-08-22 11:11:11 sandervl Exp $ */ 2 2 3 3 /* … … 23 23 #endif 24 24 25 #include "except .h"25 #include "exceptutil.h" 26 26 #include "os2util.h" 27 27
Note:
See TracChangeset
for help on using the changeset viewer.