NAME
Csched - LCG Scheduling inferface
SYNOPSIS
#include <Csched_api.h>
int Csched_getschedparam(int cid, int *policy, Csched_param_t *param);
int Csched_setschedparam(int cid, int policy, Csched_param_t *param);
int Csched_get_priority_min(int policy);
int Csched_get_priority_mid(int policy);
int Csched_get_priority_max(int policy);
ERRORS
Beyond the errno value, Csched is setting the serrno value to generic
values that are described in Cthread(1).
DESCRIPTION
Csched is a common API interface for scheduling of multithreaded
programs.
Csched_getschedparam retrieves the current scheduling policy and
priority of the thread referenced with Cthread’s id cid. The policy
can be CSCHED_OTHER, CSCHED_FIFO, CSCHED_RR, CSCHED_FG_NP or
CSCHED_BG_NP. The param structure contains a member, named
sched_priority , where will be stored the current priority of the
thread you ask for. Please read the NOTES section.
Return value is 0 on success, or -1 on error.
Csched_setschedparam sets the scheduling policy and priority of the
thread referenced with Cthread’s id cid. The policy can be
CSCHED_OTHER, CSCHED_FIFO, CSCHED_RR, CSCHED_FG_NP or CSCHED_BG_NP.
You are neverthless warned that the recommended scheduling is
CSCHED_OTHER. Trying to use another scheduling is an opendoor to
processor deadlock if you do not code with extreme care. Furthermore,
except CSCHED_OTHER , it is not guaranteed that the other possible
values ( CSCHED_CSCHED_FIFO, CSCHED_RR, CSCHED_FG_NP or CSCHED_BG_NP )
are supported or implemented on your platform. The param structure
contains a member, named sched_priority , where is given the priority
of the thread you want the attributes to be modified. Its value can
vary from Csched_get_priority_min(policy) to
Csched_get_priority_max(policy). Please read the NOTES section.
Return value is 0 on success, or -1 on error.
Csched_get_priority_min, Csched_get_priority_mid and
Csched_get_priority_max are returning the minimum, medium and maximum
allowed priorities, respectively, vs. the given policy. The output is
the one that you use in the sched_priority member of the Csched_param_t
structure. Please read the NOTES section.
Return value is != -1 on success, or -1 on error.
NOTES
About scheduling, the Csched interface defines CSCHED_OTHER,
CSCHED_FIFO, CSCHED_RR, CSCHED_FG_NP and CSCHED_BG_NP for portability
issue. This does not mean that all those schedulings are supported on
the platform you are running on. In particular, only CSCHED_OTHER is
officially supported everywhere. The other scheduling policies are
totally system dependent and do not conform to any standardisation.
Please be aware, also, that using a scheduling other than CSCHED_OTHER
is an opendoor to processor deadlock...
Finally, on some OSes, the scheduling interfaces are not necessarly in
the thread library, nor in the C library. In particular, on Digital you
may find them in librt, and on Solaris in libposix4.
SEE ALSO
Cthread
AUTHOR
LCG Grid Deployment Team