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