eCo Software Developer Connection

About DevCon
Subscription to DevCon
Budget of DevCon

eCo Software runtime
eCo Software toolkit

Development of SMP-safe applications and multi-thread applications are different things.

Start from reading SMP.INF

The SMP Programming Addendum is a detailed technical guide and reference for application programmers who which to exploit the symmetric multiprocessor support in the OS/2 operating system. It gives reference information and code examples to enable you to write source code using OS/2 functions and tools.

Useful articles


Q1: What is the difference between _beginthread and DosCreatThread?

A1: _beginthread initializes the C runtime, DosCreatThread doesn't.

When using the _beginthread and _endthread functions, you must specify the /Gm+ compiler option to use the multithread libraries.

An alternative to this function is the OS/2 DosCreateThread API. If you use DosCreateThread, you must also use a #pragma handler statement for the thread function to ensure proper C exception handling. You should also call the _fpreset function at the start of the thread to preset the 387 control status word correctly. Using DosCreateThread requires that you use _endthread to terminate the thread.

Q2: How to create SMP-safe application?

A2: Don't write to one memory address from two threads simultaneously. It's safe to do this on PC with one CPU, it's critical if you have many CPUs. Use auxiliary lock functions to avoid the problems.

Q3: How to organize SMP-safe write to file?

A3: Instead of SpeenLock we recommend use other function:

    volatile int InStatusLine = 0;
    // Use __lxchg to implement fast-RAM semaphores to serialize access 
    // to a critical resource (so that only one thread can use it at a time). 
    while (__lxchg(&InStatusLine, 1))
    // write to file here
    // restore the value
    __lxchg(&InStatusLine, 0);

Q4: Maximal quantity of threads?

A4: eComStation kernel can't create more than 4096 threads.

en/smp_rules.txt · Last modified: 2009/10/25 12:49 (external edit)

Recent changes RSS feed
© 2001 - 2009 eCo Software, All rights reserved