2 Copyright © 2015, The AROS Development Team. All rights reserved.
8 #include <aros/debug.h>
9 #include <exec/types.h>
10 #include <aros/libcall.h>
11 #include <proto/utility.h>
12 #include <resources/task.h>
16 #include "taskres_intern.h"
18 /*****************************************************************************
21 #include <proto/task.h>
23 AROS_LH2(void, QueryTaskTagList
,
26 AROS_LHA(struct Task
*, task
, A0
),
27 AROS_LHA(struct TagItem
*, tagList
, A1
),
30 struct TaskResBase
*, TaskResBase
, 6, Task
)
34 Provides information about selected system Task
38 Function takes an array of tags. Data is returned for each tag. See
39 specific tag description.
43 TaskTag_CPUNumber - (IPTR *) Returns the CPU Number the task is currently running on
44 TaskTag_CPUAffinity - (IPTR *) Returns the CPU Affinity mask
45 TaskTag_CPUTime - (struct timeval *) Returns the amount of cpu time a task has used .
46 TaskTag_StartTime - (struct timeval *) Returns the time the task was launched .
62 ******************************************************************************/
66 struct TagItem
* Tag
= NULL
;
67 struct Library
*UtilityBase
= TaskResBase
->trb_UtilityBase
;
68 struct IntETask
*task_et
= GetIntETask(task
);
70 /* This is the default implementation */
72 while ((Tag
= NextTagItem(&tagList
)) != NULL
)
76 case(TaskTag_CPUNumber
):
77 #if defined(__AROSEXEC_SMP__)
78 *((IPTR
*)Tag
->ti_Data
) = task_et
->iet_CpuNumber
;
80 *((IPTR
*)Tag
->ti_Data
) = 0;
83 case(TaskTag_CPUAffinity
):
84 #if defined(__AROSEXEC_SMP__)
85 *((IPTR
*)Tag
->ti_Data
) = task_et
->iet_CpuAffinity
;
87 *((IPTR
*)Tag
->ti_Data
) = (1 << 0);
90 case(TaskTag_CPUTime
):
92 struct timeval
*storeval
= (struct timeval
*)Tag
->ti_Data
;
95 storeval
->tv_micro
= task_et
->iet_CpuTime
.tv_micro
;
96 storeval
->tv_secs
= task_et
->iet_CpuTime
.tv_secs
;
100 case(TaskTag_StartTime
):
102 struct timeval
*storeval
= (struct timeval
*)Tag
->ti_Data
;
105 storeval
->tv_micro
= task_et
->iet_StartTime
.tv_micro
;
106 storeval
->tv_secs
= task_et
->iet_StartTime
.tv_secs
;
114 } /* QueryTaskTagList() */