Boost logo

Boost :

Subject: [boost] [coroutine]
From: Christopher Kormanyos (e_float_at_[hidden])
Date: 2012-05-07 19:21:53


Hello,

I am checking out the fascinating work with Boost.Coroutine.

Excellent! This is definitely paving the way for C++ threads.
I have been looking for this kind of thing for quite some time now.

I am mostly interested in adaptability, as I386 and the lot are
mostly done. It's always the same game with the cooperative
context switching. Time-after-time, you identify the clobbered registers
after a cooperative yield, save them in a context structure and restore
them after the yield. Then you deal with the stacks. OK, fine.

But how can you approach the dream of generic context switching?

So you know, here I am. I would want Boost.Context for numerous

GCC targets: Atmel AVR, Renesas V850, Renesas RL78,
Cortex-M3/4. And the list goes on, as I use numerous embedded
processors. The compiler's calling convention is poorly documented
at best. And various compiler vendors may or may not coordinate
the calling convention among each other.

Can the documentation of Boost.Coroutine aid in adaptation
in any way? Or is this simply beyond the present scope of
the proposed Boost.Coroutine?

        * Is there any documentation regarding the context switch?
        * Are you specifically targeting preemptive yields?
        * If so, is the compiler's calling convention taken into account?
        * Can the remarkable Boost.Coroutine be adapted to other CPUs?
        * How?
        * Is Coroutine meant to be compatible with std::this_thread::yield(), etc?
        * Can the user select the stack sizes?
        * How?

Thank you. And keep up the great work!

Best regards, Chris.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk