MMU-less systems and vfork.

B

Brian Mitchell

I have an upcoming project that will be on an MMU-less platform
(coldfire) running uClinux. I was possibly going to use ruby but it
seems that I cannot confirm if ruby supports vfork as an
implementation of forking or not. Is it possible at all?

Thanks,
Brian.
 
L

Luke Graham

I have an upcoming project that will be on an MMU-less platform
(coldfire) running uClinux. I was possibly going to use ruby but it
seems that I cannot confirm if ruby supports vfork as an
implementation of forking or not. Is it possible at all?

You should probably do this in a c extension, you could pass in the execve
(or whatever) arg from ruby.
 
B

Brian Mitchell

You should probably do this in a c extension, you could pass in the execve
(or whatever) arg from ruby.

Sorry I should have been more clear on this.

My question was: Will ruby still run when fork is not available
(replacing fork with vfork or cutting out fork). The quick answer is
no. It will segfault if you add

#define fork vfork

to ruby and run "fork". Will it still work if I avoid fork in ruby and
use, like you said, a C extension to vfork for me? (I don't have my
hardware to run tests on yet).

In the end it looks like the answer is no but I am no expert so I
decided to ask this time around. This was all more of a curiosity. I
would love to be able to use a slim version of ruby to write higher
level code along with lower level C extensions. Anyone willing to
write a patch for me? ;-)

Thanks,
Brian.
 
L

Luke Graham

Sorry I should have been more clear on this.

My question was: Will ruby still run when fork is not available
(replacing fork with vfork or cutting out fork). The quick answer is
no. It will segfault if you add

#define fork vfork

Agreed, theres no way thats going to work. vfork != fork.
to ruby and run "fork". Will it still work if I avoid fork in ruby and
use, like you said, a C extension to vfork for me? (I don't have my
hardware to run tests on yet).

I dont see why it wouldnt work. You have to abide by the rules of vfork
though, which can be summarised as "nothing but exec or exit", so its
kind of pointless.
 
L

Luke Graham

Agreed, theres no way thats going to work. vfork != fork.


I dont see why it wouldnt work. You have to abide by the rules of vfork
though, which can be summarised as "nothing but exec or exit", so its
kind of pointless.

Just to explain what I meant by this... For most (ruby) applications,
having vfork
is not better than having no fork. Having ruby running on mmu-less hw,
even with that caveat, is not useless :) If defining fork to vfork is enough to
get it working, then go with it.
 
T

Tim Sutherland

Brian Mitchell wrote: said:
My question was: Will ruby still run when fork is not available
(replacing fork with vfork or cutting out fork). The quick answer is
no.
[...]

The usual build of Ruby on Windows does not use fork - Ruby does not require
fork to operate.

If everything goes well, ./configure will notice that fork isn't available,
and will not set HAVE_FORK in config.h.
 
B

Brian Mitchell

Brian Mitchell wrote: said:
My question was: Will ruby still run when fork is not available
(replacing fork with vfork or cutting out fork). The quick answer is
no.
[...]

The usual build of Ruby on Windows does not use fork - Ruby does not require
fork to operate.

If everything goes well, ./configure will notice that fork isn't available,
and will not set HAVE_FORK in config.h.

This is what I needed to know. thanks. I should have looked harder but
my tinker time on this is limited. I do not yet have my toolchain
completely done yet but I should be able to test this setting. BTW, I
did get it partially working with certain forms of fork (vfork
implementation swapped in) but as was said and as I knew, vfork is
quite an different beast but does the trick in some cases.

Now to figure out if I can slim it down anymore than using the right
compiler flags.

Thanks,
Brian.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top