*
* return ECGEOF when the iterator finishes getting the list of tasks.
*/
-int cgroup_get_task_next(void *handle, pid_t *pid);
+int cgroup_get_task_next(void **handle, pid_t *pid);
int cgroup_get_task_end(void **handle);
/* The wrappers for filling libcg structures */
return 0;
}
-int cgroup_get_task_next(void *handle, pid_t *pid)
+int cgroup_get_task_next(void **handle, pid_t *pid)
{
int ret;
if (!handle)
return ECGINVAL;
- ret = fscanf((FILE *) handle, "%u", pid);
+ ret = fscanf((FILE *) *handle, "%u", pid);
if (ret != 1) {
if (ret == EOF)
last_errno = errno;
return ECGOTHER;
}
- ret = cgroup_get_task_next(*handle, pid);
+ ret = cgroup_get_task_next(handle, pid);
return ret;
}
{
int ret, i;
char *group = NULL;
- FILE *tasks = NULL;
+ void *handle;
if (argc < 2) {
printf("No list of groups provided\n");
pid_t pid;
group = strdup(argv[i]);
printf("Printing the details of groups %s\n", group);
- ret = cgroup_get_task_begin(group, "cpu", (void *) &tasks,
- &pid);
+ ret = cgroup_get_task_begin(group, "cpu", &handle, &pid);
while (!ret) {
printf("Pid is %u\n", pid);
- ret = cgroup_get_task_next((void *) tasks, &pid);
+ ret = cgroup_get_task_next(&handle, &pid);
if (ret && ret != ECGEOF) {
printf("cgroup_get_task_next failed with %s\n",
cgroup_strerror(ret));
}
free(group);
group = NULL;
- ret = cgroup_get_task_end((void **) &tasks);
+ ret = cgroup_get_task_end(&handle);
}
return 0;