modernc.org/cc@v1.0.1/v2/headers/linux_386/usr/include/sched.h (about)

     1  /* Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface.
     2     Copyright (C) 1996-2018 Free Software Foundation, Inc.
     3     This file is part of the GNU C Library.
     4  
     5     The GNU C Library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 of the License, or (at your option) any later version.
     9  
    10     The GNU C Library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Lesser General Public License for more details.
    14  
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with the GNU C Library; if not, see
    17     <http://www.gnu.org/licenses/>.  */
    18  
    19  #ifndef	_SCHED_H
    20  #define	_SCHED_H	1
    21  
    22  #include <features.h>
    23  
    24  /* Get type definitions.  */
    25  #include <bits/types.h>
    26  
    27  #define __need_size_t
    28  #define __need_NULL
    29  #include <stddef.h>
    30  
    31  #include <bits/types/time_t.h>
    32  #include <bits/types/struct_timespec.h>
    33  #ifndef __USE_XOPEN2K
    34  # include <time.h>
    35  #endif
    36  
    37  #ifndef __pid_t_defined
    38  typedef __pid_t pid_t;
    39  # define __pid_t_defined
    40  #endif
    41  
    42  /* Get system specific constant and data structure definitions.  */
    43  #include <bits/sched.h>
    44  #include <bits/cpu-set.h>
    45  
    46  /* Backward compatibility.  */
    47  #define sched_priority    sched_priority
    48  #define __sched_priority  sched_priority
    49  
    50  __BEGIN_DECLS
    51  /* Set scheduling parameters for a process.  */
    52  extern int sched_setparam(__pid_t __pid, const struct sched_param *__param) __THROW;
    53  
    54  /* Retrieve scheduling parameters for a particular process.  */
    55  extern int sched_getparam(__pid_t __pid, struct sched_param *__param) __THROW;
    56  
    57  /* Set scheduling algorithm and/or parameters for a process.  */
    58  extern int sched_setscheduler(__pid_t __pid, int __policy, const struct sched_param *__param) __THROW;
    59  
    60  /* Retrieve scheduling algorithm for a particular purpose.  */
    61  extern int sched_getscheduler(__pid_t __pid) __THROW;
    62  
    63  /* Yield the processor.  */
    64  extern int sched_yield(void) __THROW;
    65  
    66  /* Get maximum priority value for a scheduler.  */
    67  extern int sched_get_priority_max(int __algorithm) __THROW;
    68  
    69  /* Get minimum priority value for a scheduler.  */
    70  extern int sched_get_priority_min(int __algorithm) __THROW;
    71  
    72  /* Get the SCHED_RR interval for the named process.  */
    73  extern int sched_rr_get_interval(__pid_t __pid, struct timespec *__t) __THROW;
    74  
    75  #ifdef __USE_GNU
    76  /* Access macros for `cpu_set'.  */
    77  # define CPU_SETSIZE __CPU_SETSIZE
    78  # define CPU_SET(cpu, cpusetp)	 __CPU_SET_S (cpu, sizeof (cpu_set_t), cpusetp)
    79  # define CPU_CLR(cpu, cpusetp)	 __CPU_CLR_S (cpu, sizeof (cpu_set_t), cpusetp)
    80  # define CPU_ISSET(cpu, cpusetp) __CPU_ISSET_S (cpu, sizeof (cpu_set_t), \
    81  						cpusetp)
    82  # define CPU_ZERO(cpusetp)	 __CPU_ZERO_S (sizeof (cpu_set_t), cpusetp)
    83  # define CPU_COUNT(cpusetp)	 __CPU_COUNT_S (sizeof (cpu_set_t), cpusetp)
    84  
    85  # define CPU_SET_S(cpu, setsize, cpusetp)   __CPU_SET_S (cpu, setsize, cpusetp)
    86  # define CPU_CLR_S(cpu, setsize, cpusetp)   __CPU_CLR_S (cpu, setsize, cpusetp)
    87  # define CPU_ISSET_S(cpu, setsize, cpusetp) __CPU_ISSET_S (cpu, setsize, \
    88  							   cpusetp)
    89  # define CPU_ZERO_S(setsize, cpusetp)	    __CPU_ZERO_S (setsize, cpusetp)
    90  # define CPU_COUNT_S(setsize, cpusetp)	    __CPU_COUNT_S (setsize, cpusetp)
    91  
    92  # define CPU_EQUAL(cpusetp1, cpusetp2) \
    93    __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2)
    94  # define CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
    95    __CPU_EQUAL_S (setsize, cpusetp1, cpusetp2)
    96  
    97  # define CPU_AND(destset, srcset1, srcset2) \
    98    __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, &)
    99  # define CPU_OR(destset, srcset1, srcset2) \
   100    __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |)
   101  # define CPU_XOR(destset, srcset1, srcset2) \
   102    __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, ^)
   103  # define CPU_AND_S(setsize, destset, srcset1, srcset2) \
   104    __CPU_OP_S (setsize, destset, srcset1, srcset2, &)
   105  # define CPU_OR_S(setsize, destset, srcset1, srcset2) \
   106    __CPU_OP_S (setsize, destset, srcset1, srcset2, |)
   107  # define CPU_XOR_S(setsize, destset, srcset1, srcset2) \
   108    __CPU_OP_S (setsize, destset, srcset1, srcset2, ^)
   109  
   110  # define CPU_ALLOC_SIZE(count) __CPU_ALLOC_SIZE (count)
   111  # define CPU_ALLOC(count) __CPU_ALLOC (count)
   112  # define CPU_FREE(cpuset) __CPU_FREE (cpuset)
   113  
   114  /* Set the CPU affinity for a task */
   115  extern int sched_setaffinity(__pid_t __pid, size_t __cpusetsize, const cpu_set_t * __cpuset) __THROW;
   116  
   117  /* Get the CPU affinity for a task */
   118  extern int sched_getaffinity(__pid_t __pid, size_t __cpusetsize, cpu_set_t * __cpuset) __THROW;
   119  #endif
   120  
   121  __END_DECLS
   122  #endif				/* sched.h */