xref: /linux/include/linux/taskstats_kern.h (revision c757249af152c59fd74b85e52e8c090acb33d9c0)
1*c757249aSShailabh Nagar /* taskstats_kern.h - kernel header for per-task statistics interface
2*c757249aSShailabh Nagar  *
3*c757249aSShailabh Nagar  * Copyright (C) Shailabh Nagar, IBM Corp. 2006
4*c757249aSShailabh Nagar  *           (C) Balbir Singh,   IBM Corp. 2006
5*c757249aSShailabh Nagar  */
6*c757249aSShailabh Nagar 
7*c757249aSShailabh Nagar #ifndef _LINUX_TASKSTATS_KERN_H
8*c757249aSShailabh Nagar #define _LINUX_TASKSTATS_KERN_H
9*c757249aSShailabh Nagar 
10*c757249aSShailabh Nagar #include <linux/taskstats.h>
11*c757249aSShailabh Nagar #include <linux/sched.h>
12*c757249aSShailabh Nagar 
13*c757249aSShailabh Nagar enum {
14*c757249aSShailabh Nagar 	TASKSTATS_MSG_UNICAST,		/* send data only to requester */
15*c757249aSShailabh Nagar 	TASKSTATS_MSG_MULTICAST,	/* send data to a group */
16*c757249aSShailabh Nagar };
17*c757249aSShailabh Nagar 
18*c757249aSShailabh Nagar #ifdef CONFIG_TASKSTATS
19*c757249aSShailabh Nagar extern kmem_cache_t *taskstats_cache;
20*c757249aSShailabh Nagar 
21*c757249aSShailabh Nagar static inline void taskstats_exit_alloc(struct taskstats **ptidstats,
22*c757249aSShailabh Nagar 					struct taskstats **ptgidstats)
23*c757249aSShailabh Nagar {
24*c757249aSShailabh Nagar 	*ptidstats = kmem_cache_zalloc(taskstats_cache, SLAB_KERNEL);
25*c757249aSShailabh Nagar 	*ptgidstats = kmem_cache_zalloc(taskstats_cache, SLAB_KERNEL);
26*c757249aSShailabh Nagar }
27*c757249aSShailabh Nagar 
28*c757249aSShailabh Nagar static inline void taskstats_exit_free(struct taskstats *tidstats,
29*c757249aSShailabh Nagar 					struct taskstats *tgidstats)
30*c757249aSShailabh Nagar {
31*c757249aSShailabh Nagar 	if (tidstats)
32*c757249aSShailabh Nagar 		kmem_cache_free(taskstats_cache, tidstats);
33*c757249aSShailabh Nagar 	if (tgidstats)
34*c757249aSShailabh Nagar 		kmem_cache_free(taskstats_cache, tgidstats);
35*c757249aSShailabh Nagar }
36*c757249aSShailabh Nagar 
37*c757249aSShailabh Nagar extern void taskstats_exit_send(struct task_struct *, struct taskstats *,
38*c757249aSShailabh Nagar 				struct taskstats *);
39*c757249aSShailabh Nagar extern void taskstats_init_early(void);
40*c757249aSShailabh Nagar 
41*c757249aSShailabh Nagar #else
42*c757249aSShailabh Nagar static inline void taskstats_exit_alloc(struct taskstats **ptidstats,
43*c757249aSShailabh Nagar 					struct taskstats **ptgidstats)
44*c757249aSShailabh Nagar {}
45*c757249aSShailabh Nagar static inline void taskstats_exit_free(struct taskstats *ptidstats,
46*c757249aSShailabh Nagar 					struct taskstats *ptgidstats)
47*c757249aSShailabh Nagar {}
48*c757249aSShailabh Nagar static inline void taskstats_exit_send(struct task_struct *tsk,
49*c757249aSShailabh Nagar 					struct taskstats *tidstats,
50*c757249aSShailabh Nagar 					struct taskstats *tgidstats)
51*c757249aSShailabh Nagar {}
52*c757249aSShailabh Nagar static inline void taskstats_init_early(void)
53*c757249aSShailabh Nagar {}
54*c757249aSShailabh Nagar #endif /* CONFIG_TASKSTATS */
55*c757249aSShailabh Nagar 
56*c757249aSShailabh Nagar #endif
57*c757249aSShailabh Nagar 
58