Actually Linux's wake_up_process does nothing but
changing a process' state from TASK_(UN)INTERRUPTIBLE
to TASK_RUNNING and then it may be chosen for running
the next time schedule() is invoked depending on its
priority (counter-parameter in task_struct for the processes
scheduled under OTHER-policy and rt_proirity-parameter for real-time processes scheduled under FIFO or RobinRound (RR)).
Best regards. Kostya.