Lines Matching defs:task

59  *	File:	task.h
108 #include <machine/task.h>
120 /* defns for task->rsu_controldata */
149 struct task {
161 /* Threads in this task */
203 struct ipc_port *itk_resume; /* a receive right to resume this task */
231 zinfo_usage_t tkm_zinfo; /* per-task, per-zone usage statistics */
237 uint32_t t_flags; /* general-purpose task flags protected by task_lock (TL) */
238 #define TF_64B_ADDR 0x1 /* task has 64-bit addressing */
239 #define TF_64B_DATA 0x2 /* task has 64-bit data registers */
240 #define TF_CPUMON_WARNING 0x4 /* task has at least one thread in CPU usage warning zone */
241 #define TF_WAKEMON_WARNING 0x8 /* task is in wakeups monitor warning zone */
242 #define TF_TELEMETRY (TF_CPUMON_WARNING | TF_WAKEMON_WARNING) /* task is a telemetry participant */
243 #define task_has_64BitAddr(task) \
244 (((task)->t_flags & TF_64B_ADDR) != 0)
245 #define task_set_64BitAddr(task) \
246 ((task)->t_flags |= TF_64B_ADDR)
247 #define task_clear_64BitAddr(task) \
248 ((task)->t_flags &= ~TF_64B_ADDR)
249 #define task_has_64BitData(task) \
250 (((task)->t_flags & TF_64B_DATA) != 0)
279 uint32_t imp_receiver :1, /* the task can receive importance boost */
280 imp_donor :1, /* the task always sends boosts regardless of boost status */
290 int8_t suspends_outstanding; /* suspends this task performed in excess of resumes */
300 uint32_t low_mem_notified_warn :1, /* warning low memory notification is sent to the task */
301 low_mem_notified_critical :1, /* critical low memory notification is sent to the task */
302 purged_memory_warn :1, /* purgeable memory of the task is purged for warning level pressure */
303 purged_memory_critical :1, /* purgeable memory of the task is purged for critical level pressure */
306 /* Statistics accumulated for terminated threads from this task */
311 * "volatile" by this task */
314 #define task_lock(task) lck_mtx_lock(&(task)->lock)
315 #define task_lock_assert_owned(task) lck_mtx_assert(&(task)->lock, LCK_MTX_ASSERT_OWNED)
316 #define task_lock_try(task) lck_mtx_try_lock(&(task)->lock)
317 #define task_unlock(task) lck_mtx_unlock(&(task)->lock)
322 #define tasklabel_lock(task) lh_lock((task)->label)
323 #define tasklabel_unlock(task) lh_unlock((task)->label)
329 #define itk_lock_init(task) lck_mtx_init(&(task)->itk_lock_data, &ipc_lck_grp, &ipc_lck_attr)
330 #define itk_lock_destroy(task) lck_mtx_destroy(&(task)->itk_lock_data, &ipc_lck_grp)
331 #define itk_lock(task) lck_mtx_lock(&(task)->itk_lock_data)
332 #define itk_unlock(task) lck_mtx_unlock(&(task)->itk_lock_data)
337 extern void task_reference_internal(task_t task);
338 extern uint32_t task_deallocate_internal(task_t task);
340 #define task_reference_internal(task) \
341 (void)hw_atomic_add(&(task)->ref_count, 1)
343 #define task_deallocate_internal(task) \
344 hw_atomic_sub(&(task)->ref_count, 1)
347 #define task_reference(task) \
349 if ((task) != TASK_NULL) \
350 task_reference_internal(task); \
354 task_t task,
359 /* Initialize task module */
362 #define current_task_fast() (current_thread()->task)
374 extern void task_reference(task_t task);
384 /* Hold all threads in a task */
386 task_t task);
388 /* Wait for task to stop running, either just to get off CPU or to cease being runnable */
390 task_t task,
393 /* Release hold on all threads in a task */
395 task_t task);
397 /* Suspends a task by placing a hold on its threads */
399 task_t task);
401 task_t task);
403 /* Resumes a previously paused task */
405 task_t task);
409 /* Freeze a task's resident pages */
411 task_t task,
420 /* Thaw a currently frozen task */
422 task_t task);
426 /* Halt all other threads in the current task */
428 task_t task);
430 /* Wait for other threads to halt and free halting task resources */
432 task_t task);
435 task_t task);
444 task_t task,
448 task_t task,
452 task_t task,
456 task_t task,
460 task_t task,
469 task_t task,
473 task_t task);
476 task_t task,
480 /* Get number of activations in a task */
482 task_t task);
484 extern int get_task_numactivethreads(task_t task);
496 extern kern_return_t task_get_phys_footprint_limit(task_t task, int *limit_mb);
498 extern boolean_t is_kerneltask(task_t task);
500 extern kern_return_t check_actforsig(task_t task, thread_t thread, int setast);
503 task_t task,
509 task_t task,
514 extern void machine_task_terminate(task_t task);
547 /* internal or external, thread or task */
553 /* internal or external, task only */
557 /* internal, task only */
560 /* task-only attributes */
578 /* The main entrance to task policy is this function */
579 extern void proc_set_task_policy(task_t task, thread_t thread, int category, int flavor, int value);
580 extern int proc_get_task_policy(task_t task, thread_t thread, int category, int flavor);
583 extern void proc_set_task_policy_thread(task_t task, uint64_t tid, int category, int flavor, int value);
585 extern void proc_set_task_apptype(task_t task, int type);
609 extern int proc_get_darwinbgstate(task_t task, uint32_t *flagsp);
610 extern boolean_t proc_task_is_tal(task_t task);
611 extern integer_t task_grab_latency_qos(task_t task);
612 extern void task_policy_create(task_t task, int parent_boosted);
619 extern int proc_get_effective_task_policy(task_t task, int flavor);
625 int proc_get_task_ruse_cpu(task_t task, uint32_t *policyp, uint8_t *percentagep, uint64_t *intervalp, uint64_t *deadlinep);
626 int proc_set_task_ruse_cpu(task_t task, uint32_t policy, uint8_t percentage, uint64_t interval, uint64_t deadline, int cpumon_entitled);
627 int proc_clear_task_ruse_cpu(task_t task, int cpumon_entitled);
641 extern int task_restore_resource_actions(task_t task, int type);
643 extern int task_clear_cpuusage(task_t task, int cpumon_entitled);
645 extern kern_return_t task_wakeups_monitor_ctl(task_t task, uint32_t *rate_hz, int32_t *flags);
646 extern kern_return_t task_cpu_usage_monitor_ctl(task_t task, uint32_t *flags);
649 void task_importance_mark_donor(task_t task, boolean_t donating);
652 extern boolean_t task_is_importance_donor(task_t task);
653 extern boolean_t task_is_importance_receiver(task_t task);
664 extern void task_hold_multiple_assertion(task_t task, uint32_t count);
665 extern void task_add_importance_watchport(task_t task, int pid, mach_port_t port, int *boostp);
667 extern boolean_t task_has_been_notified(task_t task, int pressurelevel);
668 extern boolean_t task_used_for_purging(task_t task, int pressurelevel);
669 extern void task_mark_has_been_notified(task_t task, int pressurelevel);
670 extern void task_mark_used_for_purging(task_t task, int pressurelevel);
671 extern void task_clear_has_been_notified(task_t task, int pressurelevel);
672 extern void task_clear_used_for_purging(task_t task);
673 extern int task_importance_estimate(task_t task);
679 #define audit_token_pid_from_task(task) ((task)->audit_token.val[5])
695 /* Convert from a task to a port */
698 extern ipc_port_t convert_task_suspension_token_to_port(task_suspension_token_t task);
700 /* Convert from a port (in this case, an SO right to a task's resume port) to a task. */
710 task_t task);