X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/1c79356b52d46aa6b508fb032f5ae709b1f2897b..4452a7af2eac33dbad800bcc91f2399d62c18f53:/osfmk/mach/thread_policy.h diff --git a/osfmk/mach/thread_policy.h b/osfmk/mach/thread_policy.h index 3f2e29cad..21293d94b 100644 --- a/osfmk/mach/thread_policy.h +++ b/osfmk/mach/thread_policy.h @@ -1,34 +1,29 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * - * The contents of this file constitute Original Code as defined in and - * are subject to the Apple Public Source License Version 1.1 (the - * "License"). You may not use this file except in compliance with the - * License. Please obtain a copy of the License at - * http://www.apple.com/publicsource and read it before using this file. + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. * - * This Original Code and all software distributed under the License are - * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the - * License for the specific language governing rights and limitations - * under the License. + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. * - * @APPLE_LICENSE_HEADER_END@ - */ -/* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. - * - * HISTORY - * - * 10 October 2000 (debo) - * Created. - * - * 30 November 2000 (debo) - * Final resolution of review feedback. + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #ifndef _MACH_THREAD_POLICY_H_ @@ -58,13 +53,13 @@ typedef integer_t *thread_policy_t; /* kern_return_t thread_policy_set( - thread_act_t thread, + thread_t thread, thread_policy_flavor_t flavor, thread_policy_t policy_info, mach_msg_type_number_t count); kern_return_t thread_policy_get( - thread_act_t thread, + thread_t thread, thread_policy_flavor_t flavor, thread_policy_t policy_info, mach_msg_type_number_t *count, @@ -77,9 +72,10 @@ kern_return_t thread_policy_get( /* * THREAD_STANDARD_POLICY: * - * This is the standard [fair] scheduling mode, assigned to new - * threads. Specifying it explicitly is not typically required, - * but may be used to return a thread to the default mode setting. + * This is the standard (fair) scheduling mode, assigned to new + * threads. The thread will be given processor time in a manner + * which apportions approximately equal share to long running + * computations. * * Parameters: * [none] @@ -88,14 +84,37 @@ kern_return_t thread_policy_get( #define THREAD_STANDARD_POLICY 1 struct thread_standard_policy { - /* no data */ + natural_t no_data; }; typedef struct thread_standard_policy thread_standard_policy_data_t; typedef struct thread_standard_policy *thread_standard_policy_t; -#define THREAD_STANDARD_POLICY_COUNT \ - (sizeof (thread_standard_policy_data_t) / sizeof (integer_t)) +#define THREAD_STANDARD_POLICY_COUNT 0 + +/* + * THREAD_EXTENDED_POLICY: + * + * Extended form of THREAD_STANDARD_POLICY, which supplies a + * hint indicating whether this is a long running computation. + * + * Parameters: + * + * timeshare: TRUE (the default) results in identical scheduling + * behavior as THREAD_STANDARD_POLICY. + */ + +#define THREAD_EXTENDED_POLICY 1 + +struct thread_extended_policy { + boolean_t timeshare; +}; + +typedef struct thread_extended_policy thread_extended_policy_data_t; +typedef struct thread_extended_policy *thread_extended_policy_t; + +#define THREAD_EXTENDED_POLICY_COUNT ((mach_msg_type_number_t) \ + (sizeof (thread_extended_policy_data_t) / sizeof (integer_t))) /* * THREAD_TIME_CONSTRAINT_POLICY: @@ -127,9 +146,9 @@ typedef struct thread_standard_policy *thread_standard_policy_t; #define THREAD_TIME_CONSTRAINT_POLICY 2 struct thread_time_constraint_policy { - natural_t period; - natural_t computation; - natural_t constraint; + uint32_t period; + uint32_t computation; + uint32_t constraint; boolean_t preemptible; }; @@ -138,8 +157,8 @@ typedef struct thread_time_constraint_policy \ typedef struct thread_time_constraint_policy \ *thread_time_constraint_policy_t; -#define THREAD_TIME_CONSTRAINT_POLICY_COUNT \ - (sizeof (thread_time_constraint_policy_data_t) / sizeof (integer_t)) +#define THREAD_TIME_CONSTRAINT_POLICY_COUNT ((mach_msg_type_number_t) \ + (sizeof (thread_time_constraint_policy_data_t) / sizeof (integer_t))) /* * THREAD_PRECEDENCE_POLICY: @@ -161,7 +180,7 @@ struct thread_precedence_policy { typedef struct thread_precedence_policy thread_precedence_policy_data_t; typedef struct thread_precedence_policy *thread_precedence_policy_t; -#define THREAD_PRECEDENCE_POLICY_COUNT \ - (sizeof (thread_precedence_policy_data_t) / sizeof (integer_t)) +#define THREAD_PRECEDENCE_POLICY_COUNT ((mach_msg_type_number_t) \ + (sizeof (thread_precedence_policy_data_t) / sizeof (integer_t))) #endif /* _MACH_THREAD_POLICY_H_ */