/* Data structure to describe CPU mask. */
typedef struct
{
__cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
} cpu_set_t;
/* Type for array elements in 'cpu_set_t'. */
typedef unsigned long int __cpu_mask;
# define __CPU_SETSIZE 1024
# define __NCPUBITS (8 * sizeof (__cpu_mask))
# define CPU_ZERO(cpusetp) __CPU_ZERO_S (sizeof (cpu_set_t), cpusetp)
# define __CPU_ZERO_S(setsize, cpusetp) \
do __builtin_memset (cpusetp, '\', setsize); while (0)
void CPU_SET(int cpu, cpu_set_t *set);
#define CPU_SET(cpu, cpusetp) __CPU_SET_S (cpu, sizeof (cpu_set_t), cpusetp)
# define __CPU_SET_S(cpu, setsize, cpusetp) \\
(__extension__ \\
({ size_t __cpu = (cpu); \\
__cpu < 8 * (setsize) \\
? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \\
|= __CPUMASK (__cpu)) \\
: 0; }))
# define __CPUELT(cpu) ((cpu) / __NCPUBITS)
# define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
#define __USE_GNU
#include <sched.h>
#include <stdio.h>
int main()
{
cpu_set_t cpuset;
cpu_set_t *cpusetp = &cpuset;
int *p = (int *)cpusetp;
CPU_ZERO (&cpuset);
CPU_SET (0, &cpuset);
printf ("%d\\n", p[0]);
CPU_SET (1, &cpuset);
printf ("%d\\n", p[0]);
CPU_SET (2, &cpuset);
printf ("%d\\n", p[0]);
CPU_SET (3, &cpuset);
printf ("%d\\n", p[0]);
CPU_SET (256, &cpuset);
printf ("%d\\n", p[8]);
return (0);
}
gcc -g -D_GNU_SOURCE cpu_set_t.c -o cpu_set_t
./cpu_set_t 1
3
7
15
1
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |