1*53ee8cc1Swenshuai.xi /* cgroupstats.h - exporting per-cgroup statistics 2*53ee8cc1Swenshuai.xi * 3*53ee8cc1Swenshuai.xi * Copyright IBM Corporation, 2007 4*53ee8cc1Swenshuai.xi * Author Balbir Singh <balbir@linux.vnet.ibm.com> 5*53ee8cc1Swenshuai.xi * 6*53ee8cc1Swenshuai.xi * This program is free software; you can redistribute it and/or modify it 7*53ee8cc1Swenshuai.xi * under the terms of version 2.1 of the GNU Lesser General Public License 8*53ee8cc1Swenshuai.xi * as published by the Free Software Foundation. 9*53ee8cc1Swenshuai.xi * 10*53ee8cc1Swenshuai.xi * This program is distributed in the hope that it would be useful, but 11*53ee8cc1Swenshuai.xi * WITHOUT ANY WARRANTY; without even the implied warranty of 12*53ee8cc1Swenshuai.xi * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 13*53ee8cc1Swenshuai.xi */ 14*53ee8cc1Swenshuai.xi 15*53ee8cc1Swenshuai.xi #ifndef _LINUX_CGROUPSTATS_H 16*53ee8cc1Swenshuai.xi #define _LINUX_CGROUPSTATS_H 17*53ee8cc1Swenshuai.xi 18*53ee8cc1Swenshuai.xi #include <linux/taskstats.h> 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi /* 21*53ee8cc1Swenshuai.xi * Data shared between user space and kernel space on a per cgroup 22*53ee8cc1Swenshuai.xi * basis. This data is shared using taskstats. 23*53ee8cc1Swenshuai.xi * 24*53ee8cc1Swenshuai.xi * Most of these states are derived by looking at the task->state value 25*53ee8cc1Swenshuai.xi * For the nr_io_wait state, a flag in the delay accounting structure 26*53ee8cc1Swenshuai.xi * indicates that the task is waiting on IO 27*53ee8cc1Swenshuai.xi * 28*53ee8cc1Swenshuai.xi * Each member is aligned to a 8 byte boundary. 29*53ee8cc1Swenshuai.xi */ 30*53ee8cc1Swenshuai.xi struct cgroupstats { 31*53ee8cc1Swenshuai.xi __u64 nr_sleeping; /* Number of tasks sleeping */ 32*53ee8cc1Swenshuai.xi __u64 nr_running; /* Number of tasks running */ 33*53ee8cc1Swenshuai.xi __u64 nr_stopped; /* Number of tasks in stopped state */ 34*53ee8cc1Swenshuai.xi __u64 nr_uninterruptible; /* Number of tasks in uninterruptible */ 35*53ee8cc1Swenshuai.xi /* state */ 36*53ee8cc1Swenshuai.xi __u64 nr_io_wait; /* Number of tasks waiting on IO */ 37*53ee8cc1Swenshuai.xi }; 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi /* 40*53ee8cc1Swenshuai.xi * Commands sent from userspace 41*53ee8cc1Swenshuai.xi * Not versioned. New commands should only be inserted at the enum's end 42*53ee8cc1Swenshuai.xi * prior to __CGROUPSTATS_CMD_MAX 43*53ee8cc1Swenshuai.xi */ 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi enum { 46*53ee8cc1Swenshuai.xi CGROUPSTATS_CMD_UNSPEC = __TASKSTATS_CMD_MAX, /* Reserved */ 47*53ee8cc1Swenshuai.xi CGROUPSTATS_CMD_GET, /* user->kernel request/get-response */ 48*53ee8cc1Swenshuai.xi CGROUPSTATS_CMD_NEW, /* kernel->user event */ 49*53ee8cc1Swenshuai.xi __CGROUPSTATS_CMD_MAX, 50*53ee8cc1Swenshuai.xi }; 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi #define CGROUPSTATS_CMD_MAX (__CGROUPSTATS_CMD_MAX - 1) 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi enum { 55*53ee8cc1Swenshuai.xi CGROUPSTATS_TYPE_UNSPEC = 0, /* Reserved */ 56*53ee8cc1Swenshuai.xi CGROUPSTATS_TYPE_CGROUP_STATS, /* contains name + stats */ 57*53ee8cc1Swenshuai.xi __CGROUPSTATS_TYPE_MAX, 58*53ee8cc1Swenshuai.xi }; 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi #define CGROUPSTATS_TYPE_MAX (__CGROUPSTATS_TYPE_MAX - 1) 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi enum { 63*53ee8cc1Swenshuai.xi CGROUPSTATS_CMD_ATTR_UNSPEC = 0, 64*53ee8cc1Swenshuai.xi CGROUPSTATS_CMD_ATTR_FD, 65*53ee8cc1Swenshuai.xi __CGROUPSTATS_CMD_ATTR_MAX, 66*53ee8cc1Swenshuai.xi }; 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xi #define CGROUPSTATS_CMD_ATTR_MAX (__CGROUPSTATS_CMD_ATTR_MAX - 1) 69*53ee8cc1Swenshuai.xi 70*53ee8cc1Swenshuai.xi #endif /* _LINUX_CGROUPSTATS_H */ 71