(linenum→info "unix/slp.c:2238")

glibc/2.7/bits/sched.h

    1: /* Definitions of constants and data structure for POSIX 1003.1b-1993
    2:    scheduling interface.
    3:    Copyright (C) 1996, 1997, 2001, 2003, 2007 Free Software Foundation, Inc.
    4:    This file is part of the GNU C Library.
    5: 
    6:    The GNU C Library is free software; you can redistribute it and/or
    7:    modify it under the terms of the GNU Lesser General Public
    8:    License as published by the Free Software Foundation; either
    9:    version 2.1 of the License, or (at your option) any later version.
   10: 
   11:    The GNU C Library is distributed in the hope that it will be useful,
   12:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   13:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14:    Lesser General Public License for more details.
   15: 
   16:    You should have received a copy of the GNU Lesser General Public
   17:    License along with the GNU C Library; if not, write to the Free
   18:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   19:    02111-1307 USA.  */
   20: 
   21: #ifndef _SCHED_H
   22: # error "Never include <bits/sched.h> directly; use <sched.h> instead."
   23: #endif
   24: 
   25: 
   26: /* Scheduling algorithms.  */
   27: #define SCHED_OTHER     0
   28: #define SCHED_FIFO      1
   29: #define SCHED_RR        2
   30: 
   31: /* Data structure to describe a process' schedulability.  */
   32: struct sched_param
   33: {
   34:   int __sched_priority;
   35: };
   36: 
   37: 
   38: #if defined _SCHED_H && !defined __cpu_set_t_defined
   39: # define __cpu_set_t_defined
   40: /* Size definition for CPU sets.  */
   41: # define __CPU_SETSIZE  1024
   42: # define __NCPUBITS     (8 * sizeof (__cpu_mask))
   43: 
   44: /* Type for array elements in 'cpu_set'.  */
   45: typedef unsigned long int __cpu_mask;
   46: 
   47: /* Basic access functions.  */
   48: # define __CPUELT(cpu)  ((cpu) / __NCPUBITS)
   49: # define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
   50: 
   51: /* Data structure to describe CPU mask.  */
   52: typedef struct
   53: {
   54:   __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
   55: } cpu_set_t;
   56: 
   57: /* Access functions for CPU masks.  */
   58: # define __CPU_ZERO(cpusetp) \
   59:   do {                                                                        \
   60:     unsigned int __i;                                                         \
   61:     cpu_set *__arr = (cpusetp);                                               \
   62:     for (__i = 0; __i < sizeof (cpu_set) / sizeof (__cpu_mask); ++__i)        \
   63:       __arr->__bits[__i] = 0;                                                 \
   64:   } while (0)
   65: # define __CPU_SET(cpu, cpusetp) \
   66:   ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu))
   67: # define __CPU_CLR(cpu, cpusetp) \
   68:   ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))
   69: # define __CPU_ISSET(cpu, cpusetp) \
   70:   (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0)
   71: 
   72: __BEGIN_DECLS
   73: 
   74: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
   75:      __THROW;
   76: 
   77: __END_DECLS
   78: 
   79: # define __CPU_COUNT(cpusetp) \
   80:   __sched_cpucount (sizeof (cpu_set_t), cpusetp)
   81: #endif
Syntax (Markdown)