schedutil


schedutil - various routines that work with OS scheduler

Functions

sched_get_cpuid

publicplat


Returns cpuid of current thread

LIBEXPORT PLATAPI int sched_get_cpuid(void)

sched_switch

publicplat


Yield CPU to another thread

LIBEXPORT PLATAPI int sched_switch(void)

sched_get_affinity, sched_set_affinity

publicplat

LIBEXPORT PLATAPI int sched_set_affinity(thread_t* thread , cpumask_t* mask)
LIBEXPORT PLATAPI int sched_get_affinity(thread_t* thread , cpumask_t* mask)

sched_policy_find_byname, sched_policy_find_byid

public

LIBEXPORT sched_policy_t* sched_policy_find_byname(const char* name)
LIBEXPORT sched_policy_t* sched_policy_find_byid(int id)

sched_get_policies

publicplat


Returns array of available scheduler policies on current system
NULL is a mark for end of array

LIBEXPORT PLATAPI sched_policy_t** sched_get_policies()

sched_set_policy

publicplat


Sets policy of a thread, but doesn't call operating system until you
call sched_commit. This is because some OSes (like Linux) need to set
policy and param simultaneously, and others (like Solaris) may have multiple
params to set.

RETURN VALUES
SCHED_INVALID_POLICY if name is invalid or SCHED_OK if everything went fine.

LIBEXPORT PLATAPI int sched_set_policy(thread_t* thread, const char* name)

sched_set_param

publicplat


Sets scheduler parameter

RETURN VALUES
SCHED_INVALID_PARAM if name is invalid, SCHED_INVALID_POLICY if policy is not yet set and SCHED_OK if everything went fine.

NOTES
if this function fails, you should start again from sched_set_policy

LIBEXPORT PLATAPI int sched_set_param(thread_t* thread, const char* name, int64_t value)

sched_commit

publicplat


Calls operating system to commit changes made by sched_set_policy() and sched_set_param()

RETURN VALUES
SCHED_ERROR in case of system error, SCHED_INVALID_PARAM/SCHED_INVALID_POLICY if thread was not properly initialized, SCHED_NOT_PERMITTED if you do not have permissions to alter scheduling policy.

LIBEXPORT PLATAPI int sched_commit(thread_t* thread)

sched_get_param, sched_get_policy

publicplat

LIBEXPORT PLATAPI int sched_get_param(thread_t* thread, const char* name, int64_t* value)
LIBEXPORT PLATAPI int sched_get_policy(thread_t* thread, char* name, size_t len)

sched_init, sched_fini

publicplat

LIBEXPORT PLATAPI int sched_init(void)
LIBEXPORT PLATAPI void sched_fini(void)

Types

sched_param_t

typedef struct {
    const char* name;
    int         min;
    int         max;
} sched_param_t;

sched_policy_t

typedef struct {
    const char* name;
    sched_param_t* params;

    int   id;
    void* private;
} sched_policy_t;