grub2: bring back build of aros-side grub2 tools
[AROS.git] / rom / task / QueryTaskTagList.c
blobc721deadfab323421f8ee68e77c081da1d08d2cd
1 /*
2 Copyright © 2015, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #define DEBUG 0
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>
14 #include "etask.h"
16 #include "taskres_intern.h"
18 /*****************************************************************************
20 NAME */
21 #include <proto/task.h>
23 AROS_LH2(void, QueryTaskTagList,
25 /* SYNOPSIS */
26 AROS_LHA(struct Task *, task, A0),
27 AROS_LHA(struct TagItem *, tagList, A1),
29 /* LOCATION */
30 struct TaskResBase *, TaskResBase, 6, Task)
32 /* FUNCTION
34 Provides information about selected system Task
36 INPUTS
38 Function takes an array of tags. Data is returned for each tag. See
39 specific tag description.
41 TAGS
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 .
48 RESULT
50 None
52 NOTES
54 EXAMPLE
56 BUGS
58 SEE ALSO
60 INTERNALS
62 ******************************************************************************/
64 AROS_LIBFUNC_INIT
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)
74 switch(Tag->ti_Tag)
76 case(TaskTag_CPUNumber):
77 #if defined(__AROSEXEC_SMP__)
78 *((IPTR *)Tag->ti_Data) = task_et->iet_CpuNumber;
79 #else
80 *((IPTR *)Tag->ti_Data) = 0;
81 #endif
82 break;
83 case(TaskTag_CPUAffinity):
84 #if defined(__AROSEXEC_SMP__)
85 *((IPTR *)Tag->ti_Data) = task_et->iet_CpuAffinity;
86 #else
87 *((IPTR *)Tag->ti_Data) = (1 << 0);
88 #endif
89 break;
90 case(TaskTag_CPUTime):
92 struct timeval *storeval = (struct timeval *)Tag->ti_Data;
93 if (task_et)
95 storeval->tv_micro = task_et->iet_CpuTime.tv_micro;
96 storeval->tv_secs = task_et->iet_CpuTime.tv_secs;
99 break;
100 case(TaskTag_StartTime):
102 struct timeval *storeval = (struct timeval *)Tag->ti_Data;
103 if (task_et)
105 storeval->tv_micro = task_et->iet_StartTime.tv_micro;
106 storeval->tv_secs = task_et->iet_StartTime.tv_secs;
109 break;
113 AROS_LIBFUNC_EXIT
114 } /* QueryTaskTagList() */