source: rtems/cpukit/sapi/include/rtems/cbs.h @ 82db8e56

4.115
Last change on this file since 82db8e56 was 82db8e56, checked in by Joel Sherrill <joel.sherrill@…>, on 09/15/11 at 15:49:32

2011-09-15 Petr Benes <benesp16@…>

PR 1906/cpukit

  • sapi/Makefile.am, sapi/preinstall.am, sapi/include/confdefs.h, score/Makefile.am, score/preinstall.am: Add the CBS (Constant Bandwidth Server) scheduler. This is a complex scheduling policy built atop of the EDF scheduler. Unlike other schedulers, this one provides a user API and handles not only deadlines of tasks but also claimed budget per period. The main aim of the scheduler is isolation of tasks so that each task is guaranteed to meet all deadlines regardless of how other tasks behave.
  • sapi/include/rtems/cbs.h, sapi/inline/rtems/cbs.inl, score/include/rtems/score/schedulercbs.h, score/src/schedulercbs.c, score/src/schedulercbsattachthread.c, score/src/schedulercbscleanup.c, score/src/schedulercbscreateserver.c, score/src/schedulercbsdestroyserver.c, score/src/schedulercbsdetachthread.c, score/src/schedulercbsgetapprovedbudget.c, score/src/schedulercbsgetexecutiontime.c, score/src/schedulercbsgetparameters.c, score/src/schedulercbsgetremainingbudget.c, score/src/schedulercbsgetserverid.c, score/src/schedulercbsreleasejob.c, score/src/schedulercbssetparameters.c, score/src/schedulercbsunblock.c: New files.
  • Property mode set to 100644
File size: 2.1 KB
Line 
1/**
2 * @file rtems/cbs.h
3 *
4 *  This include file contains all the constants and structures associated
5 *  with the CBS library in RTEMS.
6 */
7
8/*
9 *  Copyright (C) 2011 Petr Benes.
10 *  Copyright (C) 2011 On-Line Applications Research Corporation (OAR).
11 *
12 *  The license and distribution terms for this file may be
13 *  found in the file LICENSE in this distribution or at
14 *  http://www.rtems.com/license/LICENSE.
15 *
16 *  $Id$
17 */
18
19#ifndef CONFIGURE_SCHEDULER_CBS
20  #error "cbs.h available only with CONFIGURE_SCHEDULER_CBS"
21#endif
22
23#ifndef _RTEMS_CBS_H
24#define _RTEMS_CBS_H
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30#include <stdint.h>
31#include <rtems/score/schedulercbs.h>
32
33/* Return codes. */
34#define RTEMS_CBS_OK                       SCHEDULER_CBS_OK
35#define RTEMS_CBS_ERROR_GENERIC            SCHEDULER_CBS_ERROR_GENERIC
36#define RTEMS_CBS_ERROR_NO_MEMORY          SCHEDULER_CBS_ERROR_NO_MEMORY
37#define RTEMS_CBS_ERROR_INVALID_PARAMETER  SCHEDULER_CBS_ERROR_INVALID_PARAM
38#define RTEMS_CBS_ERROR_UNAUTHORIZED       SCHEDULER_CBS_ERROR_UNAUTHORIZED
39#define RTEMS_CBS_ERROR_UNIMPLEMENTED      SCHEDULER_CBS_ERROR_UNIMPLEMENTED
40#define RTEMS_CBS_ERROR_MISSING_COMPONENT  SCHEDULER_CBS_ERROR_MISSING_COMPONENT
41#define RTEMS_CBS_ERROR_INCONSISTENT_STATE SCHEDULER_CBS_ERROR_INCONSISTENT_STATE
42#define RTEMS_CBS_ERROR_SYSTEM_OVERLOAD    SCHEDULER_CBS_ERROR_SYSTEM_OVERLOAD
43#define RTEMS_CBS_ERROR_INTERNAL_ERROR     SCHEDULER_CBS_ERROR_INTERNAL_ERROR
44#define RTEMS_CBS_ERROR_NOT_FOUND          SCHEDULER_CBS_ERROR_NOT_FOUND
45#define RTEMS_CBS_ERROR_FULL               SCHEDULER_CBS_ERROR_FULL
46#define RTEMS_CBS_ERROR_EMPTY              SCHEDULER_CBS_ERROR_EMPTY
47#define RTEMS_CBS_ERROR_NOSERVER           SCHEDULER_CBS_ERROR_NOSERVER
48
49/** Callback function invoked when a budget overrun of a task occurs. */
50typedef Scheduler_CBS_Budget_overrun rtems_cbs_budget_overrun;
51
52/** Server id. */
53typedef Scheduler_CBS_Server_id rtems_cbs_server_id;
54
55/** Server parameters. */
56typedef Scheduler_CBS_Parameters rtems_cbs_parameters;
57
58#include <rtems/cbs.inl>
59
60#ifdef __cplusplus
61}
62#endif
63
64#endif
65/* end of include file */
Note: See TracBrowser for help on using the repository browser.