Hi, I tried a test in that code without any gettimeofday, the result is the same. BTW, I've tried on my raspberrpi 3 with kernel 4.13. Moreover, I also tried several ubuntu 16.04. The result were always father process ran first. On Fri, Dec 8, 2017 at 1:53 PM, Mulyadi Santosa <mulyadi.santosa@xxxxxxxxx> wrote: > > > On Fri, Dec 8, 2017 at 10:07 AM, Rock Lee <rockdotlee@xxxxxxxxx> wrote: >> >> Hi, >> >> I ran my test code but always got the father process run first, even >> after setting sched_child_runs_first. Could anyone give me a hint? >> Here is my test code. >> >> #include <stdio.h> >> #include <unistd.h> >> #include <sys/time.h> >> >> int main(void) >> { >> struct timeval tv; >> struct timezone tz; >> int err; >> pid_t ret = fork(); >> >> if (ret == 0) { >> err = gettimeofday(&tv, &tz); >> if (!err) >> printf("child time sec %d, usec %d\n", tv.tv_sec, tv.tv_usec); >> >> printf("this child.\n"); >> } else if (ret > 1) { >> err = gettimeofday(&tv, &tz); >> >> if (!err) >> printf("father time sec %d, usec %d\n", tv.tv_sec, >> tv.tv_usec); >> printf("this father.\n"); >> } else >> printf("err!!\n"); >> return 0; >> } >> >> >> -- >> Cheers, >> Rock >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > > > Hi... > > IIRC, gettimeofday() will eventually call system call (with the same name, I > think). And I guess this is where the root cause come. > > Your child might actually ran first, but since it called system call, > re-scheduling the kicked in, and parent got the chance to run. > > In order to prove this theory, try to execute printf("this is parent") or > printf("this is child") first, then gettimeofday() later. > > Good luck and cmiiw > > -- > regards, > > Mulyadi Santosa > Freelance Linux trainer and consultant > > blog: the-hydra.blogspot.com > training: mulyaditraining.blogspot.com -- Cheers, Rock _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies