summaryrefslogtreecommitdiff
path: root/posix/tst-cpuset.c
blob: d736793222af5ec6a83e3d6e81f91b468f174243 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <sched.h>
#include <stdio.h>

static int
do_test (void)
{
  int result = 0;

  cpu_set_t s1;
  cpu_set_t s2;
  cpu_set_t s3;

  CPU_ZERO (&s1);
  CPU_SET (0, &s1);

  CPU_ZERO (&s2);
  CPU_SET (0, &s2);
  CPU_SET (1, &s2);

  CPU_AND (&s3, &s1, &s2);
  if (! CPU_EQUAL (&s3, &s1))
    {
      puts ("result of CPU_AND wrong");
      result = 1;
    }

  CPU_OR (&s3, &s1, &s2);
  if (! CPU_EQUAL (&s3, &s2))
    {
      puts ("result of CPU_OR wrong");
      result = 1;
    }

  CPU_XOR (&s3, &s1, &s2);
  if (CPU_COUNT (&s3) != 1)
    {
      puts ("result of CPU_XOR wrong");
      result = 1;
    }

  cpu_set_t *vs1 = CPU_ALLOC (2048);
  cpu_set_t *vs2 = CPU_ALLOC (2048);
  cpu_set_t *vs3 = CPU_ALLOC (2048);
  size_t vssize = CPU_ALLOC_SIZE (2048);

  CPU_ZERO_S (vssize, vs1);
  CPU_SET_S (0, vssize, vs1);

  CPU_ZERO_S (vssize, vs2);
  CPU_SET_S (0, vssize, vs2);
  CPU_SET_S (2047, vssize, vs2);

  CPU_AND_S (vssize, vs3, vs1, vs2);
  if (! CPU_EQUAL_S (vssize, vs3, vs1))
    {
      puts ("result of CPU_AND_S wrong");
      result = 1;
    }

  CPU_OR_S (vssize, vs3, vs1, vs2);
  if (! CPU_EQUAL_S (vssize, vs3, vs2))
    {
      puts ("result of CPU_OR_S wrong");
      result = 1;
    }

  CPU_XOR_S (vssize, vs3, vs1, vs2);
  if (CPU_COUNT_S (vssize, vs3) != 1)
    {
      puts ("result of CPU_XOR_S wrong");
      result = 1;
    }

  CPU_FREE (vs1);
  CPU_FREE (vs2);
  CPU_FREE (vs3);

  return result;
}

#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"