Behavior Based Robotic
The function start_process isn't part of any standard C library that I can think of. I think it's just being used to illustrate the creation of a thread which varies between Linux, Windows etc. On an embedded microcontroller it's normally better to use a state machine and/or interrupts to ensure code is excecuted on a timely basis.

In this case I'd remove the while (1) from inside each function so they each perform a single iteration and then move the looping to the main function like this:

void main() {
    ir_hit = 0;
    while (1) {
        avoid();
        cruise();
        motors();
        arbitrate();
    }
}


Note that doing this means each function will be called from the start on each interation so I've moved the initialization ofir_hit to the start of main so that it only gets performed once and it would need to be changed to a global variable.

Also be careful when using this method of any function calls that will block execution for an extended time. For example if drive had some sort of long delay while driving the motor it might require using a timer to keep track of when the motor should be switched on and off. In general this looks like a pseudocode example that will require quite a bit of extra work to actually implement.