[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How to preempt a thread?



Hi,

I'm trying to run ocaml bare-metal on a RaspberryPi. Since the RPi
only has an ARMv6 cpu it has no virtualization extension and running
mirage under xen is not an option. :( But I'm basically doing the same
as mirage I was hopeing I could borrow some knowledge from you.

My question concerns threading.

1) How have you implemented this at all in mirage?

Did you rewrite the thread module or provide the pthread api/abi so
the existing module works?

2) CPU hogging

My understanding is that normal native code sets a timer in the
threading module. When the timer expires it plays with the minor heap
limit to trick the GC into running on the next allocation and hooks
the scheduling into that. So it is not truely preemptive and a thread
that doesn't do any allocations will hog the CPU.

Have you addressed this problem, if at all, in mirage?

MfG
        Goswin

PS: If I get enough hardware drivers working I might work on merging
with mirage, getting it to boot on bare-metal arms without xen.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.