From e80f6ad31e3d49fb3147eac2fc8d6d7b878c844c Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Thu, 16 Nov 2017 07:01:07 +0000 Subject: [PATCH] oberon07: fix for r7107, NEW/DISPOSE support multi-thread mode git-svn-id: svn://kolibrios.org@7110 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/oberon07/Compiler.kex | Bin 34594 -> 34748 bytes .../develop/oberon07/Lib/KolibriOS/API.ob07 | 465 ++++++++++++------ .../develop/oberon07/Lib/Windows32/RTL.ob07 | 5 +- 3 files changed, 308 insertions(+), 162 deletions(-) diff --git a/programs/develop/oberon07/Compiler.kex b/programs/develop/oberon07/Compiler.kex index 5e9d655ecc4add336ed6b579720a412e96d7de61..54dcae25b8bc75384c7fa8ffd28e93f7bffab84a 100644 GIT binary patch literal 34748 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 literal 34594 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 diff --git a/programs/develop/oberon07/Lib/KolibriOS/API.ob07 b/programs/develop/oberon07/Lib/KolibriOS/API.ob07 index d68a10d775..ca705f15c0 100644 --- a/programs/develop/oberon07/Lib/KolibriOS/API.ob07 +++ b/programs/develop/oberon07/Lib/KolibriOS/API.ob07 @@ -19,197 +19,342 @@ MODULE API; IMPORT sys := SYSTEM; + CONST - MAX_SIZE = 16 * 400H; - HEAP_SIZE = 1 * 100000H; + MAX_SIZE = 16 * 400H; + HEAP_SIZE = 1 * 100000H; + + _new = 1; + _dispose = 2; + + +TYPE + + CRITICAL_SECTION = ARRAY 2 OF INTEGER; + VAR - heap, endheap: INTEGER; - pockets: ARRAY MAX_SIZE DIV 32 + 1 OF INTEGER; + heap, endheap: INTEGER; + pockets: ARRAY MAX_SIZE DIV 32 + 1 OF INTEGER; -PROCEDURE [stdcall] zeromem*(size, adr: INTEGER); -BEGIN - sys.CODE("578B7D0C8B4D0833C09CFCF3AB9D5F") -END zeromem; + CriticalSection: CRITICAL_SECTION; -PROCEDURE mem_commit*(adr, size: INTEGER); -VAR tmp: INTEGER; -BEGIN - FOR tmp := adr TO adr + size - 1 BY 4096 DO - sys.PUT(tmp, 0) - END -END mem_commit; -PROCEDURE strncmp*(a, b, n: INTEGER): INTEGER; -VAR A, B: CHAR; Res: INTEGER; +PROCEDURE [stdcall] zeromem* (size, adr: INTEGER); BEGIN - Res := 0; - WHILE n > 0 DO - sys.GET(a, A); INC(a); - sys.GET(b, B); INC(b); - DEC(n); - IF A # B THEN - Res := ORD(A) - ORD(B); - n := 0 - ELSIF A = 0X THEN - n := 0 + sys.CODE("578B7D0C8B4D0833C09CFCF3AB9D5F") +END zeromem; + + +PROCEDURE mem_commit* (adr, size: INTEGER); +VAR + tmp: INTEGER; +BEGIN + FOR tmp := adr TO adr + size - 1 BY 4096 DO + sys.PUT(tmp, 0) END - END - RETURN Res -END strncmp; +END mem_commit; -PROCEDURE [stdcall] sysfunc1*(arg1: INTEGER): INTEGER; -BEGIN - sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) - sys.CODE("CD40"); (* int 40h *) - sys.CODE("C9"); (* leave *) - sys.CODE("C20400"); (* ret 04h *) - RETURN 0 -END sysfunc1; -PROCEDURE [stdcall] sysfunc2*(arg1, arg2: INTEGER): INTEGER; +PROCEDURE strncmp* (a, b, n: INTEGER): INTEGER; +VAR + A, B: CHAR; + Res: INTEGER; BEGIN - sys.CODE("53"); (* push ebx *) - sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) - sys.CODE("8B5D0C"); (* mov ebx, [ebp + 0Ch] *) - sys.CODE("CD40"); (* int 40h *) - sys.CODE("5B"); (* pop ebx *) - sys.CODE("C9"); (* leave *) - sys.CODE("C20800"); (* ret 08h *) - RETURN 0 -END sysfunc2; + Res := 0; + WHILE n > 0 DO + sys.GET(a, A); INC(a); + sys.GET(b, B); INC(b); + DEC(n); + IF A # B THEN + Res := ORD(A) - ORD(B); + n := 0 + ELSIF A = 0X THEN + n := 0 + END + END + RETURN Res +END strncmp; -PROCEDURE [stdcall] sysfunc3*(arg1, arg2, arg3: INTEGER): INTEGER; + +PROCEDURE [stdcall] sysfunc1* (arg1: INTEGER): INTEGER; BEGIN - sys.CODE("53"); (* push ebx *) - sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) - sys.CODE("8B5D0C"); (* mov ebx, [ebp + 0Ch] *) - sys.CODE("8B4D10"); (* mov ecx, [ebp + 10h] *) - sys.CODE("CD40"); (* int 40h *) - sys.CODE("5B"); (* pop ebx *) - sys.CODE("C9"); (* leave *) - sys.CODE("C20C00"); (* ret 0Ch *) - RETURN 0 + sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) + sys.CODE("CD40"); (* int 40h *) + sys.CODE("C9"); (* leave *) + sys.CODE("C20400"); (* ret 04h *) + RETURN 0 +END sysfunc1; + + +PROCEDURE [stdcall] sysfunc2* (arg1, arg2: INTEGER): INTEGER; +BEGIN + sys.CODE("53"); (* push ebx *) + sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) + sys.CODE("8B5D0C"); (* mov ebx, [ebp + 0Ch] *) + sys.CODE("CD40"); (* int 40h *) + sys.CODE("5B"); (* pop ebx *) + sys.CODE("C9"); (* leave *) + sys.CODE("C20800"); (* ret 08h *) + RETURN 0 +END sysfunc2; + + +PROCEDURE [stdcall] sysfunc3* (arg1, arg2, arg3: INTEGER): INTEGER; +BEGIN + sys.CODE("53"); (* push ebx *) + sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) + sys.CODE("8B5D0C"); (* mov ebx, [ebp + 0Ch] *) + sys.CODE("8B4D10"); (* mov ecx, [ebp + 10h] *) + sys.CODE("CD40"); (* int 40h *) + sys.CODE("5B"); (* pop ebx *) + sys.CODE("C9"); (* leave *) + sys.CODE("C20C00"); (* ret 0Ch *) + RETURN 0 END sysfunc3; -PROCEDURE _NEW*(size: INTEGER): INTEGER; -VAR res, idx, temp: INTEGER; -BEGIN - IF size <= MAX_SIZE THEN - idx := ASR(size, 5); - res := pockets[idx]; - IF res # 0 THEN - sys.GET(res, pockets[idx]); - sys.PUT(res, size); - INC(res, 4) - ELSE - temp := 0; - IF heap + size >= endheap THEN - IF sysfunc2(18, 16) > ASR(HEAP_SIZE, 10) THEN - temp := sysfunc3(68, 12, HEAP_SIZE) - ELSE - temp := 0 - END; - IF temp # 0 THEN - mem_commit(temp, HEAP_SIZE); - heap := temp; - endheap := heap + HEAP_SIZE - ELSE - temp := -1 - END - END; - IF (heap # 0) & (temp # -1) THEN - sys.PUT(heap, size); - res := heap + 4; - heap := heap + size - ELSE - res := 0 - END - END - ELSE - IF sysfunc2(18, 16) > ASR(size, 10) THEN - res := sysfunc3(68, 12, size); - IF res # 0 THEN - mem_commit(res, size); - sys.PUT(res, size); - INC(res, 4) - END - ELSE - res := 0 - END - END; - IF res # 0 THEN - zeromem(ASR(size, 2) - 1, res) - END - RETURN res -END _NEW; -PROCEDURE _DISPOSE*(ptr: INTEGER): INTEGER; -VAR size, idx: INTEGER; +PROCEDURE [stdcall] sysfunc4* (arg1, arg2, arg3, arg4: INTEGER): INTEGER; BEGIN - DEC(ptr, 4); - sys.GET(ptr, size); - IF size <= MAX_SIZE THEN - idx := ASR(size, 5); - sys.PUT(ptr, pockets[idx]); - pockets[idx] := ptr - ELSE - size := sysfunc3(68, 13, ptr) - END - RETURN 0 + sys.CODE("53"); (* push ebx *) + sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) + sys.CODE("8B5D0C"); (* mov ebx, [ebp + 0Ch] *) + sys.CODE("8B4D10"); (* mov ecx, [ebp + 10h] *) + sys.CODE("8B5514"); (* mov edx, [ebp + 14h] *) + sys.CODE("CD40"); (* int 40h *) + sys.CODE("5B"); (* pop ebx *) + sys.CODE("C9"); (* leave *) + sys.CODE("C21000"); (* ret 10h *) + RETURN 0 +END sysfunc4; + + +PROCEDURE [stdcall] sysfunc5* (arg1, arg2, arg3, arg4, arg5: INTEGER): INTEGER; +BEGIN + sys.CODE("53"); (* push ebx *) + sys.CODE("56"); (* push esi *) + sys.CODE("8B4508"); (* mov eax, [ebp + 08h] *) + sys.CODE("8B5D0C"); (* mov ebx, [ebp + 0Ch] *) + sys.CODE("8B4D10"); (* mov ecx, [ebp + 10h] *) + sys.CODE("8B5514"); (* mov edx, [ebp + 14h] *) + sys.CODE("8B7518"); (* mov esi, [ebp + 18h] *) + sys.CODE("CD40"); (* int 40h *) + sys.CODE("5E"); (* pop esi *) + sys.CODE("5B"); (* pop ebx *) + sys.CODE("C9"); (* leave *) + sys.CODE("C21400"); (* ret 14h *) + RETURN 0 +END sysfunc5; + + +PROCEDURE switch_task; +VAR + res: INTEGER; +BEGIN + res := sysfunc2(68, 1) +END switch_task; + + +PROCEDURE futex_create (ptr: INTEGER): INTEGER; + RETURN sysfunc3(77, 0, ptr) +END futex_create; + + +PROCEDURE futex_wait (futex, value, timeout: INTEGER); +VAR + res: INTEGER; +BEGIN + res := sysfunc5(77, 2, futex, value, timeout) +END futex_wait; + + +PROCEDURE futex_wake (futex, number: INTEGER); +VAR + res: INTEGER; +BEGIN + res := sysfunc4(77, 3, futex, number) +END futex_wake; + + +PROCEDURE EnterCriticalSection* (VAR CriticalSection: CRITICAL_SECTION); +BEGIN + switch_task; + futex_wait(CriticalSection[0], 1, 10000); + CriticalSection[1] := 1 +END EnterCriticalSection; + + +PROCEDURE LeaveCriticalSection* (VAR CriticalSection: CRITICAL_SECTION); +BEGIN + CriticalSection[1] := 0; + futex_wake(CriticalSection[0], 1) +END LeaveCriticalSection; + + +PROCEDURE InitializeCriticalSection* (VAR CriticalSection: CRITICAL_SECTION); +BEGIN + CriticalSection[0] := futex_create(sys.ADR(CriticalSection[1])); + CriticalSection[1] := 0 +END InitializeCriticalSection; + + +PROCEDURE __NEW (size: INTEGER): INTEGER; +VAR + res, idx, temp: INTEGER; +BEGIN + IF size <= MAX_SIZE THEN + idx := ASR(size, 5); + res := pockets[idx]; + IF res # 0 THEN + sys.GET(res, pockets[idx]); + sys.PUT(res, size); + INC(res, 4) + ELSE + temp := 0; + IF heap + size >= endheap THEN + IF sysfunc2(18, 16) > ASR(HEAP_SIZE, 10) THEN + temp := sysfunc3(68, 12, HEAP_SIZE) + ELSE + temp := 0 + END; + IF temp # 0 THEN + mem_commit(temp, HEAP_SIZE); + heap := temp; + endheap := heap + HEAP_SIZE + ELSE + temp := -1 + END + END; + IF (heap # 0) & (temp # -1) THEN + sys.PUT(heap, size); + res := heap + 4; + heap := heap + size + ELSE + res := 0 + END + END + ELSE + IF sysfunc2(18, 16) > ASR(size, 10) THEN + res := sysfunc3(68, 12, size); + IF res # 0 THEN + mem_commit(res, size); + sys.PUT(res, size); + INC(res, 4) + END + ELSE + res := 0 + END + END; + IF res # 0 THEN + zeromem(ASR(size, 2) - 1, res) + END + RETURN res +END __NEW; + + +PROCEDURE __DISPOSE (ptr: INTEGER): INTEGER; +VAR + size, idx: INTEGER; +BEGIN + DEC(ptr, 4); + sys.GET(ptr, size); + IF size <= MAX_SIZE THEN + idx := ASR(size, 5); + sys.PUT(ptr, pockets[idx]); + pockets[idx] := ptr + ELSE + size := sysfunc3(68, 13, ptr) + END + RETURN 0 +END __DISPOSE; + + +PROCEDURE NEW_DISPOSE (func, arg: INTEGER): INTEGER; +VAR + res: INTEGER; +BEGIN + EnterCriticalSection(CriticalSection); + + IF func = _new THEN + res := __NEW(arg) + ELSIF func = _dispose THEN + res := __DISPOSE(arg) + END; + + LeaveCriticalSection(CriticalSection) + RETURN res +END NEW_DISPOSE; + + +PROCEDURE _NEW* (size: INTEGER): INTEGER; + RETURN NEW_DISPOSE(_new, size) +END _NEW; + + +PROCEDURE _DISPOSE* (ptr: INTEGER): INTEGER; + RETURN NEW_DISPOSE(_dispose, ptr) END _DISPOSE; -PROCEDURE ExitProcess*(p1: INTEGER); + +PROCEDURE ExitProcess* (p1: INTEGER); BEGIN p1 := sysfunc1(-1) -END ExitProcess; +END ExitProcess; -PROCEDURE ExitThread*(p1: INTEGER); -BEGIN - p1 := sysfunc1(-1) -END ExitThread; -PROCEDURE OutChar(c: CHAR); -VAR res: INTEGER; +PROCEDURE ExitThread* (p1: INTEGER); BEGIN - res := sysfunc3(63, 1, ORD(c)) -END OutChar; + p1 := sysfunc1(-1) +END ExitThread; -PROCEDURE DebugMsg*(lpText, lpCaption: INTEGER); -VAR c: CHAR; + +PROCEDURE OutChar (c: CHAR); +VAR + res: INTEGER; BEGIN - IF lpCaption # 0 THEN - OutChar(0DX); - OutChar(0AX); - REPEAT - sys.GET(lpCaption, c); - IF c # 0X THEN - OutChar(c) - END; - INC(lpCaption) - UNTIL c = 0X; - OutChar(":"); - OutChar(0DX); - OutChar(0AX) - END; - REPEAT - sys.GET(lpText, c); - IF c # 0X THEN - OutChar(c) + res := sysfunc3(63, 1, ORD(c)) +END OutChar; + + +PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER); +VAR + c: CHAR; +BEGIN + IF lpCaption # 0 THEN + OutChar(0DX); + OutChar(0AX); + REPEAT + sys.GET(lpCaption, c); + IF c # 0X THEN + OutChar(c) + END; + INC(lpCaption) + UNTIL c = 0X; + OutChar(":"); + OutChar(0DX); + OutChar(0AX) END; - INC(lpText) - UNTIL c = 0X; - IF lpCaption # 0 THEN - OutChar(0DX); - OutChar(0AX) - END -END DebugMsg; + REPEAT + sys.GET(lpText, c); + IF c # 0X THEN + OutChar(c) + END; + INC(lpText) + UNTIL c = 0X; + IF lpCaption # 0 THEN + OutChar(0DX); + OutChar(0AX) + END +END DebugMsg; + PROCEDURE init* (p1: INTEGER); BEGIN - p1 := sysfunc2(68, 11) -END init; + p1 := sysfunc2(68, 11); + InitializeCriticalSection(CriticalSection) +END init; + END API. \ No newline at end of file diff --git a/programs/develop/oberon07/Lib/Windows32/RTL.ob07 b/programs/develop/oberon07/Lib/Windows32/RTL.ob07 index 23aeacde6a..846a936bce 100644 --- a/programs/develop/oberon07/Lib/Windows32/RTL.ob07 +++ b/programs/develop/oberon07/Lib/Windows32/RTL.ob07 @@ -1,4 +1,4 @@ -(* +(* Copyright 2016, 2017 Anton Krotov This program is free software: you can redistribute it and/or modify @@ -245,7 +245,8 @@ BEGIN StrAppend("code "); Int(code, int); StrAppend(int) - END; + END; + API.DebugMsg(sys.ADR(msg), SelfName); IF API.GetCurrentThreadId() = main_thread_id THEN API.ExitProcess(0) ELSE