mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-28 23:34:53 +03:00 
			
		
		
		
	The tst-getcpu test is failing on ia64 platforms due to sched_getcpu returning an error. But the current test only considers -1 when it's also ENOSYS. Tweak the logic a bit to make the output clearer. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <errno.h>
 | |
| #include <stdio.h>
 | |
| #include <sched.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| 
 | |
| static int
 | |
| do_test (void)
 | |
| {
 | |
|   cpu_set_t cs;
 | |
|   if (sched_getaffinity (getpid (), sizeof (cs), &cs) != 0)
 | |
|     {
 | |
|       printf ("getaffinity failed: %m\n");
 | |
|       return 1;
 | |
|     }
 | |
| 
 | |
|   int result = 0;
 | |
|   int cpu = 0;
 | |
|   while (CPU_COUNT (&cs) != 0)
 | |
|     {
 | |
|       if (CPU_ISSET (cpu, &cs))
 | |
| 	{
 | |
| 	  cpu_set_t cs2;
 | |
| 	  CPU_ZERO (&cs2);
 | |
| 	  CPU_SET (cpu, &cs2);
 | |
| 	  if (sched_setaffinity (getpid (), sizeof (cs2), &cs2) != 0)
 | |
| 	    {
 | |
| 	      printf ("setaffinity(%d) failed: %m\n", cpu);
 | |
| 	      result = 1;
 | |
| 	    }
 | |
| 	  else
 | |
| 	    {
 | |
| 	      int cpu2 = sched_getcpu ();
 | |
| 	      if (cpu2 == -1)
 | |
| 		{
 | |
| 		  if (errno == ENOSYS)
 | |
| 		    {
 | |
| 		      puts ("getcpu syscall not implemented");
 | |
| 		      return 0;
 | |
| 		    }
 | |
| 		  perror ("getcpu failed");
 | |
| 		  result = 1;
 | |
| 		}
 | |
| 	      if (cpu2 != cpu)
 | |
| 		{
 | |
| 		  printf ("getcpu results %d not possible\n", cpu2);
 | |
| 		  result = 1;
 | |
| 		}
 | |
| 	    }
 | |
| 	  CPU_CLR (cpu, &cs);
 | |
| 	}
 | |
|       ++cpu;
 | |
|     }
 | |
| 
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| #define TEST_FUNCTION do_test ()
 | |
| #include <test-skeleton.c>
 |