view tango/tango/stdc/posix/sched.d @ 132:1700239cab2e trunk

[svn r136] MAJOR UNSTABLE UPDATE!!! Initial commit after moving to Tango instead of Phobos. Lots of bugfixes... This build is not suitable for most things.
author lindquist
date Fri, 11 Jan 2008 17:57:40 +0100
parents
children
line wrap: on
line source

/**
 * D header file for POSIX.
 *
 * Copyright: Public Domain
 * License:   Public Domain
 * Authors:   Sean Kelly
 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
 */
module tango.stdc.posix.sched;

public import tango.stdc.posix.time;
public import tango.stdc.posix.sys.types;

extern (C):

//
// Required
//
/*
struct sched_param
{
    int sched_priority (THR)
    int sched_ss_low_priority (SS|TSP)
    struct timespec sched_ss_repl_period (SS|TSP)
    struct timespec sched_ss_init_budget (SS|TSP)
    int sched_ss_max_repl (SS|TSP)
}

SCHED_FIFO
SCHED_RR
SCHED_SPORADIC (SS|TSP)
SCHED_OTHER

int sched_getparam(pid_t, sched_param*);
int sched_getscheduler(pid_t);
int sched_setparam(pid_t, sched_param*);
int sched_setscheduler(pid_t, int, sched_param*);
*/

version( linux )
{
    struct sched_param
    {
        int sched_priority;
    }

    const SCHED_OTHER   = 0;
    const SCHED_FIFO    = 1;
    const SCHED_RR      = 2;
    //SCHED_SPORADIC (SS|TSP)
}
else version( darwin )
{
    const SCHED_OTHER   = 1;
    const SCHED_FIFO    = 4;
    const SCHED_RR      = 2;
    // SCHED_SPORADIC seems to be unavailable

    private const __SCHED_PARAM_SIZE__ = 4;

    struct sched_param
    {
        int                         sched_priority;
        byte[__SCHED_PARAM_SIZE__]  opaque;
    }
}

int sched_getparam(pid_t, sched_param*);
int sched_getscheduler(pid_t);
int sched_setparam(pid_t, sched_param*);
int sched_setscheduler(pid_t, int, sched_param*);

//
// Thread (THR)
//
/*
int sched_yield();
*/

version( linux )
{
    int sched_yield();
}
else version( darwin )
{
    int sched_yield();
}

//
// Scheduling (TPS)
//
/*
int sched_get_priority_max(int);
int sched_get_priority_min(int);
int sched_rr_get_interval(pid_t, timespec*);
*/

version( linux )
{
    int sched_get_priority_max(int);
    int sched_get_priority_min(int);
    int sched_rr_get_interval(pid_t, timespec*);
}
else version( darwin )
{
    int sched_get_priority_min(int);
    int sched_get_priority_max(int);
    //int sched_rr_get_interval(pid_t, timespec*); // FIXME: unavailable?
}