David, what do you use to build harbour with watcom?
On my pc, simply trying to build a single .c file from the ide gives a trap inside OS2KRNL, so I fear it is not SMP ready. Maurilio. David Arturo Macias Corona wrote: > Przemek: > >>So it's general problem with accessing console from other threads. > >>To be precise it's KbdPeek() and kbhit() is probably simple wrapper to >>it. >>It means that OW internals are also effected by this problem. >>The question is if it can be resolved or not. Is it OW bug or problem >>with OS2 API. In GCC it seems to be resolved. The question is how. > >>It does not have to be printf() behavior. 1-st it's always better to >>redirect output to file to eliminate possible overwriting. The >>second problem can be caused by possible compile time optimizations >>which can change the order of executed instructions. In such case is >>always good to pass to printf() some pointers to variables which are >>used in function you want to trace to disable such optimization. >>It's the reason why I added s_key pointer to "0. hb_gt_os2_ReadKey(%p)" >>though in this case seems that it wasn't help though I'm not sure >>you replicated it. > > In all these tests I use outputs to screen and file and they do not show > differences in these cases > I was not aware of "optimization" and/or "to pass to printf() some > pointers" so at last it was not replicated > >>Many thanks for detail tests. We know the problem and now we will have >>to find workaround for it. We can make it in simple way and disable >>input for non main thread. BTW can you check if keyboard input works >>correctly in GCC builds for all threads, f.e. inm code like: > > Using this code with current Harbour > ------------- > proc main() > hb_threadJoin( hb_threadStart( @thFunc() ) ) > return > proc thFunc() > local k > while (k:=inkey(0)) != 27 > ? k > enddo > return > ------------- > > the results are: > > gcc335 > ====== > -------------------- > [E:\harbour811\harbour] bld_os2.cmd pba3 mt > Harbour 1.1.0dev (Rev. 9903) > Copyright (c) 1999-2008, http://www.harbour-project.org/ > Compiling 'pba3.prg'... > Lines 10, Functions/Procedures 2 > Generating C source output to 'pba3.c'... Done. > > [E:\harbour811\harbour]pba3.exe > > 97 > 115 > 100 > 102 > 103 > 104 > -------------------- > > OpenWatcom 1.7a > =============== > -------------------- > [E:\harbour811\harbour]bin\pbaos2.cmd -mt pba3 > Open Watcom Linker Version 1.7 > Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved. > Source code is available under the Sybase Open Watcom Public License. > See http://www.openwatcom.org/ for details. > loading object files > searching libraries > creating an OS/2 32-bit executable > [E:\harbour811\harbour]pba3.exe > SYS1808: > The process has stopped. The software diagnostic > code (exception code) is 0001. > -------------------- > > >>OS2 KBD API has functions KbdGetFocus() and KbdFreeFocus(). It's possible >>that they will resolve the problem for keyboard input. >>Finally we can simply check in GCC source what exactly it does to >>resolve the problem. Seeing Maurilio comment in gtos2.c I guess that GCC >> for OS2 has its own KbdCharIn() instead of direct mapping: >> #define KbdCharIn KBD16CHARIN >>and inside this function the problem is resolved. But I only guess. >>I haven't ever seen this compiler. >>For someone who has some experience with OS2 API the problem should >>be easy to resolve or find workaround or give us an answer if it can >>work. > > I do not know what is KbdCharIn and KBD16CHARIN but two seem to be > funtions/procedures > KbdCharIn is in list of OS/2 API anywhere > KBD16CHARIN, searching in Google/Lycos/HotBot/... appears few times and > never explain what is and/or where is > > David Macias > > _______________________________________________ > Harbour mailing list > Harbour@harbour-project.org > http://lists.harbour-project.org/mailman/listinfo/harbour > -- __________ | | | |__| Maurilio Longo |_|_|_|____| farmaconsult s.r.l. _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour