system call sched_yield() doesn't work on Linux 2.2

From: Mohit Aron (aron@Zambeel.com)
Date: Sat Feb 03 2001 - 17:53:26 EST


Hi,
        the system call sched_yield() doesn't seem to work on Linux 2.2. Does
anyone know of a kernel patch that fixes this ?

Attached below is a small program that uses pthreads and demonstrates that
sched_yield() doesn't work. Basically, the program creates two threads that
alternatively try to yield CPU to each other.

- Mohit


#include <stdio.h>
#include <sched.h>
#include <pthread.h>

static pthread_t thread1, thread2;

static void *thread1_func(void *arg)
{
  int i;

  for (i=0; i < 5 ;i++) {
    printf("Thread1\n");
    if (sched_yield()) printf("error in yielding\n");
  }
}

static void *thread2_func(void *arg)
{
  int i;

  for (i=0; i < 5 ;i++) {
    printf("Thread2\n");
    if (sched_yield()) printf("error in yielding\n");
  }
}

int main(int argc, char **argv)
{
  pthread_create(&thread1, NULL, thread1_func, NULL);
  pthread_create(&thread2, NULL, thread2_func, NULL);

  sleep(10);

  return 0;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Feb 07 2001 - 21:00:18 EST