#ifndef _MACH_POLICY_H_
#define _MACH_POLICY_H_
#include <mach/boolean.h>
#include <mach/vm_types.h>
#include <sys/appleapiopts.h>
typedef int policy_t;
typedef integer_t *policy_info_t;
typedef integer_t *policy_base_t;
typedef integer_t *policy_limit_t;
#ifdef __APPLE_API_UNSTABLE
#define POLICY_NULL 0
#define POLICY_TIMESHARE 1
#define POLICY_RR 2
#define POLICY_FIFO 4
#define __NEW_SCHEDULING_FRAMEWORK__
#define POLICYCLASS_FIXEDPRI (POLICY_RR | POLICY_FIFO)
#define invalid_policy(policy) \
((policy) != POLICY_TIMESHARE && \
(policy) != POLICY_RR && \
(policy) != POLICY_FIFO)
struct policy_timeshare_base {
integer_t base_priority;
};
struct policy_timeshare_limit {
integer_t max_priority;
};
struct policy_timeshare_info {
integer_t max_priority;
integer_t base_priority;
integer_t cur_priority;
boolean_t depressed;
integer_t depress_priority;
};
typedef struct policy_timeshare_base *policy_timeshare_base_t;
typedef struct policy_timeshare_limit *policy_timeshare_limit_t;
typedef struct policy_timeshare_info *policy_timeshare_info_t;
typedef struct policy_timeshare_base policy_timeshare_base_data_t;
typedef struct policy_timeshare_limit policy_timeshare_limit_data_t;
typedef struct policy_timeshare_info policy_timeshare_info_data_t;
#define POLICY_TIMESHARE_BASE_COUNT \
(sizeof(struct policy_timeshare_base)/sizeof(integer_t))
#define POLICY_TIMESHARE_LIMIT_COUNT \
(sizeof(struct policy_timeshare_limit)/sizeof(integer_t))
#define POLICY_TIMESHARE_INFO_COUNT \
(sizeof(struct policy_timeshare_info)/sizeof(integer_t))
struct policy_rr_base {
integer_t base_priority;
integer_t quantum;
};
struct policy_rr_limit {
integer_t max_priority;
};
struct policy_rr_info {
integer_t max_priority;
integer_t base_priority;
integer_t quantum;
boolean_t depressed;
integer_t depress_priority;
};
typedef struct policy_rr_base *policy_rr_base_t;
typedef struct policy_rr_limit *policy_rr_limit_t;
typedef struct policy_rr_info *policy_rr_info_t;
typedef struct policy_rr_base policy_rr_base_data_t;
typedef struct policy_rr_limit policy_rr_limit_data_t;
typedef struct policy_rr_info policy_rr_info_data_t;
#define POLICY_RR_BASE_COUNT \
(sizeof(struct policy_rr_base)/sizeof(integer_t))
#define POLICY_RR_LIMIT_COUNT \
(sizeof(struct policy_rr_limit)/sizeof(integer_t))
#define POLICY_RR_INFO_COUNT \
(sizeof(struct policy_rr_info)/sizeof(integer_t))
struct policy_fifo_base {
integer_t base_priority;
};
struct policy_fifo_limit {
integer_t max_priority;
};
struct policy_fifo_info {
integer_t max_priority;
integer_t base_priority;
boolean_t depressed;
integer_t depress_priority;
};
typedef struct policy_fifo_base *policy_fifo_base_t;
typedef struct policy_fifo_limit *policy_fifo_limit_t;
typedef struct policy_fifo_info *policy_fifo_info_t;
typedef struct policy_fifo_base policy_fifo_base_data_t;
typedef struct policy_fifo_limit policy_fifo_limit_data_t;
typedef struct policy_fifo_info policy_fifo_info_data_t;
#define POLICY_FIFO_BASE_COUNT \
(sizeof(struct policy_fifo_base)/sizeof(integer_t))
#define POLICY_FIFO_LIMIT_COUNT \
(sizeof(struct policy_fifo_limit)/sizeof(integer_t))
#define POLICY_FIFO_INFO_COUNT \
(sizeof(struct policy_fifo_info)/sizeof(integer_t))
struct policy_bases {
policy_timeshare_base_data_t ts;
policy_rr_base_data_t rr;
policy_fifo_base_data_t fifo;
};
struct policy_limits {
policy_timeshare_limit_data_t ts;
policy_rr_limit_data_t rr;
policy_fifo_limit_data_t fifo;
};
struct policy_infos {
policy_timeshare_info_data_t ts;
policy_rr_info_data_t rr;
policy_fifo_info_data_t fifo;
};
typedef struct policy_bases policy_base_data_t;
typedef struct policy_limits policy_limit_data_t;
typedef struct policy_infos policy_info_data_t;
#endif
#endif