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