Am 06.08.2013 um 17:39 schrieb Alexey Starikovskiy <aysta...@gmail.com>:

> Michael,
> Please excuse my ignorance, could you describe how the messaging pass the
> kernel/userspace boundary?

the scenario I laid out was mostly for task/UI interaction, and didnt touch on 
the later parts since it can be addressed in isolation; motion command 
submission is very similar though

I assume you know the current status - the usrmotintf.cc atrocity generates 
non-NML format messages (basically just C structs) from the commands received 
by task and pushes this down a homegrown queue towards motion, even only since 
NML messages cant be consumed in the kernel due to C++ dependencies


the future scenario will look like so in steps:

- first the NML channel/buffer transport will go, and be replaced by the ZMQ 
scheme as I laid it out
- next the NML messages themselves will be replaced by protobuf-encoded messages
- third, the motion command interface will switch to HAL ringbuffers, which are 
queues which can transcend the user process/kernel or RT thread boundary
- RT components are already able to decode and encode protobuf messages, 
meaning the end-to-end-principle at last is reinstated

- Michael
--

ps: the following examples are unpolished, but you get the idea, these 
encompass the RT/userland boundary and serialisation:

the HAL ring API for creation, deletion and attaching: 
http://git.mah.priv.at/gitweb?p=emc2-dev.git;a=blob;f=src/hal/hal_ring.h;h=6fc99aa763a4b1017aa8b173ecf1747c13cae282;hb=cb479c9a14b39c23daaa4deb97e4e29da4d3870d#l45

an RT comp which just creates a ring buffer: 
http://git.mah.priv.at/gitweb?p=emc2-dev.git;a=blob;f=src/hal/msgcomponents/ringload.c;h=19148f84abb9827bc320ee53570ea71038736947;hb=cb479c9a14b39c23daaa4deb97e4e29da4d3870d

another RT comp which attaches to a ring, and processes commands from the ring: 
http://git.mah.priv.at/gitweb?p=emc2-dev.git;a=blob;f=src/hal/msgcomponents/ringread.comp;h=49afe00db060acd1e2251b327cf94efcd0b7368a;hb=cb479c9a14b39c23daaa4deb97e4e29da4d3870d

a Python fragment which does RPC with protobuf-encoded messages over a HAL 
ring: 
http://git.mah.priv.at/gitweb?p=emc2-dev.git;a=blob;f=src/hal/msgcomponents/pbring-demo.py;h=7e585551e533c578eafd04586367641db7b0dfd7;hb=cb479c9a14b39c23daaa4deb97e4e29da4d3870d

the corresponding RT component: 
http://git.mah.priv.at/gitweb?p=emc2-dev.git;a=blob;f=src/hal/msgcomponents/pbring.comp;h=21b56ad826f480851b93455e6bd1a000cc60cbe8;hb=cb479c9a14b39c23daaa4deb97e4e29da4d3870d

the ring operations proper are done through header-only static inlines: 
http://git.linuxcnc.org/gitweb?p=linuxcnc.git;a=blob;f=src/rtapi/ring.h;h=37298ce004cfade02422b1835b200a91679db7c5;hb=9898998e7e9dde11158b02a12d0d6d891ecd882e


> 
> Thanks,
> Alex.
> 
> 
> On Tue, Aug 6, 2013 at 7:27 PM, Michael Haberler <mai...@mah.priv.at> wrote:
> 
>> I've written up a note how NML to ZMQ transport migration could pan out,
>> laying out the steps involved and the socket interaction patterns.
>> 
>> http://static.mah.priv.at/public/nmlzmq.html
>> 
>> next step is a Python mockup for design verification
>> 
>> feedback welcome
>> 
>> -Michael
>> 
>> 
>> 
>> 
>> ------------------------------------------------------------------------------
>> Get your SQL database under version control now!
>> Version control is standard for application code, but databases havent
>> caught up. So what steps can you take to put your SQL databases under
>> version control? Why should you start doing it? Read more to find out.
>> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Emc-developers mailing list
>> Emc-developers@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/emc-developers
>> 
> ------------------------------------------------------------------------------
> Get your SQL database under version control now!
> Version control is standard for application code, but databases havent 
> caught up. So what steps can you take to put your SQL databases under 
> version control? Why should you start doing it? Read more to find out.
> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
> _______________________________________________
> Emc-developers mailing list
> Emc-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-developers


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to