Gang,
I have been unsuccessful in building a working MP bootcd for a
while now. I conferred with Hartmut about some of the details, but
still cannot get it working.
This is what I tried:
1. Set MP=1 in config.xml
2. Hacked the hal xml files to make halmp.dll hal.dll on the bootcd, per Harmut
Index: halx86/up/halup.xml
===================================================================
--- halx86/up/halup.xml (revision 20282)
+++ halx86/up/halup.xml (working copy)
@@ -1,6 +1,6 @@
<module name="halup" type="kernelmodedll">
<importlibrary definition="../../hal/hal.def" />
- <bootstrap base="reactos" nameoncd="hal.dll" />
+ <bootstrap base="reactos" />
<include base="hal_generic">../include</include>
<include base="ntoskrnl">include</include>
<define name="_DISABLE_TIDENTS" />
Index: halx86/mp/halmp.xml
===================================================================
--- halx86/mp/halmp.xml (revision 20282)
+++ halx86/mp/halmp.xml (working copy)
@@ -1,6 +1,6 @@
<module name="halmp" type="kernelmodedll">
<importlibrary definition="../../hal/hal.def" />
- <bootstrap base="reactos" />
+ <bootstrap base="reactos" nameoncd="hal.dll"/>
<include base="hal_generic">../include</include>
<include base="ntoskrnl">include</include>
<define name="_DISABLE_TIDENTS" />
3. make bootcd, as normal
The resulting bootcd fails to boot under "qemu -smp 2" with the following trace:
(./ntoskrnl/ke/main.c:295)
---------------------------------------------------------------
(./ntoskrnl/ke/main.c:296) ReactOS 0.3-SVN (Build 20051221-r20282)
(hal/halx86/mp/apic.c:420) Getting VERSION: 50011
(hal/halx86/mp/apic.c:423) Getting VERSION: 50011
(hal/halx86/mp/apic.c:454) Getting ID: 0
(hal/halx86/mp/apic.c:457) Getting ID: f000000
(hal/halx86/mp/apic.c:554) CPU0:
(hal/halx86/mp/apic.c:555) Physical APIC id: 0
(hal/halx86/mp/apic.c:556) Logical APIC id: 0
(hal/halx86/mp/apic.c:557) 00000000 00000000 f0000000
(hal/halx86/mp/apic.c:584) CPU0:
(hal/halx86/mp/apic.c:585) Physical APIC id: 0
(hal/halx86/mp/apic.c:586) Logical APIC id: 1
(hal/halx86/mp/apic.c:587) 00000000 01000000 f0000000
(hal/halx86/mp/apic.c:588) 0
(hal/halx86/mp/apic.c:619) enabled ExtINT on CPU#0
Used memory 131072Kb
(./ntoskrnl/mm/mminit.c:386) Kernel Stack Limits. InitTop =
0x8013c000, Init = 0x80139000
(./ntoskrnl/mm/mm.c:283) No current process
(hal/halx86/mp/processor_mp.c:112) Attempting to boot CPU 1
(hal/halx86/mp/apic.c:1014) Attempting to boot CPU 1
(hal/halx86/mp/apic.c:1044) 80572be0 25000 80001000 0
(hal/halx86/mp/apic.c:554) CPU1:
(hal/halx86/mp/apic.c:555) Physical APIC id: 1
(hal/halx86/mp/apic.c:556) Logical APIC id: 0
(hal/halx86/mp/apic.c:557) 01000000 00000000 f0000000
(hal/halx86/mp/apic.c:584) CPU1:
(hal/halx86/mp/apic.c:585) Physical APIC id: 1
(hal/halx86/mp/apic.c:586) Logical APIC id: 2
(hal/halx86/mp/apic.c:587) 01000000 02000000 f0000000
(hal/halx86/mp/apic.c:588) 1
(hal/halx86/mp/apic.c:624) masked ExtINT on CPU#1
CPU 1 is now running
(ntoskrnl/ke/i386/exp.c:539) Ignoring P6 Local APIC Spurious Interrupt Bug...
(./ntoskrnl/ke/ipi.c:88) CPU0, waiting longer than 5 seconds to start
the ipi routine
KeBugCheck at ./ntoskrnl/ke/ipi.c:89
A problem has been detected and ReactOS has been shut down to prevent
damage to your computer.
Technical information:
*** STOP: 0x00000000 (0x00000000,0x00000000,0x00000000,0x00000000)
Frames:
<ntoskrnl.exe:2630> ./ntoskrnl/ke/bug.c:0 ()
<ntoskrnl.exe:2668> ./ntoskrnl/ke/bug.c:504 (KeBugCheck)
<ntoskrnl.exe:414f> ./ntoskrnl/ke/ipi.c:0 ()
<ntoskrnl.exe:4470> ./ntoskrnl/ke/ipi.c:0 ()
<ntoskrnl.exe:44df> ./ntoskrnl/ke/ipi.c:174 (KeIpiGenericCall)
<ntoskrnl.exe:abd71> ./ntoskrnl/mm/i386/page.c:1043 (MmDeleteVirtualMapping)
<ntoskrnl.exe:ac891> ./ntoskrnl/mm/i386/page.c:431 (MmDeletePageTable)
<ntoskrnl.exe:d52ce> ./ntoskrnl/mm/mminit.c:459 (MmInit3)
<ntoskrnl.exe:cf7c0> ./ntoskrnl/ex/init.c:622 (ExpInitializeExecutive)
<ntoskrnl.exe:66fc> ./ntoskrnl/ke/main.c:106 (KiSystemStartup)
<ntoskrnl.exe:cd851> ./ntoskrnl/ke/main.c:300 (_main)
<ntoskrnl.exe:104b> ./ntoskrnl/ke/i386/main_asm.S:46 (NtProcessStartup)
An MP bootcd I made several months ago (~18xxx) did the same thing on
a Abit BP6 with dual Celerons, so I'm fairly confident qemu is acting
properly. I still have the BP6 and am willing to test MP builds, but
I wasted about 10 CD-R's trying to get a working MP bootcd before
giving up.
Am I just doing something wrong? I would like to get this worked out
and documented somewhere.
WD
--
<Russell> argh
<Russell> iterator shenanigans :/
I've been tracking down a problem with ibrowser being extremely slow for me
(it took 64 sec to load http://www.reactos.org). It turns out to be a
problem associated with the loopback interface. The attached test program
(gcc -o loop.exe loop.c -lws2_32) is the minimum test program to demonstrate
the problem. It occurs when you send a small amount of data over the
loopback interface when there is no pending recv (so you send, then start a
recv for the data, then another send, then another recv, no recv waiting
while you send).
Sequence of events:
- Start first send
- TCP/IP stack queues the data at the receiving end
- First send returns
- Start first recv
- Queued data is retrieved, but it is determined that there's plenty of
space in the TCP window left, so there is no ACK sent back
- First recv returns
- Start second send
- tcp_output determines that the connection is not idle (there is some
un-ACKed data) and queues the data at the sending end
- Second send returns
- Start second recv
- Since there is no data waiting at the receiving end, recv just sits there
- An internal timer with a period of 2.5 sec expires
- The timer proc notices that there is an ACK pending
- ACK is sent back to the sending end
- Sending end determines connection is idle now and sends the queued data to
the receiving end
- Timer proc terminates and reschedules itself
- Data has now arrived at the receiving end and can be retrieved by the
waiting recv. Again no ACK is sent back
- Second recv returns
- Third send starts, queues its data at sending end and returns
- Third recv starts, has to wait 2.5 sec for the internal timer to timeout
and then returns
- etc.
Although I understand what's wrong, I have a bit of difficulty trying to
figure out how to fix it. Attached is a proposed fix, which basically
attacks the problem at the sending end by removing the check if the
connection is idle or not. With that fix the loop.c program works as I
expect and http://www.reactos.org loads in a much more reasonable 2-3 sec in
ibrowser. The problem that I have with the fix is that it's a change in code
we borrowed from the BSD stack. I can hardly imagine that a piece of
software so heavily used as the BSD stack would have such a fundamental
problem.
Any thoughts?
GvG
I've installed a script on the webserver which will run Doxygen (a source
cross-referencing tool, see http://www.doxygen.org) on our complete source
tree. The script runs once a day. The results can be viewed on
http://www.reactos.org/generated/doxygen (or choose "Doxygen" from the
"Development" menu on the website).
GvG
David Hinz wrote:
> Somewhere in reactos/lib/cabinet I found sourcecode calling functions
> like err, and the strings it gave to these functions looked like
> something output to the user e.g. errormessages like file * couldn't
> be found or something like this, so I wondered, if this should be
> translatable.
> As I don't know what kind of stings should be translatable, I
> just asked.
You need to understand the context in which the message is used. If it's
system debug message, it will normally be hardcoded in. If it's a generic
Win32 error message it should be picked up with FormatMessage. These will be
output in the users preferred language via the LANG_SYSTEM_DEFAULT or
LANG_USER_DEFAULT flags. Then you have simple MessageBox outputs which can
be picked out of a resource file, but are generally hardcoded in. There are
many other situations and usages, but I'll stop there.
As already said, becoming a programmer is the only real way of understanding
it all.
> Well, you say I should learn some things like structures of resource
> files, do you have any links for me?
There are thousands of C tutorials on the net. Here are a few:
Tutorials : http://www.cprogramming.com/tutorial.html
Forgers win32 : http://www.winprog.org/tutorial/
Everyone has their favourite books, but these are probably the most popular
for learning C and Windows programming:
K & R :
http://www.amazon.com/gp/product/0131103628/qid=1135081344/sr=2-1/ref=pd_bbs
_b_2_1/104-6581600-7986334?s=books&v=glance&n=283155
C Primer Plus :
http://www.amazon.com/gp/product/0672326965/qid=1135081234/sr=1-1/ref=sr_1_1
/104-6581600-7986334?s=books&v=glance&n=283155
Petzold :
http://www.amazon.com/gp/product/157231995X/qid=1135081418/sr=1-1/ref=sr_1_1
/104-6581600-7986334?s=books&v=glance&n=283155
Have fun,
Ged.
************************************************************************
The information contained in this message or any of its
attachments is confidential and is intended for the exclusive
use of the addressee. The information may also be legally
privileged. The views expressed may not be company policy,
but the personal views of the originator. If you are not the
addressee, any disclosure, reproduction, distribution or other
dissemination or use of this communication is strictly prohibited.
If you have received this message in error, please contact
postmaster(a)exideuk.co.uk
<mailto:postmaster@exideuk.co.uk> and then delete this message.
Exide Technologies is an industrial and transportation battery
producer and recycler with operations in 89 countries.
Further information can be found at www.exide.com
We're coming close to the 0.2.9 release now, we need to get the changes into
the wiki sooner rather than later :)
http://www.reactos.org/wiki/index.php/ChangeLog-0.2.9
<http://www.reactos.org/wiki/index.php/ChangeLog-0.2.9>
************************************************************************
The information contained in this message or any of its
attachments is confidential and is intended for the exclusive
use of the addressee. The information may also be legally
privileged. The views expressed may not be company policy,
but the personal views of the originator. If you are not the
addressee, any disclosure, reproduction, distribution or other
dissemination or use of this communication is strictly prohibited.
If you have received this message in error, please contact
postmaster(a)exideuk.co.uk
<mailto:postmaster@exideuk.co.uk> and then delete this message.
Exide Technologies is an industrial and transportation battery
producer and recycler with operations in 89 countries.
Further information can be found at www.exide.com
As GreatLord said, you will need programming knowledge to do this.
If you want to start making progress with this, you could start by getting a
sound understanding of C and basic Windows programming, including resource
file syntax. Then work from there.
You will generally find though that most stuff that should be in a resource
file, already is.
What have you found to make you think otherwise?
-----Original Message-----
From: David Hinz [mailto:post.center@gmail.com]
Sent: 20 December 2005 07:08
To: ReactOS Development List
Subject: Re: [ros-dev] Hardcoded strings
Sure, but the problem is, I don't really know which strings this are,
and how I can find them.
************************************************************************
The information contained in this message or any of its
attachments is confidential and is intended for the exclusive
use of the addressee. The information may also be legally
privileged. The views expressed may not be company policy,
but the personal views of the originator. If you are not the
addressee, any disclosure, reproduction, distribution or other
dissemination or use of this communication is strictly prohibited.
If you have received this message in error, please contact
postmaster(a)exideuk.co.uk
<mailto:postmaster@exideuk.co.uk> and then delete this message.
Exide Technologies is an industrial and transportation battery
producer and recycler with operations in 89 countries.
Further information can be found at www.exide.com
Hey all,
at the moment I try to create an overview on the current German
translation of ReactOS and for this I need to know one important little
thing:
Which hardcoded strings should be moved to rc-files?
And is there a howto on this topic?
I would be very happy about some fast responses, I want to get the
German translation ready before the 0.3.0 release...
Greets,
David Hinz
And yes, I know I should post this to the ros-translate list, but it
seems to be inactive...